3_2-云课堂场景-播放器
1 功能概述
视频播放是多场景项目中提供的基础功能,云课堂场景会使用到直播播放器和回放播放器。在云课堂场景模块中,对直播播放器整个布局区域的元素封装为PLVLCLiveMediaLayout,对回放播放器整个布局区的元素域封装为PLVLCPlaybackMediaLayout,它们共同实现IPLVLCMediaLayout接口。
2 使用演示
以下实例了如何创建直播播放器布局、回放播放器布局,以及它们的初始化及视频播放,代码如下:
上述方法的具体用例可以在polyv demo项目中的PLVLCCloudClassActivity找到。
3 接口介绍
3.1 IPLVLCMediaLayout
云课堂场景下,针对播放器布局进行封装的接口。定义了:
1、外部直接调用的方法 2、需要外部响应的事件监听器
4 实现介绍
4.1 PLVLCLiveMediaLayout
云课堂场景下的直播播放器布局,实现IPLVLCMediaLayout接口。
该布局包含的元素有:直播播放器、子播放器、横屏聊天室区、弹幕布局、亮度手势布局、音量手势布局、直播控制栏,等在直播播放区域出现的UI。
下面会列举介绍该布局中涉及到的主要方法。
4.1.1 初始化view方法
PLVLCLiveMediaLayout继承于FrameLayout,在构造器中对使用initView方法对view进行了初始化处理。
4.1.2 初始化数据方法
PLVLCLiveMediaLayout的init方法是对外API,需要外部传入IPLVLiveRoomDataManager后进行初始化。
这里的PLVLivePlayerPresenter是使用mvp模式封装的播放器,用presenter将view和mode隔离开来,一切业务逻辑都是通过presenter来进行操作,也就是说presenter是视图的数据的桥梁,视图和数据相隔两端。
4.1.3 设置横屏控制栏方法
PLVLCLiveMediaLayout的setLandscapeControllerView方法是对外API,需要外部传入IPLVLiveLandscapePlayerController进行配置。PLVLCLiveMediaLayout内部已经包含了竖屏控制栏,由于横屏控制栏的层级在云课堂场景是需要覆盖在悬浮窗,连麦控制器之上。因此需要在xml布局中,调整横屏控制栏的位置后,再传入到PLVLCLiveMediaLayout中。
4.1.4 开始播放方法
PLVLCLiveMediaLayout的startPlay方法是对外API,该方法内部会调用PLVLivePlayerPresenter的start方法来进行视频的加载及播放。
PLVLCLiveMediaLayout内部持有PLVLivePlayerPresenter,因此除了内部可以自由调用播放器相关的方法外,也能将其封装成接口提供给外层调用,startPlay方法就是其中一个例子。
4.2 PLVLCPlaybackMediaLayout
云课堂场景下的回放播放器布局,实现IPLVLCMediaLayout接口
该布局包含的元素有:回放播放器、亮度手势布局、音量手势布局、快进/退手势布局,回放控制栏,等在回放播放区域出现的UI。
下面会列举介绍该布局中涉及到的主要方法。
4.2.1 初始化view方法
PLVLCPlaybackMediaLayout继承于FrameLayout,在构造器中对使用initView方法对view进行了初始化处理。
4.2.2 初始化数据方法
PLVLCPlaybackMediaLayout的init方法是对外API,需要外部传入IPLVLiveRoomDataManager后进行初始化。
4.2.3 设置PPTView方法
PLVLCPlaybackMediaLayout的setPPTView方法是对外API,云课堂场景下,回放播放器需要关联PPTView,因此需要外部传入IPolyvPPTView进行设置。
4.2.4 开始播放方法
PLVLCPlaybackMediaLayout的startPlay方法是对外API,该方法内部会调用PLVPlaybackPlayerPresenter的start方法来进行视频的加载及播放。
PLVLCPlaybackMediaLayout内部持有PLVPlaybackPlayerPresenter,因此除了内部可以自由调用播放器相关的方法外,也能将其封装成接口提供给外层调用,startPlay方法就是其中一个例子。
5 子目录介绍
这里的子目录指的云课堂场景播放器模块下的子目录,对应项目中polyvLiveCloudClassScene模块里包名为com.easfun.polyv.livecloudcalss.modules.nedia包下的子包。
5.1 controller目录
该目录主要是放置直播及回放控制栏相关的类。
5.2 danmu目录
该目录主要是放置弹幕相关的类。
5.3 widget目录
该目录主要是放置播放器布局中使用到的view元素。
Last updated
Was this helpful?