前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >直播中,可能造成画面或声音延迟的因素有哪些?

直播中,可能造成画面或声音延迟的因素有哪些?

原创
作者头像
就爱吃小笼包
修改2019-11-20 17:27:43
4.8K0
修改2019-11-20 17:27:43
举报

在直播APP开发完成后,技术人员不仅要测试源码的完整性,设备的兼容性,还要顾及到网络对于直播的影响,因为网络不稳定是造成直播画面和声音延迟的最主要因素。事实上,在直播APP开发中,还有一些非网络因素也能造成延迟,今天,小编就和大家一起来全面总结下,所有造成网络延迟的情况。

一、网络延时

这里指的是从主播端采集,到观众端播放之间的时间差。就算不考虑主播端采集

对视频进行编码的时间,以及观众端观看对视频机型解码的时间,那也会不可避免的造成延迟,原因就是信息从主播到观众的“路程”上,可能会经过很多CDN节点,经过一次,就会产生一次分发过程,而这种过程必然会造成延迟。另外,数据传输过程中还涉及到逻辑上的交互,例如包的重传以及确认,以及缓存上的一些逻辑等,会在这个基础上又增加很多很多。

二、网络抖动

网络抖动,是指数据包的到达顺序、间隔和发出时不一致。比如说,发送N+1个数据包,每个表间隔1s发出,结果在第N-50个包在传输过程中遇到网络拥塞,导致包N-50不是紧跟着N-51到达的,而是延迟到N后面才到达。这种情况就会造成不能依照接收顺序把内容播放出来,否则会造成失真。为了不产生失真现象,就不可避免了造成播放延迟。

三、网络丢包

直播中用到的RTMP、HLS等流媒体传输协议都是建立在TCP的基础之上。TCP一个很重要的特性是其可靠性—不会发生数据丢失的问题。为了保证可靠性,TCP在传输过程中会有3次握手:首先客户端会向服务端发送连接请求,服务端同意后,客户端会确认这次连接,这就是3次握手。接着,客户端就开始发送数据,每次发送一批数据,得到服务端的“收到”确认后,继续发送下一批。那么问题就来了,TCP为了保证传到,都会有自动重传机制。如果传输中发生了丢包,没有收到对端发出的“收到”信号,那么本端就会自动重传丢失的包,一直到超时。网络丢包是很难控制的因素,所以当网络的丢包率开始升高时,重传会导致延时不断增大。

四、RTMP累积延迟

虽然在流媒体传输协议中,RTMP用的无疑是最多的,但是它也有一个比较显著的弱点,即累积误差。原因也比较简单,就是RTMP基于TCP:当网络状态很差时,服务器会将包缓存起来,从而导致累积的延迟,当网络状况好了,就一起发给客户端,这样做的对策就是,造成客户端的缓冲区很大,从而发生延迟。

五、GOP-Cache(图像群组造成的延迟)

图像群组(Group of pictures),简称GOP。为了让大家更加直观的理解,直接放图:

图片来源:https://www.processon.com/view/56ebb341e4b01c9aeb5f137f

以上,就是直播中,可能造成延迟的主要原因,如果你对此有其它见解,欢迎在评论区给小编进行留言。

文章主要内容来源自CSDN博客《直播技术学习笔记(直播协议+流媒体服务器+音视频处理+FFmpeg)》作者CrankZ,其中部分内容有改动。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档