Android直播播放器+弹幕使用总结
https://github.com/Hemumu/HLiveDemo/tree/master
http://www.10tiao.com/html/227/201702/2650238607/1.html
现在有很多的开源播放器,首选肯定是B站的
ijkplayer
https://github.com/Bilibili/ijkplayer
本文所选的是基于 ijkplayer 封装的开源播放器
JieCaoVideoPlayer
https://github.com/lipangit/JieCaoVideoPlayer
弹幕使用的也是B站的开源项目
JieCaoVideoPlayer 默认提供了基本的UI界面,但是肯定满足不了每个人的界面要求,所以我们就需要在 JieCaoVideoPlayer 上简单的封装一下。首先新建一个 HVideoPlayer类 继承 JCVideoPlayerStandard:
JCVideoPlayerStandard 对一些基本的界面操作以及页面逻辑做了封装,我们只需要继承这个类,然后自定义自己的布局。如果有你不需要的控件就隐藏,删除可能会报错。重写 init方法 初始化一些你自定义的控件和按钮的点击事件。
JieCaoVideoPlayer 是通过 setUp方法 来初始化播放器参数,所以我们也需要来重写这个方法来初始化我们自己的一些参数
需要注意一点的就是播放器器全屏,这里修改了 FULLSCREEN_ORIENTATION 参数为 ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE 使播放器点击全屏后强制全屏并且是横屏的,默认情况点击全屏后是竖屏的,并且根据重力感应调整屏幕方向。需要注意的是使用播放器的Activity需要设置为竖屏
android:screenOrientation="portrait"
否则调用横屏后整个 Activity 会整个横屏。
需要注意播放器横屏后会创建一个新的播放器实例和当前的播放器不是同一个实例,也就是说点击全屏后会重新初始化当前类,并重新调用 setUp方法。那怎么拿到前面小屏模式下一些必须的参数呢?查看下 JCVideoPlayer 全屏的源码
可以看到在全屏的时候重新创建了 JCVideoPlayer 的实例,并且调用了 setUp方法 传入了 url 以及全屏,后面这个 objects 是干嘛的呢?查看源码:
默认的 objects 的第一个参数是标题,后面就可以传递自己的一些字段,比如我们在全屏实例中需要回调一些方法,就要将这些接口传到全屏播放器示例中,否则在全屏中使用这些字段会报空指针。
在 setUp 中如果当前是全屏那么我们需要去加载弹幕,currentScreen 字段是当前的状态,如果是全屏就显示弹幕否则就隐藏弹幕相关的东西。关于弹幕库的使用可以参考郭神的文章: