jiecaovideo开源项目笔记-JCVideoPlayer分析-播放逻辑

看看点击播放按钮的处理,找到onClick方法中的i == R.id.start

jiecaovideo开源项目笔记-JCVideoPlayer分析-播放逻辑_第1张图片
其实注释算很明白的了,分别是对正常播放和播放错误、播放中、暂停、以及播放完成。对start按钮的处理
这里面重要的就是prepareVideo方法

下面看prepareVideo方法
jiecaovideo开源项目笔记-JCVideoPlayer分析-播放逻辑_第2张图片
JCVideoPlayerManager.listener()是用于JCMediaManager中播放各种事件的回调。
addTextureView方法写的很漂亮,加载TextureView后会重新设置视频输出为最新的TextureView。
这样无缝全屏和全屏无缝切换小屏就简单了。只需要添加对应的画布,以及旋转控件就可以了

申请音频处理也是算比较常规,比较人性化的代码,具体自己可以看下,不懂百度下就明白

下面介绍播放核心JCMediaManager

里面的单例就不多说。使用了HandlerThread实现一个子线程和Looper进行ijk操作
jiecaovideo开源项目笔记-JCVideoPlayer分析-播放逻辑_第3张图片
HANDLER_PREPARE是播放操作,使用也跟系统的相似
HANDLER_SETDISPLAY是对播放输出的设置,其实无缝跳转全屏技术就是ijk加载逻辑不变,只是变了视频输出的Surface
HANDLER_RELEASE释放


你可能感兴趣的:(jiecaovideo开源项目笔记-JCVideoPlayer分析-播放逻辑)