问题背景:
无论是查线上一些花屏、卡顿,马赛克问题,还是进行码率自适应的功能开发,抑或进行客户端播放器的JitterBuffer的优化,都需要编码器发送端的配合。我们需要在编码速度、网络带宽,视频质量方面做一个权衡,进而选择更符合场景的码控调整方案,同时目前比较热门的ROI编码,编码场景的自适应学习都跟这部分内容有关系。本文介绍下常见视频编码器码率控制方案,具体的编码器可能在实现和使用上有所差异,具体在调用API和阅读源码时需要进行进一步分析和了解。
背景知识:
视频编码过程中,有一个重要步骤:量化,量化属于有损压缩过程。量化基本决定了视频的码率,视频的码率又从一定程度上决定了视频的质量。量化值QP越大则量化的粒度越高,压缩率越大,码率更小,视频质量越低,呈现出来就是马赛克比较大,画面不细腻,画面比较模糊。反之,压缩率低,码率大,质量高,画面细腻,细节丰富。
所以选择一个适合场景的视频码控方案很重要,调整视频输出码率其实就是在视频编码速度、网络带宽以及视频质量之间做一个平衡。有时网络带宽很受限,就要优先考虑码率大小优先的码控方案,有些对视频质量要求很高,要高清视频,那就要选择质量优先的模型。
整体来说选择视频编码码率控制方案,可以通过下面五个因素权衡得出:
1. 视觉质量稳定性,利于视觉主观质量,比如清晰度,流畅度,细节等,这点和人眼的视觉原理有关,选择人眼主动质量感受最高的模型;
2. 即时输出码率,相当于每帧编码输出比特数,要考虑网络带宽因素,随着移动互联网发展,也需要考虑wifi和无线网这块的影响;
3. 输出视频文件大小可控,利于传输,存储,要看系统的空间大小;
4. 编码速度,不同的码控模型也影响了编码速度,对于低延时、实时场景要考虑,因为不同的码控方案,计算的复杂度不同,带来的编码延时也有影响;
5. 对于移动设备还需要不同编码方式耗电量要求,因为不同模型会影响编码和解码复杂度,进而在移动设备编码和播放需要的耗电量不同;
http://weixin.qq.com/r/5TpUTLXEZugZrfEv92-3 (二维码自动识别)</