Android 如何在流媒体中录制HLS?

Android 如何在流媒体中录制HLS?,android,video-streaming,android-mediaplayer,video-capture,video-recording,Android,Video Streaming,Android Mediaplayer,Video Capture,Video Recording,我已经创建了android应用程序,其中有m3u8流媒体链接。现在我想让用户在任何阶段录制视频 视频播放,也可以停在我想停的地方。但我在谷歌上搜索了一下,没有关于堆栈溢出和其他android帮助的解决方案 地点。我是这个部门的新手,请尽快帮助我 可能的现在我被困在这一部分。我得到一个链接,但没有帮助 我制作了一个定制的mediaplayer,它正在跟进,我只给了该媒体播放器的m3u8链接,它使用android的默认媒体播放器播放 <FrameLayout an

我已经创建了android应用程序,其中有
m3u8
流媒体链接。现在我想让用户在任何阶段录制视频 视频播放,也可以停在我想停的地方。但我在谷歌上搜索了一下,没有关于堆栈溢出和其他android帮助的解决方案 地点。我是这个部门的新手,请尽快帮助我 可能的现在我被困在这一部分。我得到一个链接,但没有帮助

我制作了一个定制的mediaplayer,它正在跟进,我只给了该媒体播放器的
m3u8
链接,它使用android的默认媒体播放器播放

  <FrameLayout
            android:id="@+id/videoSurfaceContainer"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/videoplayer_title">

            <SurfaceView
                android:id="@+id/videoSurface"
                android:background="@android:color/transparent"
                android:layout_width="match_parent"
                android:layout_below="@+id/videoplayer_title"
                android:layout_height="200dp"
                />

            <ImageView
                android:id="@+id/videoplayer_icon"
                android:layout_width="match_parent"
                android:layout_height="200dp"
                android:background="@android:color/transparent"
                android:visibility="gone"
                />

            <ProgressBar
                android:id="@+id/progressbar"
                android:layout_width="100dp"
                android:layout_height="100dp"
                android:layout_gravity="center"
                android:layout_below="@+id/videoplayer_title"
                android:background="@android:color/transparent"
                android:visibility="gone"
                />
            <LinearLayout

                android:id="@+id/ll_controls_layout"
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:background="@drawable/media_controls_bg"
                android:orientation="vertical"
                android:layout_gravity="bottom"
                android:visibility="visible">

                <RelativeLayout

                    android:layout_width="match_parent"
                    android:layout_height="40dp"


                    >

                    <ImageButton
                        android:id="@+id/pause"
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:layout_centerVertical="true"
                        android:layout_marginLeft="5dp"
                        android:background="@android:color/transparent"
                        android:src="@drawable/pause_btn" />


                    <SeekBar
                        android:id="@+id/mediacontroller_progress"
                        android:layout_width="match_parent"
                        android:minHeight="6dip"
                        android:layout_toRightOf="@+id/pause"
                        android:maxHeight="6dip"
                        android:thumb="@drawable/abc_switch_thumb_material"
                        android:layout_height="wrap_content"
                        android:layout_centerVertical="true"
                        android:progressDrawable="@drawable/styled_progress"
                        android:paddingLeft="15dp"
                        android:paddingRight="15dp"
                        android:layout_toLeftOf="@+id/time_current"
                        android:layout_marginLeft="3dp"
                        android:indeterminate="false"
                        android:visibility="visible"/>

                    <TextView
                        android:id="@+id/time_current"
                        android:layout_width="40dp"
                        android:layout_height="wrap_content"
                        android:layout_centerHorizontal="true"
                        android:textColor="@android:color/white"
                        android:layout_centerVertical="true"
                        android:layout_toLeftOf="@+id/time"
                        android:paddingRight="3dp"
                        android:gravity="right"
                        android:textSize="10dp"
                        android:visibility="gone" />

                    <TextView
                        android:id="@+id/time"
                        android:layout_width="40dp"
                        android:layout_height="wrap_content"
                        android:textColor="@android:color/white"
                        android:gravity="left"
                        android:layout_toLeftOf="@+id/recording_btn"
                        android:layout_centerVertical="true"
                        android:textSize="10dp"
                        android:visibility="gone" />

                    <ImageButton
                        android:id="@+id/recording_btn"
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:layout_centerVertical="true"
                        android:background="@android:color/transparent"
                        android:layout_toLeftOf="@+id/fullscreen"
                        android:src="@drawable/startrecording_btn" />

                    <ImageButton
                        android:id="@+id/fullscreen"
                        android:layout_width="35dp"
                        android:layout_height="35dp"
                        android:layout_centerVertical="true"
                        android:layout_marginLeft="4dp"
                        android:layout_marginRight="5dp"
                        android:layout_alignParentRight="true"
                        android:background="@android:color/transparent"
                        android:src="@drawable/ic_media_fullscreen_stretch" />

                </RelativeLayout>
            </LinearLayout>
        </FrameLayout>


根据您实际播放视频的方式,您需要访问负责视频和音频的任何曲目渲染器,然后将这些信息写入磁盘,最后将它们合并到一个文件中。如果您已经构建了一个m3u8播放器,那么您已经有了这些信息。如果没有,首先让它播放,这样你就可以看到数据进来时的样子。我编辑了上面的代码,并向你提供了更多信息。我只是将m3u8链接传递给媒体播放器,它使用默认的android媒体播放器播放视频,只播放播放视频播放器的代码。setDataSource(这个,Uri.parse(livechannelurl));player.setOnPreparedListener(myContext);在视频播放过程中的任何阶段都可以使用这种方法录制视频吗?不幸的是,不可以,您需要了解实际渲染的内容,因为在这一点上,您可以访问缓冲数据。我不知道你是否可以访问默认播放器上的渲染器。有人建议你把它作为一个开始,但这是我所不知道的。谢谢你的回复,但它不起作用。我还没有时间深入研究这个问题,我也想知道答案。我会看看我是否能在周末完成,也许可以尝试一些事情。