1、简介
分级编码是一种用来兼容不同的终端设备和链路带宽的技术。它的特点是对码流分层,低层码流可以单独解码,高层码流能增强视频的质量。
H.264 SVC (Scalable Video Coding)是以H.264为基础,在语法和工具集上进行了扩展,支持具有分级特性的码流。H.264SVC是H.264标准的附录G,在2007年10月成为正式标准。
2、H.264 SVC 支持三种分级方法:
(1)时域分级:将帧分为不同的等级,上层的帧只能参考同层或低层的帧。
上图例子示例包含4个嵌套的时域层:T0(基本层),T1,T2和T3。当播放帧率为3.75fps时,只需解码T0层的帧,丢弃所有其他帧;当播放帧率为7.5fps时,解码组成T0和T1层的帧,丢弃T2和T3层的帧;以此类推,解码T0,T1和T2层的帧,码流的播放帧率达到15fps;解码所有帧将恢复30fps的全帧率。
(2)空间分级:低层的帧分辨率比较低,高层的帧分辨率高,可以参考低层帧和同层帧。如下图。
(3)质量分级:低层的帧量化步长比较长,高层的帧采用更小量化步长,对低层帧的错误进行纠正。
以上三种方法可以组合使用。
3、SVC 的优缺点:
优点:
l 根据网络情况,设备能力,解码器可以选择解码不同层级的码流。
l 一次编码,多次解码。无需重复编码或者转码。
l 抗差错。只需要底层码流就可以解码,高层码流错误/丢失不影响视频流畅性。可以对低层码流和高层码流采用不同强度的抗丢包/抗差错手段。算上前向纠错的开销,SVC整体码流可能更低。
l 底层码流兼容h264非SVC解码器。
缺点:
l 对于质量分级和空域分级,同等质量需要大概多10%码率。时域分级的码率有所提高(实际上相当于I,P,B帧的拓展),但是对运动强度比较大的场景,码率有所增加。
l 对于质量分级和空域分级,运算量变大。
l 软硬件编码器比较少。
4、传输
RTP协议支持。见RFC6190。
5、业界应用
SVC在视频会议领域用的公司比较多,比如Vidyo, Polycom,Cisco等。在直播领域的应用还面临解码器兼容性的挑战。
由于应用比较少,相应在市场标准化上难以统一,各家的产品互通性还存在问题[4]。
6、编解码软件
编码器:Openh264: https://www.openh264.org/
思科的开源h264编码器。
商业解码器: 视骏:http://www.strongene.com/cn/svc/decoder/keyFeatures.jsp
开源解码器:Open SVC Decoder: https://sourceforge.net/projects/opensvcdecoder/
法国一个大学做的项目。
标准参考代码(编解码):
关注功能而不是性能。
开源流服务器:
https://sourceforge.net/p/svcstreaming/wiki/Home/
Reference:
百科:
【1】 https://baike.baidu.com/item/H.264%20SVC
【2】https://en.wikipedia.org/wiki/Scalable_Video_Coding
博客:
【3】https://zhuanlan.zhihu.com/p/34321415
【4】https://zhuanlan.zhihu.com/p/30984326
【5】https://xjsxjtu.github.io/2017-06-24/H264-SVC/
【6】https://multimediacommunication.blogspot.com/2009/06/open-source-scalable-video-coding-svc.html
FROM: https://blog.csdn.net/soulmate_scut/article/details/80938932