在直播源码开发完成后,技术人员不仅要测试代码的完整性,还要考虑平台的兼容性,甚至要顾及到网络对于直播的影响,因为网络不稳定是造成音画延迟的最主要因素。事实上,一些非网络因素也能造成延迟,今天,小编就和大家一起来详细了解下,直播源码开发过程中,所有造成音画延迟的因素都有哪些。
一、网络延时造成延迟
网络延时指的是从主播端采集,到观众端播放之间的时间差。在信息从主播端传送到观众端的“路程”上,可能会经过很多CDN节点,经过一次,就会产生一次分发过程,而这种过程必然会造成延迟。另外,数据传输过程中还涉及到逻辑上的交互,例如包的重传以及确认,以及缓存上的一些逻辑等,会在这个基础上又增加很多很多。
二、网络抖动造成延迟
受网络抖动的影响,当数据包从开始传送到末尾的间隔时间不再平均时,就容易造成延迟。举一个例子,在主播端发送50个数据包,每个包间隔1s发出,结果第25个包在传输过程中遇到网络拥塞,导致包25不是紧跟着24到达的,而是延迟到第30包后面才到达。这种情况就会导致接收端不能依照顺序把内容播放出来。然而,为了不产生失真现象,就不可避免的造成播放延迟。
三、网络丢包造成延迟
直播中用到的RTMP、HLS等流媒体传输协议都是建立在TCP的基础之上。TCP有一个很重要的特性就是其可靠性—不会发生数据丢失的问题。为了保证可靠性,TCP在传输过程中会有3次握手:首先客户端会向服务端发送连接请求,服务端同意后,客户端会确认这次连接,这就是3次握手。接着,客户端就开始发送数据,每次发送一批数据,在服务端的“收到”确认的信息后,会继续发送下一批。那么问题就来了,TCP为了保证每组数据传到,都会带有自动重传机制。如果传输中发生了丢包,没有收到对端发出的“收到”信号,那么发送端就会自动重传丢失的包,一直到超时。网络丢包是很难控制的因素,所以当网络的丢包率开始升高时,重传会导致延时不断增大。
四、RTMP累积造成延迟
虽然在流媒体传输协议中,RTMP用的无疑是最多的,但是它也有一个比较显著的弱点,即累积误差。原因也比较简单,就是RTMP基于TCP技术:当网络状态很差时,服务器会将包缓存起来,从而导致数据累积,当网络状况好了,就一起发给客户端,这样做的对策就是,客户端的缓冲区会变得很大,从而发生延迟。
以上,就是直播源码开发过程中,导致音画延迟的几个关键因素。当然,针对于某些延迟情况,小编也在之前的文章中更新过解决办法,具体可以查看文章下方的相关阅读。如果您对直播源码开发感兴趣,欢迎咨询官方客服。
本文章声明原创,转载请注明出自云豹科技www.yunbaokj.com