0.小结
之前因为项目需要,需要做软硬解自适应,看了很多项目,最后自己总结了下,终于做好了软硬解自适应,下面
下面我将这些思路分享出来。
1.简介
考虑到后面我们需要加大播放性能,比如播放全帧率1080P或者全帧率1080P以前的视频,这个时候,我
们就要采取硬解码的方式。但是如果要真正做的好,就要做到内部软硬解自适应,参考项目比较多,比如
ijkplayer和ios 项目iOS-H264_FFMpeg-VideoToolbox_VideoPlayer.
2.为什么我们需要去做软硬解自适应?
原因有很多,比如第三方对接,如果我们内部不做到软硬解自适应,那么会出现很多问题,比如底层开启
硬解码不成功,那么就不出图像了,又比如设备出的码流是H265,那么有些早期的手机就不能播放,这
个时候需要自动切换到软解码。
3.怎么样去做ios软硬解自适应?
参考了ios的项目ijkplayer,iOS-H264_FFMpeg-VideoToolbox_VideoPlayer,Kxmovie项目。发现
各有不同指出,其中ijkplayer做的最好。
解说ijkplayer
|----控件IJKGLVIEW基于UIView
|----控件创建的时候不会去创建opengl项目
|----开启播放的时候,如果上层配置硬解码,那么会去检测是否可以硬解码
|----如果发现可以,那么使用yuv420sp_vbt的opengl项目绘制
|----如果发现不能硬解码,那么自动切换软解码,绘制的时候使用yuv420p的opengl项目绘制
|----评价:性能强悍,软硬解效率高,自适应好
解说iOS-H264_FFMpeg-VideoToolbox_VideoPlayer
|----控件AAPLEAGLLayer基于CAEAGLLayer
|----这个控件其实不算控件,可以呗UIV