Chinaunix首页 | 论坛 | 博客
  • 博客访问: 168668
  • 博文数量: 340
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3405
  • 用 户 组: 普通用户
  • 注册时间: 2021-05-14 14:39
文章分类

全部博文(340)

文章存档

2023年(69)

2022年(144)

2021年(127)

我的朋友

分类: 云计算

2023-01-03 10:17:11

随着WebRTC标准的逐步推广,实时音视频通讯技术受到越来越多公司和技术人员的关注。

对于交互式音视频应用而言,稳定、低延时、通话质量清晰可靠是其基本需求。在互联网环境下,音视频的通话质量与以下因素有关:一是编码码率、帧率和分辨率等编码因素;二是网络的接入类型和接入设备性能;三是对丢包、抖动、乱序以及网络拥塞的自适应调整能力,即QoS(Qualityof Service,服务质量)。

交互式实时视频应用通常采用RTP协议进行音视频传输,RTP头部提供了诸如负载类型、时间戳、序列号和同步源等信息保证基本的音视频传输需求。但与TCP不同,RTP协议底层采用不可靠的UDP传输层协议,当网络过载或拥塞,无法实现对丢包、抖动、乱序以及网络拥塞的自适应调整。与音频相比,视频传输由于所占的带宽更大,更易受到网络环境变化的影响,因此以下将以视频为例分析Qos提升途径。

对与实时视频来说,网络出现丢包将直接导致接收端画面出现马赛克和花屏。有多种策略可以解决,包括:基于NACK反馈的丢包重传,前向纠错FEC和参考帧选择RPS,这些策略通常与编解码端的容错技术(如:帧内刷新和错误隐藏)配合使用。



基于NACK反馈的丢包重传方法:接收端循环检查接收缓冲,当发现丢包后使用RTCPNACK反馈报文将丢包信息反馈给发送端;发送端接收NACK反馈并解析后从发送缓存取出对应RTP包,并再次发送给接收端。该方法的缺点是增大了端到端的延迟,尤其在丢包大量发生时更为明显。

前向纠错FEC:FEC机制是在接收端根据视频帧的重要性(参考帧或非参考帧)发送冗余的视频RTP包,在接收端如果检测到丢包则利用冗余包进行恢复,否则将冗余包丢弃。该方法的优点是视频无延迟,但发送冗余包占用了额外的带宽资源。

更为可行的方案是是混合NACK/FEC模式,接收端根据帧大小和接收时延估计可用带宽,发送端根据可用带宽、丢包和RTT等反馈计算分配保护开销(protectionoverhead,包括FEC bitrate、NACK bitrate)和视频编码码率各占的比率。具体来说,FEC的保护级别(protectionlevel)取决于往返时间RTT,当RTT较小时,丢包重传的延时不会导致明显的视频卡顿,因此可以相应减少FEC包的数量;当RTT较大时,时延对视频流畅度影响明显,因此要相应增加FEC包的数量。此外,可以使用多帧FEC和结合时域分层信息的FEC,二者都可以在减小保护开销的同时,提供更低的渲染抖动、更低的端到端延迟和更高的视频质量。

拥塞控制技术的提出由来已久,TCP协议栈默认实现了对网络的拥塞控制以保证可靠传输。但在一些场合TCP并不适用,如:无线传输信道,高速长距传输网络、实时通讯应用等。为此,IETFRMCAT(RTP Media Congestion Avoidance Techniques)工作组提出了一系列针对实时通讯应用的拥塞控制算法需求,包括:能有效控制端到端时延、能有效控制丢包、与其他应用的流共享链路带宽、能够与TCP长连接流公平竞争可用链路带宽等。Google、Cisco和Ericsson等公司相继提出了各自的适用于实时交互应用的拥塞控制算法,开源工程WebRTC的内部实现采用Google提出的算法:Google Congestion Control,简称GCC。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询



GCC算法是一种混合了基于丢包和基于时延的方法,原理如下:

发送端根据丢包调整目标带宽,具体来说:低丢包率(小于2%)时增加目标码率,高丢包率(大于10%)时减小目标码率,丢包率介于二者之间时目标码率保持不变;

接收端根据时延估计{BANNED}最佳大带宽,由三个模块组成:排队时延估计、链路过载检测和{BANNED}最佳大带宽估计模块,三个模块间的关系为:当排队时延小于阈值(根据网络状态自适应调整)时,链路检测结果为underuse;当排队时延大于阈值时,链路检测结果为overuse;介于二者之间时,链路检测结果为normal;{BANNED}最佳大带宽估计模块的实现是一个表示当前链路状态(Increase、Hold、Decrease)的有限状态机,初始状态为Hold,根据链路检测结果进行状态迁移,并根据迁移后的链路状态和当前接收码率估计{BANNED}最佳大带宽remb。

上述两个过程的结合之处:接收端计算的remb值通过RTC PREMB反馈到发送端,发送端{BANNED}最佳终的目标码率应不超过remb值。

关键帧也叫做即时刷新帧,简称IDR帧。对视频来说,IDR帧的解码无需参考之前的帧,因此在丢包C严重时可以通过发送关键帧请求进行画面的恢复。关键帧的请求方式分为三种:RTCPFIR反馈(Full intra frame request)、RTCPPLI反馈(Picture Loss Indictor)或SIPInfo消息,具体使用哪种可通过协商确定。

阅读(228) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~