【网络通信 -- WebRTC】WebRTC 服务质量 (QoS) -- SVC
【1】概念简介
SVC (Scalable Video Coding,可适性视频编码或可分级视频编码) 是传统 H.264/MPEG-4 AVC 编码的延伸,可提升更大的编码弹性,并具有时间可适性 (Temporal Scalability)、空间可适性 (Spatial Scalability) 及质量可适性 (SNR/Quality/Fidelity Scalability) 三大特性,使视频传输更能适应异质的网络带宽;
【2】时间可适性 (Temporal Scalability)
可以从码流中提出具有不同帧频的码流,由于一般视频压缩都会利用运动补偿的手段,记录位移向量 (motion vector),因此在某些系统的应用上,可以跳过某几帧,使用其邻近帧的位移向量内插出被跳过的帧;
为了更直观描述算法实现,图示中的图片视觉上分离三层,每一层都需要依赖较低层才能被解码,但不需要任何较高层,从而允许从顶层开始移除图片,而不影响剩余图片的可解码性;
【3】空间可分级 (Spatial Scalability)
可以从码流中提出具有不同图像尺寸的码流,图形 (或视频压缩中的一帧) 在压缩编码时即保存了多重大小 (或分辨率) 的结果,使解码端得以视需求解码回所需大小 (或分辨率) 的图片;通常较小的图片便带有大图片一部分的特性,大图的存储上不需要重复记录这些重复的部分;
【4】质量可分级 (Quality Scalability)
可以从码流中提出具有不同图像质量的码流,在压缩编码的时保存多重品质 (qualities) 的结果,使得解码端可以视需求解码回所需品质的图片,从而以较低的品质换取解码的效率;通常品质较差的图片仍有一定的代表性,品质较佳的结果在存储上不需要重复记录这些重复的信息;
【5】SVC 与抗网络丢包
以不可缩放的方式进行视频编码传输时,只有第一张图片的 I 帧,可独立编码,无需参考其他任何图片,其他所有的图片 P 帧,都需要参考前面的帧画面进行预测编码,两个 I 帧之间的数据即为一组 GOP,可以看出当一个 GOP 内的一帧丢失,严重时会导致整个 GOP 无法解码;
增加 Temporal Scalability 后,仅需要通过 FEC + NACK 方式保护 T0 层的数据完整性,若其余层的视频帧存在丢失,便可以通过逐级降低帧率的方案(丢弃 Tn - T1 之间的数据),保证视频通话整体的流畅性,并且 Temporal Scalability 可以做到后向兼容性,不需要解码器做特殊处理;
参考致谢
本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。
【2】H.264 SVC