知识屋:更实用的电脑技术知识网站
所在位置:首页 > 电脑知识 > IT快讯

youtube每日百万视频如何高效转码 youtube视频繁多如何优化转码

发布时间:2016-05-16 10:14:31作者:知识屋

  youtube每日百万视频如何高效转码 youtube视频繁多如何优化转码。作为世界上最大的视频平台,YouTube每天都会新增来自世界各地的数百万个视频。这些视频具有非常大的多样性,对YouTube来说,要将这些不同的视频和相关的音频都转换成人们可以接受的播放质量是一个相当大的挑战。此外,尽管谷歌的计算和存储资源非常庞大,但也总归是有限的,要以上传视频的原格式存储网络视频无疑会带来显著的额外成本。


  youtube每日百万视频如何高效转码 youtube视频繁多如何优化转码


  为了提高网络视频的播放质量,关键是要降低视频和音频的压缩损失。增加比特率是一种方法,但同时那也需要更强大的网络连接和更高的带宽。而YouTube则选择了另一种更聪明的做法:通过优化视频处理的参数使其在满足最低视频质量标准的同时不会增加额外的比特率和计算周期。


  要在视频压缩和转码时满足视频质量、比特率和计算周期的要求,一般的做法是寻找对大量视频(而非所有视频)平均最优的转码参数组合。这种最优组合可以通过尝试每种可能来寻找,直到找到最让人满意的结果。而最近,有一些公司甚至尝试在每一段视频上都使用这种“穷举搜索”的方式来调整参数。


  YouTube通过在这一技术的基础上引入机器学习而开发出了一种新的自动调整参数的方法。目前,这一技术已经在提升YouTube和Google Play视频影片的质量上得到了应用。


  并行处理的优劣


  据YouTube的博客介绍,每分钟都有400小时的视频被上传到YouTube上。而其中每个视频都需要被不同的转码器转码成几种不同的格式,以便可以在不同的设备上进行播放。为了提高转码速度,让用户更快看到视频,YouTube将上传的每一个文件都切割成被称为“数据块(chunk)”的片段,然后再将其每一块都独立地在谷歌云计算基础设施的CPU中同时进行并行处理。在这一过程中所涉及到分块和重组是YouTube的视频转码中的一大难题。而除了重组转码后数据块的机制,保持每一段转码后的视频的质量也是一个挑战。这是因为为了尽可能快地处理,这些数据块之间不会有重叠,而且它们会被切割得非常小——每段只有几秒钟。所以并行处理有提升速度和降低延迟的优势,但它也有劣势:缺失了前后临近视频块的信息,也因此难以保证每个视频块在被处理后都具有看上去相同的质量。小数据块不会给编码器太多时间使其进入一个稳定的状态,所以每一个编码器在处理每一个数据块上都略有不同。


  智能并行处理


  为了得到稳定的质量,可以在编码器之间沟通同一视频中不同分块的信息,这样每一个编码器都可以根据其处理块的前后块进行调整。但这样做会导致进程间通信的增加,从而提高整个系统的复杂度,并在每一个数据块的处理中都要求额外的迭代。


  但“其实,事实上我们在工程方面都很固执,我们想知道我们能将‘不要让数据块彼此通信’的想法推进多远。”YouTube博客说。


  下面的曲线图展示了来自一段使用H.264作为编解码器的720p视频的两个数据块的峰值信噪比(PSNR,单位:dB每帧)。PSNR值越高,意味着图片(视频每帧)的质量越高;反之则图片质量越低。可以看到每段视频开始时的质量非常不同于结束时的质量。这不仅在平均质量上没有达到我们的要求,这样剧烈的质量变化也会导致恼人的搏动伪影(pulsing artifact)。


  因为数据块很小,还要让每一块的行为都与其前后块的行为类似;所以研究人员需要在连续数据块的编码处理上保持一个大致相同的结果。尽管这在大部分情况下适用,但却不适用于本例。一个直接的解决办法是改变数据块的边界使其与高活动的视频行为保持一致,例如快速运动或场景剪切。但这样做就能让保证数据块的相对质量并使编码后的结果更均匀吗。事实证明这确实能有所改善,但并不能达到我们期望的程度,不稳定性仍经常存在。


  关键是要让编码器多次处理每一个数据块,并从每一次迭代中学习怎么调整其参数以为整个数据块中将发生的事做好准备,而非仅其中的一小部分。这将导致每一个数据块的开端和结束拥有相似的质量,而且因为数据块很短,所以总体上不同数据块之间的差异也减少了。但即便如此,要实现这样的目标,就需要很多次的重复迭代。研究人员观察到,重复迭代的次数会受到编码器在第一次迭代上的量化相关参数(CRF)的很大影响。更妙的是,往往存在一个“最好的”CRF可以在保持期望质量的同时只用一次迭代就能达到目标比特率。但这个“最好的”却会随着每段视频的变化而变化——这就是棘手的地方。所以只要能找到每段视频的最好配置,就能得到一个生成期望编码视频的简单方法。


  YouTube的研究人员在同一段1080p视频片段上使用他们的编码器实验不同的CRF所得到的比特率结果(编码后的视频质量恒定)。可以看出,CRF和比特率之间存在一个明显的函数关系。事实上这是对使用三个参数的指数拟合的非常好的建模,而且该图也表明建模线(蓝线)与实际观察到的数据(点)拟合得非常好。如果我们知道该线的参数,然后我们想得到一个我们的视频片段的5 Mbps版本,那么我们所需的CRF大约为20.


  大脑


  那么接下来需要的就是一种能够通过对视频片段的低复杂度的测量预测三个曲线拟合参数的方式。这是机器学习、统计学和信号处理中的经典问题。YouTube研究人员已将其相关的数学细节发表在他们的论文中(见文末1,其中还包括研究人员想法的演化历程)。而简单总结来说:通过已知的关于输入视频片段的信息预测三个参数,并从中读出我们所需的CRF。其中的预测阶段就是“谷歌大脑(Google Brain)”的用武之地。


  前面提到的“关于输入视频片段的信息”被称为视频的“特征(features)”。在YouTube研究人员的定义中,这些特征(包括输入比特率、输入文件中的运动矢量位、视频分辨率和帧速率)构成了一个特征向量。对这些特征的测量也包括来自输入视频片段的非常快速的低质量转码(能提供更丰富的信息)。但是,每个视频片段的特征和曲线参数之间的确切关系实际上非常复杂,不是一个简单的方程就能表示的。所以聪明的研究人员并不打算自己来发现这些特征,他们转而寻求谷歌大脑的机器学习的帮助。研究人员首先选择了10000段视频,并对其中每一段视频的每一个质量设置都进行了严格的测试,并测量了每一种设置的结果比特率。然后研究人员得到了10000条曲线,通过测量这些曲线研究人员又得到了4×10000个参数。


  有了这些参数,就可以从视频片段中提取特征了。通过这些训练数据和特征集合,YouTube的机器学习系统学到了一个可以预测特征的参数的“大脑(Brain)”配置。“实际上我们在使用大脑的同时也使用一种简单的‘回归(regression)’技术。这两者都优于我们现有的策略。尽管训练大脑的过程需要相对较多的计算,但得到的系统实际上相当简单且只需要在我们的特征上的一点操作。那意味着生产过程中的计算负载很小。”


(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜