一对一社交源码作为开发过程中的“基础成员”,不仅开发搭建需要用到它,而且在解决延时和卡顿方面出现的问题也会用到它。虽然源码看起来并不起眼,但是系统搭建起来,再到后期app功能的实现都少不了源码“出力”。当然,如果源码的质量不高,那么后期的app成品在运行方面效果也不会太好。所以,优质的源码可以解决很多问题,接下来就跟大家简单分享一下延时卡顿方面的问题。
先来科普一下相关的基础知识,关于I帧、B帧、P帧的知识。
I帧:表示关键帧,解码时只需要本帧数据就可以完成。
B帧:表示双向差别帧,B帧记录的是本帧与前后帧的差别。换句话说,要解码B帧,不仅需要取得之前的缓存画面,还要解码之后的画面,通过前后画面的与本帧数据的叠加取得最终画面。但是编解码时会比较耗费CPU,而且在直播中可能会增加直播延时,所以在移动端一般不使用B帧。
P帧:表示这一帧和之前关键帧的差别。解码时需要用到之前缓存的画面叠加上本帧定义的差别,生成最终画面。
对于直播来讲,延时是非常需要注意的问题之一。那么为了减少直播的延时,通常在编码时不使用B帧。P帧B帧对于I帧都有着直接或者间接的依赖关系,所以播放器要解码一个视频帧序列并且进行播放,就必须先解码出I帧,然后B帧和P帧才能进行解码。所以在服务端进行关键帧的缓存,对直播的延时和其他方面都有着很大的影响。通常可以按照业务需求缓存帧序列,保持在缓存中存储至少两个及以上的关键帧,从而应对低延时、防卡顿等需求。
一般我们在分析一个直播app的好与坏,延时和卡顿是首要关注的两项指标。从理论上来讲,如果需要低延时,那么服务器端和播放器端的缓冲区都必须更短。而来自网络的异常抖动通常会容易引起卡顿,当业务可以接受较高的延时,服务端和播放端都可以有较长的缓冲区从而应对来自网络的抖动,从而提供更加流畅的直播体验。对于网络环境好的用户,这两项指标是可以同时保证的,但是对于网络环境不好的用户,又该如何解决延时和卡顿的问题呢?
可以从以下两个方面来进行优化:
1.服务端提供灵活的配置策略,对于延时要求比较敏感的,可以在服务端保证关键帧的情况下,对每个连接维持一个较小的缓冲队列。对卡顿要求较高的直播场景,可以适当增加缓冲队列的长度,来保证直播播放的流畅性。
2.可以对所有连接的网络情况进行一个智能检测,当网络状况良好时,服务端会缩小缓冲队列的大小,从而降低延迟。当网络状况较差时,服务端会增加缓冲队列的长度并且优先保证直播播放的流畅性。
以上就是一对一社交源码在开发过程中解决延时和卡顿问题的小技巧,这也是我们经常提到的“一分价钱一分货”,优质的源码构建成的直播系统肯定出现问题的频率也比较少,所以在源码的选择上优先去选择优质源码还是十分必要的。
文章转自:https://my.oschina.net/u/4069211/blog/3003893
网友评论