什么样的视频直播系统才能算得上优秀呢?因人而异,喜好不同,对于网络视频直播系统的评判标准也各不相同。但是相信大家对于网络视频直播系统性能的判定标准会是一致的。即直播中的延迟、卡顿和首屏耗时,这三点是直接影响用户体验的。
针对于这三点来讲,通过怎样的优化方案可以使网络视频直播系统更加符合用户的直播需求呢?我们认为主要有以下三个方面。
1.服务端优化
在直播服器中,设置一个cache来存放GOP用于客户端播放。直播服务器缓存当前的GOP序列,当播放端请求相关数据时,CDN会从I帧返回到客户端,从而保证客户端能够快速的获取I帧进行显示。由于缓存的是之前的视频信息,所以当音频数据到达播放端之后,为保证音视频同步,播放器会对视频进行快进处理。
2.视频优化
如果只是想要优化网络视频直播系统的首开延迟,那么就可以借助在视频帧之间插入较多关键帧的方法。这样一来,客户端收到视频流之后,就可以尽快的进行解码。但是如果想要优化传输过程中的累计延迟,那么就需要尽可能的避免使用关键帧,避免GOP变大。在保障同等视频质量的情况下,i帧(关键帧)越大,码率就越大,传输过程中所需的网络带宽就会越高,从而导致累计延迟越大。虽然这个优化效果在秒级延迟的网络视频直播系统中并不是十分明显,但是在100ms甚至更低延迟的系统中会非常的明显。需要注意的是,在开发过程中要尽量使用ACC-LC Codec编码音频,虽然HE-ACC和 HE-ACC 2 的编码效率高,但是编码所需的时间相对较长。
3.减少花屏
在直播过程中,偶尔会遇到花屏的现象。这种现象产生的原因是丢帧造成的。举个例子,如果丢失了我们所说的关键帧,然后将p帧送去给ffmpeg解码得到的图像就会是花屏或者是马赛克。而且,在此传输过程中并没有用到b帧,整个传输过程中只有两种:一种是i帧,也就是关键帧,另一种则是p帧。
以上只是对网络视频直播系统的优化方案做出了简单分析。而在实际的直播开发过程中,只有将经常出现的延迟、卡顿和首屏耗时作为提升用户直播体验的重点,制定相应的解决方案,才能开发出优质的视频直播系统。
?
原文地址:https://www.cnblogs.com/qfjavabd/p/10938190.html