webrtc QOS方法三(SVC)

SVC是H.264/AVC的可扩展性版本,具备时间、空间和质量可适应性,适应不同网络条件。时间可适性通过跳帧实现不同帧率,空间可适性提供不同分辨率,质量可适性则允许调整视频质量。SVC在监控视频、视频会议和抗网络丢包场景中有广泛应用。编码方面,OpenH264支持SVC编码,而解码有OpenSVCDecoder支持。SVC的相关协议定义在H.264标准和RFC6190中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、概念

        SVC(Scalable Video Coding,the Scalable Extension of H.264/AVC:可适性视频编码或可分级视频编码)是传统H.264/MPEG-4 AVC编码的延伸,可提升更大的编码弹性,并具有时间可适性(Temporal Scalability)、空间可适性(Spatial Scalability)及质量可适性(SNR/Quality/Fidelity scalability)三大特性,使视频传输更能适应在异质的网络带宽。

二、概述

        SVC以AVC视频编解码器标准为基础,利用了AVC编解码器的各种高效算法工具,在编码产生的编码视频时间上(帧率)、空间上(分辨率)、视频质量方面的可扩展,产生不同帧速率、分辨率、质量等级的解码视频。

        时间可适性(Temporal Scalability):由于一般视频压缩都会利用运动补偿的手段,纪录位移向量(motion vector)。在某些系统的应用上,可以跳过某几帧用其邻近帧的位移向量内插出该被跳过帧的结果。在解码端同样利用运动补偿算回该被跳过帧。

        

        这张图表示在时间维度上的可伸缩性视频编码。观察预测箭头的组织方式。在这个例子中,定义了四个不同的层(T0到T3)。

         

        为了更直观描述算法实现,这张图中的图片是垂直偏移的,视觉上分离三层。每一层都需要依赖较低层才能被解码,但不需要任何较高层。这允许从顶层开始移除图片,而不影响剩余图片的可解码性。例如,我们假设图例中显示的图层以30 fps的帧速率显示。如果我们移除所有L2层的图片,剩下层(L0和L1)仍然可以成功解码,并且产生一个15fps的视频。如果我们进一步删除所有的L1图像,那么剩下的L0层依然可以被解码并产生一个7.5fps的视频
        空间可适性(Spatial Scalability):图形(或视频压缩中的一帧)在压缩编码的时候即存下了多重大小(或分辨率)的结果。让解码端得以视需求解码回所需的图片大小(或分辨率),可能以较小的结果换取解码的效率。通常较小的图片即带有大图片一部分的特性,大图的存储上不需要重复记录这些重复的部分。
        

        与时间可适性原理类似,L0基层为分辨率最小编码数据,级别越高,分辨率越高。当实际应用中需要较低分辨率时,只需丢弃高Level层级数据进行解码。

        质量可适性(SNR/Quality/Fidelity scalability):在压缩编码的时候将多重品质(qualities)的结果都存下来。让解码端得以视需求解码回所需的图片品质,可能以较低的品质换取解码的效率。通常品质较差的图片仍有一定的代表性,品质较佳的结果在存储上不需要重复记录重复的信息。
        

  • 联合可适性(Combined scalability):结合上述三个扩展性。

        上图为空间和时间的可伸缩性示例。我们可以通过扩展时间可伸缩性结构同时实现空间可伸缩性编码。每个图片现在有两部分:基础层分辨率图片的B部分和空间增强层的S部分,这两个部分结合则可生成全分辨率图像。空间增强层一般为水平和垂直方向上基底分辨率的1.5倍或者2倍。这为不同分辨率的视频在进行空间可缩放性编码时提供了便利,例如VGA和QVGA(比率为2)以及1080p和720p(比率为1.5),都可以进行空间可伸缩性编码。空间可伸缩性可以与时间可伸缩性(和SNR)以完全独立的方式相结合。假设在图示例子的全速率和分辨率分别为30fps下的HD高清分辨率(720p),那么我们可以在分辨率(HD、1/4HD)和帧速率(30fps、15fps、7.5 fps)之间进行任意组合。

         

 三、应用场景

1)监控视频应用场景

                                ​​​​​​​ 

        监控视频不同的终端支持视频的分辨率不同。传统的方式需要一个服务器编码出不同分辨率视频数据给各个终端。但是增加Spatial Scalability后。 

         视频采集端,仅需要Spatial Scalability一次编码,就可以提供360p、720p、1080p的数据。大大提升编码效率,降低服务器性能消耗。

        另外监控视频流存储的时候一般需要2路,1路质量好的用于存储,1路用于预览。用quality scalability编码可以产生2层的分级码流,1个基本层用于预览,1个增强层保证存储的图像质量是较高的。

2)多人会议应用场景

                                                 

        视频会议终端利用SVC编出多分辨率、分层质量。会议的中心点替代传统MCU二次编解码方法改为视频路由分解转发。在云视讯领域SVC有很大的应用空间。 

  3)抗网络丢包应用场景 

        正如《Overview_SVC_IEEE07》第二章描述,虽然看上去Spatial Scalability和quality scalability,给视频会议和监控视频提供了很好的解决方案,但是由于这种方案会增加传输码率,降低编解码器性能、提高编解码器的复杂度、在一些场景下还需要服务器支持SVC层级过滤。这使得SVC的Spatial Scalability和quality scalability到目前为止还没有大规模应用。但是Temporal Scalability可以在不稳定网络视频传输上被使用。

          以不可缩放的方式进行视频编码传输时。只有第一张图片的I帧,可独立编码,无需参考其他任何图片。其他所有的图片P帧,都需要参考前面的帧画面进行预测然后编码。两个I帧之间的数据也叫一组GOP。可以看出当一个GOP内的一帧丢失,严重时会导致整个GOP无法解码。

        但是增加Temporal Scalability后,我们仅需要通过FEC+NACK方式保护T0层的数据完整性,若其余层的视频帧有丢失,就通过逐级降帧率方案(丢弃Tn-T1之间的数据),还能保证视频通话整体的流畅性。并且Temporal Scalability可以做到后向兼容性,不需要解码器做特殊处理。

        四、实现
        1)编码

        目前在OpenH264的开源代码中已经支持SVC视频编码,但是解码尚未支持。编码参数配置如下:        2)解码 

         目前知道Open SVC Decoder的开源代码支持SVC解码。

         3)VPX对SVC的实现

        根据《HANDLING PACKET LOSS IN WEBRTC》这篇文章可以看出,VP8已经实现SVC设计,并将TL(temporal layers)+ NACK + FEC联合作为QOS的一个方法。

        

        五、协议 

        SVC算法实现原理,在《Overview_SVC_IEEE07》文档有描述。

        SVC与H264协议结合,在《T-REC-H.264-201704-I!!PDF-E》H.264标准的附录G有定义。

        SVC的RTP打包及SDP协商,在《rfc6190》有定义。

        六、参考        

http://ip.hhi.de/imagecom_G1/assets/pdfs/Overview_SVC_IEEE07.pdf

https://www.itu.int/rec/T-REC-H.264-201704-I

https://tools.ietf.org/html/rfc6190

https://en.wikipedia.org/wiki/Scalable_Video_Coding

https://zh.wikipedia.org/wiki/%E5%8F%AF%E9%81%A9%E6%80%A7%E8%A6%96%E8%A8%8A%E7%B7%A8%E7%A2%BC Handling packet loss in WebRTC | IEEE Conference Publication | IEEE Xplore

 

    

              

### WebRTC中的QoS配置与最佳实践 在WebRTC应用中,确保高质量的服务(QoS)对于提供流畅的实时通信至关重要。为了达到这一目标,网络条件评估和适应机制扮演着重要角色[^1]。 #### 自动调整带宽估计 WebRTC内置了一个复杂的算法来自动估算可用带宽并相应地调整视频编码参数。这种自适应比特率(ABR)技术能够动态响应变化的网络状况,在保持低延迟的同时最大化视觉质量。 #### 使用SVC分层编码 可扩展视频编码(SVC)允许发送端创建多个不同分辨率版本的数据流,接收方可以根据当前网络状态选择最合适的层次解码播放。这种方法提高了鲁棒性和灵活性,尤其适合于具有高度波动性的无线连接环境。 #### 实施FEC前向纠错策略 通过启用前向错误校正(FEC),可以在一定程度上补偿数据包丢失带来的影响而不必重传整个帧。这有助于减少卡顿现象的发生频率,特别是在丢包较为严重的场景下表现良好。 ```javascript // JavaScript示例:开启FEC功能 const pc = new RTCPeerConnection(); pc.addTransceiver('audio', {direction:'sendrecv'}); let sender = pc.getSenders()[0]; sender.setParameters({ encodings: [{ fec: true, }] }); ``` #### 配置优先级队列 在网络设备层面设置基于DSCP标记或其他标准的流量分类规则,可以为多媒体会话分配更高的转发优先级,从而保障其传输效率不受其他类型业务干扰。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值