正文字数:6146 阅读时长:9 分钟
视频编解码技术一直是视频内容应用中的核心业务,基于各个平台和各个渠道的视频内容采集与分发都涉及到视频编解码技术的介入。在RTC业务场景下,如何构建高效快速的视频编解码引擎,如何对现有的编解码技术进行优化改进,如何在公有协议基础上实现私有协议,如何重写编解码框架等问题都值得关注。我们邀请到了网易云信 音视频算法工程师 何鸣 为大家详细介绍网易云信RTC业务场景下的编解码技术优化与实践,以及未来的发展方向。
文 / 何鸣
整理 / LiveVideoStack
大家好,我是来自网易云信的何鸣,目前主要负责网易云信G2音视频框架中视频编解码引擎的开发与优化工作。
本次分享的内容主要有以下三个方面:
1
视频编解码器技术背景
通过实时通讯,或者是高清直播的方式为用户提供视频内容,视频内容每天都在网络中产生并收发,这些视频内容都是被压缩过的,这个压缩过程就是要实行编解码技术,现在除了少部分的电影拍摄场景可能会用到原始视频流,大部分视频都是经过编解码压缩过后的视频内容。所以,视频编解码技术在视频内容的产生与分发过程中至关重要。
接下来我们讨论下来,视频编解码技术究竟运用在什么地方呢?像一个视频序列当中,常见的YUV视频中,一个像素点就需要1.5个字节的数据来存储像素点。如果涉及到360P、720P、4K这样的视频的话,数据量是呈指数级的上升,到4K时每秒需要传输数据达到了759MB。与之对比,5G的传输带宽1Gb/s换算成字节表示的话,就是125MB/s。这样的传输带宽是远远不能满足于我们对高清视频内容的要求,所以就需要视频编码技术对视频进行压缩处理。
我们现在常用的视频编码技术是预测器+量化器+熵编码器的一个基本框架,其中量化器的话需要进行反量化操作,下方我们会详细介绍这三部分各起到什么作用。基于这三部分框架,我们将视频重新划分为I帧、B帧和P帧,具体在哪些内容会遇到这些帧,接下来也会详细介绍。
1.1 预测器
首先我们说预测器,预测器我们划分为帧内预测和帧间预测,在帧内预测中,以HEVC角度预测为例,最新的技术发展VVC技术也只是将角度的方向增加了更多,预测的内容更加丰富,但总的来说还是角度预测、DC预测、平面预测。
帧内预测指预测内容全部来自本帧内,它的像素点是由它的当前块重建出来的,所以预测方式所需要的参考方式全部来自当前帧,故称作帧内预测。
与之对应的帧间预测,就需要构建参考帧信息,通过参考帧中寻找到的块来补偿当前块,当前块与参考块之间的运动关系,我们称为运动矢量。在传输时需要将运动矢量传输到解码端,通过解码出运动矢量,在解码帧中重新构建当前块。这样仅仅通过传输一些运动矢量信息,就可以快速构建当前块,所以帧间预测是提高压缩效率的主要办法。现在根据新技术,比如Affine技术可以对一些块的平移、旋转、缩放进行预测。或者我们直接使用缩放对块进行预测,最新的有些论文中也提到对预测方式的改进。此外,构建多参考帧可以在其中选择多