腾讯云快直播——超低延迟直播技术方案及应用( 二 )


 

  • ACK机制导致通道利用率低
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
ACK机制会导致通道利用率低,在ACK之后不是立马就返回的,还有ACK的等待时间 。在这段时间通道未被利用就会导致通道利用率变低 。
 
  • 无流媒体特性、可靠传输导致无效重传
 
直播是有时效性的,上图1、2、3、4、5、6,可以看到5、6数据已经过期了,但无效的重传会一直重传,直到传输成功,所以无效重传进一步加剧拥塞 。
综合以上四点可以得出TCP不适合低延迟直播 。
 
快直播(超低延迟直播)方案 
【腾讯云快直播——超低延迟直播技术方案及应用】3.1 UDP是低延迟直播的必由之路
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
调研显示,低延迟直播在业界的协议有QUIC、SRT、WebRTC、ORTC,比较而言QUIC的延时还是比较大的,因为他没有流媒体功能;SRT、WebRTC、ORTC延迟都是毫秒级别的,都有流媒体特性,其中SRT、ORTC用的比较少,WebRTC生态繁荣,因此我们选择了WebRTC做超低延迟 。
 
3.2 延迟关键问题在哪里?
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
我们要做超低延迟,首先就要知道它们的超低延迟出现在哪里?整个直播过程从数据的采集、编码都经过哪些过程?
 
首先是视频输入摄像头采集的数据,由YUV编码成264、265数据,采集t0,编码t1,推流传输t2,转码t3,再由CDN传输,经过视频解码,最终通过视频显示出来 。在这个过程中摄像头采集耗时很小,一般在十几毫秒左右;编码耗时通过调整编码参数也能达到几十毫秒;推流传输是和rtp相关的,基本耗时在十几毫秒到几十毫秒;如果采取高速转码,耗时也不高;最关键的是CDN传输和视频解码,用户的网络现在千奇百怪,对于网络条件好的用户,传输延迟可能不高,但对于网络条件不好的用户,传输延迟可能就要达到几秒甚至几十秒,所以TCP传输延迟是一个不可控的因素 。在t5视频播放和解码阶段,目前像Flash播放器、hls、rtmp播放器缓存需要6-10秒,播放器的缓存是产生延迟的关键原因 。那为什么不在当前直播条件下把缓存调到0呢?这是由于调到0之后延迟虽然小了,但卡顿会很高 。由此可以看到,延迟高的关键在于CDN的传输和播放解码没有很好地配合和互动 。所以我们主要要解决这个问题 。
 
3.3 快直播方案
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
快直播方案改造的就是从CDN分发节点到SDK、再到观众端播放这部分,这样的好处在于主播推流中间的录制、截图、转码等都可以复用,接入简单,可以同时出flv、rtmp、hls、WebRTC的数据流 。
 
3.4 快直播对标准WebRTC进行了升级
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
此外快直播对标准WebRTC进行了升级 。标准WebRTC存在很多限制,音频只支持OPUS、视频不支持H265(H265因为专利的一些问题,因为VP9和H265有竞争关系,谷歌更希望推VP9)、视频不支持B帧、信令交互耗时长、无法透传metadata,这些问题对于在线教育和主播带货是没必要的,可以跳过 。而有些客户希望用metadata带一些同步信息,显然标准WebRTC是不支持的 。
 
我们从五个方面对标准WebRTC进行升级,包括支持aac(同时支持adts、latm两种封装)、视频支持H265和B帧、通过STP协商精简了信令交互、可以关闭gtrs以及支持透传metadata 。上图就是腾讯云快直播的Demo,从图中可以看到支持H264、H265,Audio格式、加密开关 。
 
3.5 快直播如何接入
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
快直播的接入其实非常简单,只需要一步就可以从标准直播升级为快直播——升级播放端、其余全部复用 。Web/H5端调用浏览器WebRTC接入快直播,App接入需要集成SDK 。
 
3.6 快直播优势
 
腾讯云快直播——超低延迟直播技术方案及应用

文章插图
 
快直播有五大优势:
 
1.全球分布、覆盖广泛(支持1100+节点,支持25个国家)
2.超大带宽容量(我们的部门拥有了腾讯90%的流量,支持100T+带宽)


推荐阅读