导读:随着AI和5G的到来,音视频应用将变得更加广泛,人们对音视频的品质需求也越来越高,视频分辨率已经从高清发展为超高清、VR,视频帧率也已出现60fps、120fps等应用,交互式的应用对端到端延时也提出了更高的要求。与此同时,设备的硬件性能也突飞猛进。可以预见,随着5G的到来网络中传输的数据将会呈现爆发式增长,大量数据将会给网络传输带来巨大的挑战。因此,如何保证用户高品质的音视频体验?传输将会是一个重要环节。

网易智企云信资深音视频引擎开发工程师

王兴鹤

网络中常见的问题有丢包、抖动、拥塞、延时。以下将分别介绍这些问题对视频体验带来的影响。

视频帧往往是拆成一个个分组包进行传输,当网络发生丢包时,接收端无法成功组帧,不仅影响这一帧的数据解码,从这一帧开始的整个GOP都将无法解码显示,用户看到的画面将出现卡顿,直到完整的I帧到达接收端才能恢复画面。

抖动同样是造成卡顿的杀手锏,抖动分为发送数据抖动、网络传输抖动、接收丢包恢复抖动。在端到端全链路上,任何环节都会引入抖动而影响画面的流畅性。接收端的Jitter Buffer缓冲区负责消除抖动,提供稳定的解码帧率,但是Jitter Buffer是牺牲延时作为代价的。

网络发生拥塞时,音视频的播放情况将变得更加恶劣,拥塞造成的直接影响是突发丢包或者突发抖动,如果不及时预测拥塞的发送降低发送数据量,接收端将会出现卡顿、延时大、画质差等等问题。

发生丢包、抖动、拥塞时往往会伴随着延时的增大,ITU StandardG.114对延时的定义是,端到端延时大于400ms时绝大数的交互体验都将不能接受。

我们用QoE表示用户在接收端的主观体验,而QoS是指通过一些量化指标衡量网络的传输质量并提供优质网络的服务。

那么对抗以上这些网络问题,QoS都有哪些武器呢?

01

FEC

FEC是常用的抗丢包手段,又叫前向纠错码,是在发送端额外发送一些冗余数据,用于抵抗网络丢包。当接收端检测到媒体数据发生丢包时,就可以利用接收到的冗余数据进行丢包恢复。FEC的优点是丢包恢复延时低,缺点是冗余数据占用额外带宽,在带宽受限场景会挤压视频原始码率,导致画质变低。影响FEC的丢包恢复能力除了冗余数据数量之外,还跟分组大小有关,分组越大,抗丢包能力越强,但是对应的丢包恢复延时也会变大。

分组大小与抗丢包能力示意

FEC的编解码算法有XOR、RS等,衡量FEC算法的指标主要有计算性能、抗丢包能力、恢复延时。其中基于柯西矩阵的RS(里德-所罗门码)是目前比较流行的FEC算法。该算法结合合适的分组策略在以上三个指标上都有较好的表现。对于不同的应用场景也有不同的FEC算法有更好的表现,比如喷泉码、卷积码等等,喷泉码结合接收端反馈机制对无线信道等丢包波动大的场景有较好的表现。

总的来说,FEC是一种用码率流量交换抗丢包能力的技术,相比重传FEC的优点是恢复延时低。FEC技术的关键点是如何设计合理的冗余策略和分组大小,达到抗丢包能力、视频码率、恢复延时三者的有效平衡。

02

丢包重传

有别于FEC的抗丢包技术,重传不需要浪费太多的码率,只有当接收端检测到丢包时通过反馈给发送端丢包信息(NACK)才进行相应数据的重传,接收端每隔1个RTT对同1个包发起重传请求,直到成功接收到相应的数据包。重传最大的好处是码率利用率高,缺点是会引入额外的丢包恢复抖动从而拉大延时,显然,网络RTT越大重传的恢复效果越差。

考虑到双向丢包的场景,对于同一个包,接收端可以以1/2 RTT间隔发送重传请求,以应对重传请求包可能丢失的情况。发送端对同一个seq的包响应间隔按照RTT间隔控制,防止重传码率过多浪费。发送和接收按照以上间隔处理重传请求和重传响应,可以在码率和抗丢包能力上达到有效的平衡,实现收益最大化。一个好的重传策略设计还需要考虑是否需要容忍乱序,合理控制重传码率。

03

Jitter Buffer

接收侧一个重要环节是Jitter Buffer。Jitter Buffer的作用是以最低的缓冲延时代价消除数据抖动,提供流畅的播放帧率。因为视频是按帧解码播放,所以Jitter Buffer的延时计算也是按视频帧为最小计算单元,而不是按视频包,输入Jitter Buffer的参数是每一帧视频数据的抖动。造成帧抖动的因素有很多,有采集抖动、编码抖动、发送抖动、网络抖动、丢包修复引入的抖动等,总之,在解码之前的任何环节引入的数据抖动会汇总到Jitter Buffer模块处理抖动消除。

有效发挥重传的抗丢包能力需要有Jitter Buffer的拉伸策略加以配合。因为重传只是保证数据能够到达接收端,此外接收端还需要有足够大的Jitter Buffer等待这些晚到的数据帧,否则即便重传到达接收端的数据由于滞后性原因将被丢弃。

重传结合Jitter Buffer拉伸策略是一种用延时交换抗丢包能力的技术,其中影响这种交换性价比的关键因素是RTT,RTT越小重传收益越大,反之收益越差,更多需要FEC实现抗丢包。

04

长期参考帧

除了重传、FEC等常规手段之外,长期参考帧技术即选择参考帧技术,是一种网络模块和编码器共同配合完成的技术。在RTC场景下一般的编码参考策略是向前一帧参考,因为参考的距离越近压缩效果越好,出于实时的考虑编码只有I帧和P帧,没有B帧。而长期参考帧是一种可跨帧的参考帧选择策略,这种策略打破了传统的向前一帧的参考的规则,可以更加灵活地选择参考帧。

长期参考帧策略的目的是在有丢包的场景下,接收端不需要等待丢包恢复也能继续显示画面,其最大的好处是低延时,不需要等待重传恢复,但是带来了压缩率的牺牲,在相同码率下表现为图像质量的牺牲,但是这种牺牲和收益的交换在某些场景下是值得的。此外,常态的长期参考帧技术在抵抗突发丢包能力上有很大提升,当网络突然出现丢包,FEC和重传的立即恢复效果一般是比较差的,尤其是有基础RTT的网络。而长期参考帧可以饶过丢失的帧,利用丢失帧之后任何一个恢复的帧进行解码显示,从而提升突发丢包时的流畅性。

根据长期参考帧的特点和目的,实现长期参考帧技术应用需要有接收端侧反馈信息,编码器根据接收端反馈的帧信息选择参考帧编码,在有丢包的场景下,接收端通过短时的帧率牺牲将很快恢复画面。由于存在接收反馈,高RTT时反馈延时较大将会导致参考距离变大,而参考距离超出了编码器的编码缓冲限制将会导致编码找不到参考帧,所以长期参考帧比较适合低RTT场景。在多人会议场景中,下行人数太多也会制约长期参考帧的参考帧选择。

综合来看,长期参考帧适合1V1的通信场景,适合低RTT伴随丢包或者拥塞的弱网场景,这样的场景下长期参考帧比传统的向前一帧参考有更好的实时性和流畅性,同时结合重传和FEC的抗丢包贡献,其抗弱网能力将大大提升。

05

大小流和SVC

长期参考帧比较适合1V1的场景,而多人场景时,需要大小流和SVC发挥作用。

大小流是指上行同时传输两条不同分辨率的流,媒体服务器可以根据下行实际的带宽情况转发相应质量的流,如果带宽足够转发高质量的大流,带宽不足转发低质量的小流。这种大小流机制的好处如下:1)无需调节源端码率就能向媒体服务器提供两种规格的视频码率;2)在下行接收者有不同的带宽时,可灵活转发,避免只有一个编码源相互影响的情况。

SVC跟大小流的特点一样,区别在于SVC提供了不同帧率的可选规格,媒体服务可以选择不同的SVC层进行转发,通过降低帧率达到降低码率的目的。

在带宽不足时,不同用户对清晰优先和流畅优先的需求不一样,SVC和大小流提供了灵活的机制满足不同应用的需求。

06

场景差异化

我们把我们的应用场景简单地分为两大类,通信场景和直播场景。通信场景简单的比如视频会议、主播连麦交流,在线面试等等,这种交互性的应用场景对实时性要求较高,它的特点是低延时、流畅优先。而直播场景比如主播直播卖货,老师在线授课,这种场景的特点是大部分时间都是主播或者老师一个人在讲,因此它的特点是高延时、清晰优先。在这两种场景下有不同的策略倾向,通信场景更多的是用FEC,重传作为辅助,提升实时性。直播场景更多是用重传,FEC作为辅助,提升清晰度。

结束语

本文主要介绍了对抗弱网的基本QoS策略,除了以上技术之外还有很多模块涉及到延时、清晰、流畅三个维度的平衡。很少有一种技术能做到完美无缺,鱼和熊掌不可兼得,我们要做的平衡策略就是取长补短,趋利避害,在不同的网络条件下,不同的应用场景下,结合每种技术的自身特点,将其进行组合打出一套组合拳,实现受益最大化。

网络QoS的平衡之道——音视频弱网对抗策略介绍相关推荐

  1. RTC 系统音视频传输弱网对抗技术

    Hi~这里是25万+社交,泛娱乐,出海开发者青睐的全球互联网通信云·融云若你对国产化,协同办公解决方案感兴趣,欢迎关注本号的[兄弟号]关注[融云 RongCloud],了解协同办公平台更多干货. 今天 ...

  2. 【音视频第2天】RTC 系统音频弱网对抗技术发展与实践

    RTC 系统音频弱网对抗技术发展与实践 网易P229 1. RTC 系统中常用的 FEC 冗余算法包括: XOR. Reed Solomon.喷泉码等介绍一下这几种算法? 在RTC(实时通信)中,为了 ...

  3. LiveVideoStack线上分享第四季(三):在线教育的音视频架构设计及弱网对抗技术...

    今晚 7:30,LiveVideoStack线上分享第四季,第三期,我们邀请到了VIPKID 服务端架构师,陈劲松老师详细介绍在线教育场景下,如何搭建分布式和高可用的音视频平台,并重点分析在弱网对抗中 ...

  4. 阿里云 RTC QoS 弱网对抗之 LTR 及其硬件解码支持

    LTR 弱网对抗由于需要解码器的反馈,因此用硬件解码器实现时需要做一些特殊处理.另外,一些硬件解码器对 LTR 的实现不是特别完善,会导致出现解码错误.本文为 QoS 弱网优化系列的第三篇,将为您详解 ...

  5. 免费参会!百度智能云:从编码到网络传输,揭秘低延音视频背后的技术架构...

    在移动互联网的助力下,直播.短视频等媒体应用如雨后春笋般涌现.但在媒体应用风口的激烈竞争中,很多应用都惨遭淘汰,而那些在实战中冲出重围,成功占领第一梯队的媒体应用,背后也都有着独到的创新与过硬的技术作 ...

  6. 音视频开发常用分析工具介绍

    综述 工欲善其事,必先利其器:兵马未到,粮草先行. 在音视频开发过程中,利用工具可以更方便.更直观.更快捷的分析音视频的数据,便于开发过程中分析.调试和解决问题. 现总结一些音视频开发过程中常用的分析 ...

  7. 《JavaCV音视频实战宝典》专栏介绍和目录

    <JavaCV音视频实战宝典>是2022年最新推出专注于音视频开发的高级实战宝典教程系列,更加偏重综合类流媒体音视频应用,技术不在局限于JavaCV,可能会包含结合Java中较为经典的sp ...

  8. iOS音视频:OpenGL常用术语介绍

    1.OpenGL简介 1.1 OpenGL是什么 OpenGL(Open Graphics Library,译为 开放图形库 或 开放式图形库):是用于 渲染 2D.3D矢量图形的跨语言.跨平台的应用 ...

  9. 阿里云 RTC QoS 弱网对抗之变分辨率编码

    简介:本文为 QoS 弱网优化系列的第二篇 作者|安基程.田伟峰 审校| 泰一 视频编码中的变分辨率问题及解决 变分辨率在弱网场景的实际应用中非常常见,网络状况不好的时候降低分辨率可以降低码率,减少块 ...

最新文章

  1. HTTP/2做错了什么?刚刚辉煌2年就要被弃用了!?
  2. 企业官网营销,网站建设是第一步
  3. Linux之父为过去的言行道歉,宣布离开社区反思
  4. Oracle Study之--Oracle 11gR2通过RMAN克隆数据库
  5. quagga源码分析--路由信息处理zebra-rib
  6. Delphi 对象的创建(create)与释放(free/destory)
  7. 深度学习笔记(43) Siamese网络
  8. C++ 刷算法题笔记
  9. 《Adams/ view从入门到提高》视频 —— ftc正青春
  10. Linux 命令行进入DB2
  11. 十年优秀网络玄幻小说大点评(推荐)
  12. Warbler, A Little Birdie To Introduce Your Rails App To Java
  13. 上市公司融资约束SA测算以及结果(2000-2019)
  14. 【全开源】六合一口红机完整源码
  15. JDG人脸识别课堂管理系统全栈开发流程报告-软件工程实践报告
  16. Ceph-ansible 安装 ceph (rbd + rgw)
  17. STC51单片机数码管显示程序和仿真
  18. poj 1151 Atlantis
  19. md5检验本地和服务器包的一致性
  20. 雷达有源干扰——噪声乘积干扰

热门文章

  1. pycharm pull到github
  2. 160407、java实现多线程同步
  3. 8.Struts2类型转换器
  4. php 命令执行脚本文件路径,php命令行(cli)下执行PHP脚本文件的相对路径的问题解决方法...
  5. JavaSE总结笔记
  6. 视觉SLAM找工作面试问题集锦(转自网络)
  7. Java实现读取pdf文件内容(how to read pdf in java)
  8. HFSS安装提示failed to check out license during initialization,怎么解决?
  9. 高性能计算机存储部件有磁盘阵列,信息存储技术——磁盘阵列解读.pptx
  10. C语言中的二级指针和二维数组问题