【经验分享】RTC 技术系列之视频编解码

960 阅读6分钟

要了解什么是视频编解码,首先我们需要了解什么是视频。

视频归根结底是一系列连续的图像帧,当这些图像以一定速率播放时,人眼就会判断其是连续活动的,这样就构成了视频。

那为什么要进行视频编解码呢,因为视频信号数字化后数据量巨大,如果以这样的数据量进行网络传输或者存储时,会占用大量的带宽和存储空间,造成浪费。已当前主流的 1080P 分辨率,一秒 30 帧的视频举例 1080P 图像的高和宽分别为 1080 和 1920,每个像素用三原色 RGB 表示(即每个像素三个字节),因此每帧图像的数据量为 1080 * 1920 * 3 * 8=49766400,每秒 30 帧,则需要乘以 30,49766400 * 30 = 1,492,992,000bps。因此视频编解码技术因此而诞生。

为什么视频可以压缩呢,我们分两个方面看这个问题:

1 在一副图像中,往往有相近的颜色区域,这样就蕴含了大量的冗余信息,可以基于变化编码和量化编码进行冗余信息处理,达到压缩的可能。

2 两幅图像之间,肯定也存在大量相同以及相似的部分,因此产生了运动补偿及运动估计来描述运动矢量来进行图像间冗余信息压缩的可能。

基于图像内预测编码和图像间预测编码原理,诞生了众多的视频编解码。

img

H.26X 系列,从 H.261,H.263,到当前主流的 H.264,及 H.265,当前最新制定标准的 H.266;H.26X 系列的发展宗旨为使用技术优化压缩数据量不能够达到更好的视频质量;像 H.265 旨仅需原先的一半带宽即可播放相同质量的视频。它与 H.264 有着相类似的算法架构,并同时对一些相关技术加以改进而大幅提高视频质量。

Mpeg 系列,Mpeg1,Mpeg2,Mpeg4(Mpeg4 之后与 H.264 融合);

VP 系列,VP8,VP9;VP 系列是 Google 自研并开源的编解码系列,Google 创建 VP 系列编解码的原因也是 H.264 需要专利费用,即如果 WebRTC 使用 H.264,则需要按浏览器支付相关的专利费用(当然由于 H.264 广泛支持性,主要原因还是 cisco 开源了 OpenH64),VP8 即对标 H.264,除了在 WebRTC 领域,其知名度和支持度则相对有限; VP9 则对标 H.265,VP9 的目标之一是在保证相同质量的情况下相对于 VP8 可以减少 50%左右的码率,换句话说,相同的码率,VP9 能比 VP8 画质有非常明显的提高;

国产系列,AVS 标准,AVS1.0,AVS2.0; AVS 是我国具备自主知识产权的第二代信源编码标准。AVS2.0,属于与 H.265 和 VP9 同级的新一代标准;虽然 AVS 的使用和知名度貌似不高,但说明我国已经注意到这个领域并发力;

SVAC 标准,我国一个应用于视频监控领域的编解码,特点在于加密认证高安全:规定了加密和认证接口及数据格式,保证数据的安全性、完整性、非否认性;感兴趣区域(ROI)编码:图像分为若干个感兴趣区域和一个背景区域,在重点监控区域保证实时视频信息,帧率较高,节省非感兴趣区域的开销; 视频信息嵌入,可将声音识别特征参数、特殊事件、时间等信息都可嵌入编码里,在不解开视频的前提下,可针对性的提取、快速检索、分类查询;可伸缩性视频解码(SVC):对视频数据分层编码,满足不同传输网络宽带和数据存储环境的需求,普通编码程序传输有主码流、子码流,占用带宽较大,SVAC 传输只有一类码流,对码流分层就可获得不同分辨率的图片信息。

WebRTC 最初由 Google 提出,主要是基于浏览器的 RTC 通讯,故此叫做 WebRTC;初期几大浏览器在 WebRTC 及其视频编解码支持的力度上也是不一的,像 Mozilla 阵营的 Chrome,FireFox,Opera 初期也不一样,Chrome 初期只支持 VP 系列,原因上面介绍过,后续逐渐延伸到 H.264,由于原有的 RTC 通讯领域大都使用 H.264 编解码,因此 H.264 的支持对于跨领域 RTC 互通提供了很大便利,我觉得也一定程度上加速了 WebRTC 的发展,比如浏览器和手机同时加入到视频会议;或者浏览器跟当前的 SIP 终端点点通话,由于 H.264 的支持,大大减少了转码的要求,做视频的转码是非常消耗性能的,或者使用专用硬件实现。

img

当然后续越来越多厂家加入了 WebRTC 领域,像 Agora 声网的 RTC 系统,已经超过了 WebRTC,像他的各种硬件芯片平台的 SDK 适配,SD-RTN 系统(优先路径选择确保高的传输质量,毕竟通讯不是纯终端侧的功能,网络对通讯质量,视频或者音频的影响也是 juda),优异的弱网对抗算法,可以抵御 70%的视频丢包确保通话流畅。

当前随着物联网的发展,除了人们的通话通讯,音视频会议之外,RTC 越来越广泛的应用各个领域;像安防监控,智能硬件终端,视频处理所处的硬件设备越来越小型甚至微型化,原有的基于软件进行编解码,无论从内存,CPU,性能等资源占用方面,都显示出很大劣势;众多厂家也意识到这个情况,因此越来越多的专业芯片干专业事情的趋势越发明显。像监控领域,华为海思 ARM+专业视频处理单元,占据了国内视频 70%以上的市场;NVIDIA 推出了 Jeston 系列芯片,应对边缘计算场景,ARM+GPU 的处理方式更通用,同时由于 ARM 的低功耗,可以使得边缘侧设备具备视频处理,机器视觉处理,AI 分析能力,大大丰富了智能物联网的应用。

由于这两年的疫情,在线教育,直播的发展,Web 实时通讯带来了非常大的发展机会,其商业化成功也为技术发展持续注入了活力;伴随着 5G 的火热,VR/AR、自动驾驶等新应用场景的出现,必将为 WebRTC 技术带来新的动力,催动着基于互联网的实时音视频通信技术的发展。