当你和朋友利用直播软件进行语音或视频聊天时,这时突然画面卡住不动了,而且声音变得断断续续,是不是会感到特别的尴尬?为了避免这些情况,那么在直播系统源码开发过程中,针对于延迟这个令人头疼的问题,能在哪些方面进行优化呢?下面就来给大家简单介绍下。
一、编码环节
首先,在编码过程中,确保在编码译码器(Codec)开启了最低延迟的设置。编码译码器一般都会有低延迟优化的开关,对于H.264来说,其优化效果尤其明显。另外,编码译码器一般都会有码控造成的延迟,如果把它当成编码器和解码器比特流之间的缓存,在不影响视频质量的情况下,并将其设置得尽可能小的话,也能够降低延迟。还有,最好不要使用视频MJPEG的视频压缩格式,至少使用不带B帧的MPEG4视频压缩格式,最好使用像H.264baseline profile的编码。这样的话可以有效的降低延迟,因为它能够以更低的码率编码全帧率视频。
二、传输协议
简单来说,就是在服务端节点和节点之间尽量使用RTMP而非HLS协议进行传输,这样可以降低整体的传输延迟。如果终端用户使用RTMP来播放,尽量在靠近推流端的收流节点进行转码,这样传输的视频流要比原始视频流更小。此外,如果有必要,可以使用定制的UDP协议来替换TCP协议,省去弱网环节下的丢包重传也可以降低延迟。
三、传输网络
在直播系统源码开发过程中,于服务器节点中缓存当前GOP,并配合播放端优化视频首开时间。还可以让服务端实时记录每个视频流流向每个环节时的秒级帧率和码率,用于实时监控码率和帧率的波动,然后针对此情况进行技术调节即可。
四、推流、播放优化
播放端缓存控制对于视频的首开延迟也有较大影响,如果仅优化首开延迟,可以在零缓存情况下在数据到达的时候立即解码。但如果在弱网环境下为了消除网络抖动造成的影响,那么设置一定的缓存也有必要,因此需要在直播的稳定性和首开延迟优化上找到平衡,从而调整优化缓冲区大小值。除了动态调整buffer大小的策略之外,也可以利用实时监测的网络信息来动态调整播放过程中的码率,在网络带宽不足的情况下降低码率进行播放,减少延迟。
以上就是在直播系统源码开发中,针对延迟方面,在技术层面所能做的优化。如果您对直播系统开发感兴趣的话,欢迎咨询官方客服。