影响音视频延迟的关键因素(三): 传输、渲染
影响音视频延迟的种因素有很多,此前我们已分享了不同流媒体系统对时延影响,数据流动过程中采集、前处理、编解码三个环节是怎样引入时延的,今天我们将分享在流媒体数据传输、渲染环节,有哪些因素会导致时延。
1)传输
流媒体数据传输是非常复杂的过程,涉及到运营商、物理距离、接入方式以及节点部署等多方面因素。传输的极限是光速,光在光纤中的传输速度大概是28万每秒,从北京到深圳,大概需要10ms,但在实际传输过程中,使用光纤到户这种方式传输大概需要20ms,用4G的话会达到80ms,我们实测的5G会好很多,5G更接近光纤。
在传输方面做延迟的优化,可以通过以下几个方面来实现:
第一,更好的基础设施。比如FTTH(光纤到户)、5G,如果没有好的网络,做低延迟的优化是不现实的,所以首先是要加强网络建设;
第二,合理部署服务。让我们的服务本身足够靠近用户,做好全链路最优路由;
第三,针对实时流媒体优化传输控制协议。现实的网络中抖动、丢包是不可避免的,我们需要针对这种特性去设计我们实时流媒体传输控制协议,包括重传、估算可用带宽、编码,根据网络情况加入编码冗余;为了对抗抖动要加dejitter等
5G对低延迟的影响有这两个方面:第一高可靠低时延通信,它的空口时延号称达到1ms,我们自测的话是接近光纤,基于此我们可以实现一些关键操作,比如远程控制,工业的自动化;另一个是增强型移动宽带,它可以达到很大的上行,我们测的话可以达到7/800兆,上传4K、8K的视频没有太大压力。
即构很期待5G的到来和铺开的,首先我们方案是转控分离的,我们的信令面和媒体转发面是分开的,转发面我们就可以从一个localDC到另一个localDC,不需要再往上面去扩,这样更靠近用户走更短的路径,有时延的优化;第二是我们控制面是有状态的,那我们还是往上走,控制面并不影响数据的延迟。
2)渲染
最后一个是渲染,渲染时会调用系统的接口,因此系统接口的类别对时延的影响很大。如安卓我们用OPENSL ES,这个是低时延的关键,还有一些厂商做的私有接口优化,比如耳返。在某些场景耳返是个重要功能,如唱歌过程中歌声需要实时返回耳朵来判断唱的准不准,那这里的时延就非常关键,如果不做耳返优化,在VIVOX9它的时延可能达到了209ms,而当开启优化之后,时延降低到14ms,这是非常明显的优化。
即构的接口SDK已经去适配这些厂商,拿到了他们的文档、接口,我们做了适配,选择即构的方案,就可以即插即用。
以上就是分环节分析延迟产生的各种因素,但降低延迟是一个系统性工程,任何单个节点出现异常,都会引发整体异常。
下图上下两部分是两个极端,上半部分粒度很粗,采集、前处理、编码一起做完给传输,对端解码、后处理、渲染也一口气做完。这样做,在设备性能好的情况下,延迟是可以比下面的流水线实现低的,但是吞吐是有问题的;
另一个极端是把每个环节拆的很细,采集、前处理、编码、后处理等环节都当成一个个单独的任务,拆的很细就会有另一个overhead,我们把数据从前一个抛给后一个是生产者和消费者的关系,这样是自带buffer的,buffer就意味着延迟。
因此我们需要权衡考虑设备的能力和怎么去拆解每个环节任务,做更合理的分割。
版权声明: 本文为 InfoQ 作者【ZEGO即构】的原创文章。
原文链接:【http://xie.infoq.cn/article/7d65096a0be865b08bccb8ca4】。文章转载请联系作者。
评论