目录介绍
- 1.关于此视频封装库介绍
- 1.1 能够满足那些业务需求
- 1.2 对比同类型的库有哪些优势
- 2.关于使用方法说明
- 2.1 关于gradle引用说明
- 2.2 添加布局
- 2.3 最简单的视频播放器参数设定
- 2.4 注意的问题,视频播放优化
- 2.5 关于开源库中的类说明
- 2.6 暴露各种监听事件接口
- 3.关于播放类型说明
- 3.1 普通视频播放
- 3.2 list页面视频播放
- 3.3 小窗口视频播放
- 3.4 类似爱奇艺,优酷会员试看视频播放
- 3.5 设置竖屏全屏或者横屏全屏模式
- 3.6 关于封装库中日志打印
- 4.关于相关方法说明
- 4.1 关于VideoPlayer类[播放器]中方法说明
- 4.2 关于VideoPlayerController类[控制器]中方法说明
- 4.3 关于对象的销毁
- 5.关于封装的思路
- 5.1 参考的案例思路
- 5.2 封装的基本思路
- 5.3 关于窗口切换分析
- 5.4 关于VideoPlayerManager视频播放器管理器分析
- 5.5 关于VideoPlayerController视频控制器分析
- 5.6 关于InterVideoPlayer接口分析
- 6.关于如何自定义你想要的视频播放模式
- 6.1 自定义视频播放器
- 7.关于效果图的展示
- 7.1 效果图如下所示
- 8.关于遇到的问题说明
- 8.1 视频难点
- 8.2 遇到的bug
- 8.3 后期需要实现的功能
- 9.关于版本更新说明
- 9.0.0 v0.0.0 写于2017年7月1日
- 9.0.1 V1.0.0 更新于2017年9月4日
- 9.0.2 V1.0.1 更新于2017年11月18日
- 9.0.3 v1.1.0 更新于2018年1月15日
- 9.0.4 v2.0.0 更新于2018年1月18日
- 9.0.5 v2.4.5 更新于2018年4月21日
- 9.0.6 v2.4.6 更新于2018年8月2日
- 9.0.7 v2.4.8 更新于2018年8月12日
- 9.0.8 v2.4.9 更新于2018年8月16日
- 9.0.9 v2.5.0 更新与2018年8月20日
- 9.1.0 v2.6.0 更新于2018年9月25日
- 10.关于参考文档说明
- 10.1 参考的项目
- 10.2 参考的博客
- 11.关其他说明
- 11.1 目前市场流行的视频框架
- 11.2 如何选择合适的框架
- 11.3 关于我的个人博客和站点
0.备注
- 仿照爱奇艺,优酷播放器写的,十分感谢GitHub上大神前辈们的开源案例和思路。
- 支持插入广告,设置视频观看权限,观看完后登录或者购买会员。我看到在star较多的项目issues中,有些人正好需要这个案例,库集成后直接通过代码调用即可,灵活且拓展性强。
- 由于调到做视频的部门,因此此部分代码会持续更新,也欢迎同行提bug或者问题
- 如果你觉得还可以,给个star吧!我也在持续学习中!!!
- 项目地址:https://github.com/yangchong211/YCVideoPlayer
1.关于此视频封装库介绍
1.1 能够满足那些业务需求
A基础功能
- A.1.1 能够自定义视频加载loading类型,设置视频标题,设置视频底部图片,设置播放时长等基础功能
- A.1.2 可以切换播放器的视频播放状态,播放错误,播放未开始,播放开始,播放准备中,正在播放,暂停播放,正在缓冲等等状态
- A.1.3 可以自由设置播放器的播放模式,比如,正常播放,全屏播放,和小屏幕播放。其中全屏播放支持旋转屏幕。
- A.1.4 可以支持多种视频播放类型,比如,原生封装视频播放器,还有基于ijkPlayer封装的播放器。
- A.1.5 可以设置是否隐藏播放音量,播放进度,播放亮度等,可以通过拖动seekBar改变视频进度。还支持设置n秒后不操作则隐藏头部和顶部布局功能
- A.1.6 可以设置竖屏模式下全屏模式和横屏模式下的全屏模式,方便多种使用场景
- A.1.7 top和bottom面版消失和显示:点击视频画面会显示、隐藏操作面板;显示后不操作会5秒后自动消失【也可以设置】
B高级功能
- B.1.1 支持一遍播放一遍缓冲的功能,其中缓冲包括两部分,第一种是播放过程中缓冲,第二种是暂停过程中缓冲
- B.1.2 基于ijkPlayer的封装播放器,支持多种格式视频播放
- B.1.3 可以设置是否记录播放位置,设置播放速度,设置屏幕比例
- B.1.4 支持滑动改变音量【屏幕右边】,改变屏幕亮度【屏幕左边】,屏幕底测左右滑动调节进度
- B.1.5 支持list页面中视频播放,滚动后暂停播放,播放可以自由设置是否记录状态。并且还支持删除视频播放位置状态。
- B.1.6 切换横竖屏:切换全屏时,隐藏状态栏,显示自定义top(显示电量);竖屏时恢复原有状态
- B.1.7 支持切换视频清晰度模式
- B.1.8 添加锁屏功能,竖屏不提供锁屏按钮,横屏全屏时显示,并且锁屏时java基础小白竖屏,屏蔽手势处理
C拓展功能【这块根据实际情况选择是否需要使用,一般视频付费App会有这个工鞥】
- C1产品需求:类似优酷,爱奇艺视频播放器部分逻辑。比如如果用户没有登录也没有看视频权限,则提示试看视频[自定义布局];如果用户没有登录但是有看视频权限,则正常观看;如果用户登录,但是没有充值会员,部分需要权限视频则进入试看模式,试看结束后弹出充值会员界面;如果用户余额不足,比如余额只有99元,但是视频观看要199元,则又有其他提示。
- C2自身需求:比如封装好了视频播放库,那么点击视频上登录按钮则跳到登录页面;点击充值会员页面也跳到充值页面。这个通过定义接口,可以让使用者通过方法调用,灵活处理点击事件。
- C.1.1 可以设置试看模式,设置试看时长。试看结束后就提示登录或者充值……
- C.1.2 对于设置视频的宽高,建议设置成4:3或者16:9或者常用比例,如果不是常用比例,则可能会有黑边。其中黑边的背景可以设置
- C.1.3 可以设置播放有权限的视频时的各种文字描述,而没有把它写在封装库中,使用者自己设定
- C.1.4 锁定屏幕功能
D待添加功能
- D.1.1 可以支持屏幕截图功能,视频添加水印效果
- D.1.2 支持弹幕功能
- D.1.3 后期待定,视频拖拽
1.2 对比同类型的库有哪些优势
1.2.1目前仅仅查了下GitHub上项目
- 目前GitHub上比较流行的库
- 至于官方库就不说了,jiecao的库是基于ijkplayer视频框架,目前封装库有许多,下面几个只是star比较多,其中jiecao库比较类似。
ijkplayer官方库
https://github.com/Bilibili/ijkplayer
Vitamio官方库
https://github.com/yixia/VitamioBundle
以jiecao为例的封装库
https://github.com/JasonChow1989/JieCaoVideoPlayer-develop 2年前
https://github.com/open-android/JieCaoVideoPlayer 1年前
https://github.com/lipangit/JiaoZiVideoPlayer 4个月前
https://github.com/CarGuo/GSYVideoPlayer
其他库
https://github.com/danylovolokh/VideoPlayerManager
1.2.2 具有的优势
- A.代码布局更加简洁,而且无多余代码
- B.几乎没有多少淡黄色警告,关于注释,通过使用阿里编码插件检测后更加规范,我对代码有洁癖
- C.视频播放器[负责播放],视频控制器[负责视频播放各种点击或者属性设置操作],控制器抽象类[定义属性抽象类,供子类实现],其他可以看代码。结构分层上比较清晰
- D.几乎所有的方法或者重要的成员或者局部变量都有相关的注释,注释的内容非常详细
- E.关于视频属性设置或者按钮点击事件,都可以通过设置相关方法灵活实现。
- 首先这些库封装的思路和代码都不错,我也是借鉴他们的思路,在他们的思路上改进而封装的。
- 相比来说代码结构更加清晰,举几个例子
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/25959.html