本系列文章分为三个部分,首先对HEVC标准做一个介绍,然后回顾一下H.264中的码率控制方法,分析为什么不能直接沿用旧的方法,最后具体分析HEVC的码率控制方法和相应代码。
HEVC标准介绍
首先我们需要明白的是,其实每一代视频编码标准的更新都是为了实现两个大目标:更好的支持高分辨视频;以更高的压缩率达到同等的主观质量。除此之外,还有提高网络适配性(比如在H.264中定义的网络抽象层概念)、抗出错性能(H.264中的数据分割、灵活宏块顺序)等等的小目标。当然,提升这些性能要付出的代价往往是复杂度的大幅增加。在这几个问题上,HEVC也不例外。当年JCT-VC确定的HEVC的核心目标就是在H.264 High Profile的基础上将压缩效率提高一倍。分辨率方面HEVC也可以支持到8K。
从编码框架上来说,HEVC并没有革命性的改变,依旧采用了混合编码框架,也能看到在H.264中就有的变换、量化、熵编码、帧内预测、帧间预测、环路滤波等模块。但是HEVC在这个框架中几乎所有模块都引入了新的编码技术。一路看过各种编码标准之后就会发现,随着视频编码技术的不断成熟,各种新推出的编码标准基本都是这个模式:在保持原有框架基本不变的情况下采用更多的新技术。