直播疑难杂症排查— 拖动不准

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了直播疑难杂症排查— 拖动不准相关的知识,希望对你有一定的参考价值。

本文为 《直播疑难杂症排查》系列的第九篇文章,我们重点看看播放视频时拖动不准的问题。


1. 问题现象


播放过程中,拖动进度条后,实际播放的位置跟松开拖动时的位置相差很远。


2. 问题排查


由于直播流是实时产生和传输的,是不能拖动的,因此该问题主要出现在 “点播” 或者 “本地文件” 的播放。


2.1 基本概念


首先,我们要了解播放器拖动的基本原理:


视频是由一系列图像帧组成的,每一个帧都有对应的时间戳。拖动,就是告诉播放一个时间戳,由它直接跳转到指定的这一帧开始播放。


拖动到的时间点 = (进度条的 progress / 进度条最大值 100 )x 视频总时长


2.2 关键帧间隔太大


由于解码器必须从 I 帧开始解码,才不会出现花屏现象,因此,播放器通常会寻找离 seekTo 视频帧最近的一个关键帧,从该关键帧开始解码播放。


假设关键帧间隔(GOP)是 3s,那么关键帧的时间点排列如下:


0s, 3s, 6s, 9s


如果拖动到 4s 的位置,那么播放器就跳转到第 3s 的关键帧开始解码播放,因此,会产生一定的误差。


关键帧的间隔越大,那么这个误差也就越大。因此,为了更准确地支持拖动,建议不要把关键帧间隔设置得太大。


2.3 直播丢帧


丢帧的情况多发生在直播场景,由于主播端的网络抖动或者内存不足,导致不得不被迫丢掉一些视频帧,而为了保证客户端解码后不出现花屏,丢帧往往伴随着一整个 GOP 的丢弃。


当 GOP 丢失后,部分关键帧的间隔时间点就会变得更大了,从而导致拖动不准。


为了避免这种情况,建议推流端开启动态码率,在网络不好的时候,主动降低码率,快速发送掉缓冲区中累积的视频帧,从而减少丢帧的情况发生。


3. 小结


关于拖动不准的问题排查大致就介绍道这里了,有任何疑问欢迎来信 [email protected] 交流,另外,欢迎关注我的新浪微博 @卢_俊 或者 微信公众号 @Jhuster 获取最新的文章和资讯。

技术分享

本文出自 “Jhuster的专栏” 博客,请务必保留此出处http://ticktick.blog.51cto.com/823160/1934023

以上是关于直播疑难杂症排查— 拖动不准的主要内容,如果未能解决你的问题,请参考以下文章

如何解决直播过程中的直播功耗高问题 | 直播疑难杂症排查

直播疑难杂症排查(10)— 直播功耗高

直播疑难杂症排查— 首开慢

直播疑难杂症排查— 播放失败

直播疑难杂症排查 — 播放卡顿

直播疑难杂症排查— 延时高