网络在线直播系统,一般过程是:采集→前处理→编码→推流→分发→拉流→解码→播放,每一个阶段都会占用一部分的时间,所以说为了保障用户观看的及时性,这些流程都需要高度的配合统一,这样才能降低在线直播的延迟问题。
我们先来说说什么原因为导致直播延迟。
第一,网络波动
我们这里所说的网络波动就是说在排序好的数据包中,有任何一包被延迟,就会导致它不按照正确的抵达顺序到达用户端,自然也无法按照接受顺序把内容播放出来,呈现在用户的接收屏上。网路波动会导致网络的内容播放的延迟和直播卡顿,但是这个原因只能算作是直播延时的外部因素,与本身的在线直播源码没有多大的关系。
第二、网络丢包
在线直播源码使用的流媒体传输协议有:RTMP、HLS、HTTP FLV等,传输过程一般是:主播端向服务端发送连接请求→服务端同意→主播端确认连线。
经过上述的三个过程,主播端才会持续的进行数据的分批发送,每发送完一批数据都需得到服务端的反馈才能进行下一步,若为接收到反馈就是出现了网络丢包的现象,系统会自动传输丢失的包,这就是丢包的自动重传机制,这样中间的间隔就会造成直播的延时。
对于小编上面说到的两点原因,我们该如何去解决直播系统延时的问题呢?由于网络波动属于外部因素,那从直播源码的角度来讲,我们就可以从网络丢包这一问题上进行优化处理。
小编推荐的三种优化方法,大家在开发在线直播源码的过程中可以借鉴:
1、使用RTMP传输协议
RTMP协议是作为直播流媒体传输协议的首选,因为它的延时相对较低,通常能够降低在5s之内,其次它能够被第三方内容分发网络普遍支持,拥有丢包重连机制,及时的保障在线直播的流畅性。
2、使用内容分发网络
将内容分发网络的各个边缘服务器直播内容进行缓存,将内容就近下发,能够有效的降低直播延迟,提升直播内容的传输速度。
3、选择合适的编解码
解编码的原理就是压缩数据包的大小,减少视频传输过程中对宽带的占用率,达到降低延迟的效果。选择合适的编解码当然是能够解决很大一部分的延迟问题。
由网络丢包引起的直播延时问题,在进行直播源码开发时是比较容易解决的,配合搭建CDN的选择就行。
转载于:https://blog.51cto.com/14318279/2409092