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 初始化数据方法

PLVLCLiveMediaLayoutinit方法是对外API,需要外部传入IPLVLiveRoomDataManager后进行初始化。

这里的PLVLivePlayerPresenter是使用mvp模式封装的播放器,用presenterviewmode隔离开来,一切业务逻辑都是通过presenter来进行操作,也就是说presenter是视图的数据的桥梁,视图和数据相隔两端。

4.1.3 设置横屏控制栏方法

PLVLCLiveMediaLayoutsetLandscapeControllerView方法是对外API,需要外部传入IPLVLiveLandscapePlayerController进行配置。PLVLCLiveMediaLayout内部已经包含了竖屏控制栏,由于横屏控制栏的层级在云课堂场景是需要覆盖在悬浮窗,连麦控制器之上。因此需要在xml布局中,调整横屏控制栏的位置后,再传入到PLVLCLiveMediaLayout中。

4.1.4 开始播放方法

PLVLCLiveMediaLayoutstartPlay方法是对外API,该方法内部会调用PLVLivePlayerPresenterstart方法来进行视频的加载及播放。

PLVLCLiveMediaLayout内部持有PLVLivePlayerPresenter,因此除了内部可以自由调用播放器相关的方法外,也能将其封装成接口提供给外层调用,startPlay方法就是其中一个例子。

4.2 PLVLCPlaybackMediaLayout

云课堂场景下的回放播放器布局,实现IPLVLCMediaLayout接口

该布局包含的元素有:回放播放器、亮度手势布局、音量手势布局、快进/退手势布局,回放控制栏,等在回放播放区域出现的UI。

下面会列举介绍该布局中涉及到的主要方法。

4.2.1 初始化view方法

PLVLCPlaybackMediaLayout继承于FrameLayout,在构造器中对使用initView方法对view进行了初始化处理。

4.2.2 初始化数据方法

PLVLCPlaybackMediaLayoutinit方法是对外API,需要外部传入IPLVLiveRoomDataManager后进行初始化。

4.2.3 设置PPTView方法

PLVLCPlaybackMediaLayoutsetPPTView方法是对外API,云课堂场景下,回放播放器需要关联PPTView,因此需要外部传入IPolyvPPTView进行设置。

4.2.4 开始播放方法

PLVLCPlaybackMediaLayoutstartPlay方法是对外API,该方法内部会调用PLVPlaybackPlayerPresenterstart方法来进行视频的加载及播放。

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?