直播系统源码为了减少直播的延迟,通常在编码时不使用B帧,P帧B帧对于I帧都有直接或间接的依赖关系,所以播放器要解码一个视频帧序列,并进行播放,必须首先解码出I帧,其后续的B帧和P帧才能进行解码,这样服务端如何进行关键帧的缓存,则对直播的延迟以及其他方面有非常大的影响。
一、直播系统源码延迟与卡顿的方案选择
直播的延迟与卡顿是分析直播业务质量时,非常关注的两项指标,然而,这两项指标从理论上来说,是一对矛盾的关系,需要更迭延迟,则表明服务器端和播放端的缓冲区都必须更短,来自网络的异常抖动容易引起卡顿;业务可以接受较高的延迟,服务端和播放端都可以有较长的缓冲区,以应对来自网络的抖动,提供更流畅的直播体验。所以我们需要在延迟与卡顿中选择一个折中的方案。
通常直播系统源码会选择这两种技术来平衡和优化这两个指标,服务端提供灵活的配置策略,对于延迟要求更敏感的,则在服务端保证关键帧的情况下,对每个连接维持一个较小的缓冲队列;对于卡顿要求更高的直播,则适当增加缓冲队列的长度,保证播放的流畅。服务端对所有连接的网络情况进行智能检测,当网络状况良好时,服务端会缩小该连接的缓冲队列的大小,降低延迟,而当网络状况较差时,特别是检测到抖动较为明显时,服务端对该连接增加缓冲队列长度,优先保证播放的流畅性。
二、直播系统源码丢包解决
什么时候会造成丢包?对于一个网络连接很好,延时也比较小的连接,丢包策略永远没有用武之地的。而网络连接比较差的用户,因为下载速度比较慢或者抖动比较大,这个用户的延时就会越来越高。另外一种情况是,如果直播流关键帧间隔比较长,那么在保证首包是关键帧的情况下,观看这个节目的观众,延迟有可能会达到一个关键帧序列的长度。上述两种情况,都需要启用丢包策略,来调整播放的延时。 丢包的解决方案: 一是正确判断何时需要进行丢包; 二是如何丢包以使得对观众的播放体验影响最小。较好的做法是在直播系统源码后端周期监控所有连接的缓冲队列的长度,这样队列长度与时间形成一个离散的函数关系,后端通过自研算法来分析这个离散函数,判断是否需要丢包。 所以在使用丢包策略的时候为了给用户更好的体,而应该是后台采用逐步丢帧的策略,每个视频帧序列,丢最后的一到两帧,使得用户的感知最小,平滑的逐步缩小延时的效果。
声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任m.yunbaokj.com