编码效率优化――Per-Title Encoding,Dynamic Optimizer及其它
以往我们说起来编码效率优化,都是想得如何去优化编码器里面的算法,但是netflix的一些做法给了我们新的启示,也许不用费劲去研究编码算法,只是改变一下编码器的用法,一样能获得更高的编码效率,节省更多的带宽。 一、Per-Tiitle Encoding 2015年的时候,netflix推出了per titile encoding方案,简单来说就是依据每个视频的特性,比如时间复杂度和空间复杂度,来决定服务端编码的码率级别,不同于以往给所有视频统一码率级别的编码方式,这种方法可以更好的平衡质量和带宽。 很显然,对于小猪佩奇这样的动画片,画面简单,没有复杂的运动,我们可以用很少的码率达到很高的质量,但是对于复仇者联盟这样的电影,打斗场面丰富,就需要相应的稍高的码率了。 netflix没有专门去研究时间复杂度,空间复杂度,码率与主观质量之间的关系,而是采用了一种更加简单粗暴的方法,如下图。将一个片源按照不同分辨率码率组合进行编码,计算psnr值,画出r-d曲线图 图中红色曲线是r-d曲线的凸包,对于每个分辨率的曲线,最接近凸包的点即为编码效率最好的点,这些点就选为最终的分辨率-码率参数。 效果如何呢?参考下图 这是对一个普通电影的优化效果,这部电影的复杂度适中,中间的黄色栏是采用固定码率级别时的情况,右边表格的绿色部分分别展示了使用per title