如何优化传输机制来实现直播源码的超低延迟?

举报
山东布谷科技 发表于 2019/08/16 13:32:55 2019/08/16
【摘要】 直播源码要获得超低延迟,不能仅仅依靠在各个环节不断地优化,而是要通过 FEC、ARQ 和码率自适应构建实时通讯机制。在这个基础上,还要充分考虑网络情况、实时要求和成本因素,以及需要大量经验数据的支撑(比如说,PLR 和 RTT 的关键阈值等)。

 

要在直播源码SDK 中实现超低延迟,实时的语音视频传输机制是必不可少的,而 FEC ARQ 的智能结合是实时直播源码系统传输机制的基石。

在语音社交、视频社交、游戏语音和互动直播等领域,关于在直播实时传输中实现低延迟这个议题,已经有不少的文章提出各种方案。绝大部分方案的思路都是“优化”,比如说,优化编码、推流、传输和播放等各个环节。

要在实时语音视频传输中获得超低延迟,是不能单靠挖空心思去“优化”的,而是要依靠实时的传输机制。就像高铁和火车有着本质的区别一样,火车不管如何优化,也只是跑得更快的火车,永远达不到高铁的速度。没有一套实时的传输机制,再怎么在各个环节“优化”,也无法获得真正超低的延迟。

要实现超低延迟,信道 QoS 十分关键。首先要选择合适的网络传输协议,采用基于 UDP 的私有协议还是标准 RTMP 协议?然后根据网络环境采用合适的 QoS 技术,采用 FECARQ,还是双管齐下? 如果采用 FEC ARQ 双管齐下,那么一套智能的 QoS 策略就必不可少。没有任何一种 QoS 技术能解决所有问题,实时语音视频传输机制必须是多种 QoS 技术的有机结合。

传输层协议的选择

如果是视频直播 SDK,一般会选择 RTMP 协议,因为要能够普遍兼容 CDN 分发网络,从而向围观的广大用户进行直播。如果是音频社交 SDK、视频社交 SDK 或者游戏语音 SDK,一般会选择 RTP/RTCP 协议(或者类 RTP 的私有协议),因为不需要通过 CDN 网络向围观用户广播媒体流。是否要考虑兼容 CDN 网络,是语音视频通话 SDK 和视频直播 SDK 的重大区别。

RTMP 协议是基于 TCP 协议的,RTP 协议或者私有协议是基于 UDP 协议的,因此 RTMP 协议和 RTP 协议之争,本质就是 TCP 协议和 UDP 协议之争。

TCP 协议的特点:

1) 是通用的 IP 网络协议,不是为实时媒体传输而设计的,在弱网网络环境下延迟会增大;

2) 有内嵌的 ARQ,但没有 FEC,不允许开发者对 ARQ 策略进行控制,不能实现 FEC

3) 不是从实时语音视频的角度进行设计的,更多考虑网络传输的公平性,内嵌的传输控制策略比较温和。

UDP 协议的特点:

1) 适合实时直播通讯,允许端到端全链条进行信道策略控制,在弱网环境下可控性更强;

2) 延迟时间的大小取决于丢包时候的 ARQ FEC 策略,允许开发者深度控制 ARQ FEC 策略;

3) 适合设计直播的通讯机制,根据网络状况自适应地选取 ARQ FEC 策略,以及调整传输码率和报文的数量。

在网络环境好的情况下,只要语音视频编解码器相同,RTMP 协议和基于 UDP 的私有协议的传输效率是相当的,都可以实现低延迟、不卡顿和高品质的实时通讯效果。

在网络环境较差的情况下,特别是在跨网甚至跨国的情况下,基于 UDP 的私有协议对端到端全链条可控,包括流控码控、ARQFEC 和抖动缓冲等,对抗恶劣网络环境会更有保障。

信道保护

IP 网络是“尽力而为”地提供数据传输服务的,尽最大的可能性来发送报文,但对时延、可靠性等性能概不负责效果,传输的数据出错是避免不了的,因此对信道进行保护是必须的。

信道 QoS 技术主要包括前向纠错 FEC,丢包重传 ARQ 和混合型 ARQ。这几种算法都是成熟的技术,在最基础的算法上又衍生出多个变种,而且在实现的过程中也可以进行定制化。

FEC ARQ 的基础上,为了更好地适应弱网环境,需要让码率自动适应网络环境的波动,这样能够更好地保障实时直播的可用性和流畅性。

直播源码要获得超低延迟,不能仅仅依靠在各个环节不断地优化,而是要通过 FECARQ 和码率自适应构建实时通讯机制。在这个基础上,还要充分考虑网络情况、实时要求和成本因素,以及需要大量经验数据的支撑(比如说,PLR RTT 的关键阈值等)。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。