鼠标表示不背锅3分钟搞明白直播中拖动不
《直播疑难杂症排查》系列已经更新了8篇,我们为用户分析了视频直播过程中出现的问题,并一一作出排查。此次我们侧重于解决拖动不准的问题,以便给用户带来更好的操作体验。
继《直播技术详解》系列文章之后,我们推出了这个新的系列《直播疑难杂症排查》,把解决直播问题的经验逐步分享出来,同时也会穿插一些音视频开发的基础知识和优化经验,希望能够帮助到直播领域的开发者们。
本系列会涵盖的内容包括但不限于如下一些主题:
播放失败
直播卡顿
首开慢
延时高
音画不同步
马赛克严重
播放黑屏、花屏、绿屏
播放杂音、噪音、回声
点播拖动不准
直播发热问题
其他问题(待续)
本文为《直播疑难杂症排查》系列的第九篇文章,我们重点看看播放视频时拖动不准的问题。
问题现象
播放过程中,拖动进度条后,实际播放的位置跟松开拖动时的位置相差很远。
问题排查
由于直播流是实时产生和传输的,是不能拖动的,因此该问题主要出现在「点播」或者「本地文件」的播放。
基本概念
首先,我们要了解播放器拖动的基本原理:
视频是由一系列图像帧组成的,每一个帧都有对应的时间戳。拖动,就是告诉播放一个时间戳,由它直接跳转到指定的这一帧开始播放。
拖动到的时间点=(进度条的progress/进度条最大值)x视频总时长
关键帧间隔太大
由于解码器必须从I帧开始解码,才不会出现花屏现象,因此,播放器通常会寻找离seekTo视频帧最近的一个关键帧,从该关键帧开始解码播放。
假设关键帧间隔(GOP)是3s,那么关键帧的时间点排列如下:
0s,3s,6s,9s
如果拖动到4s的位置,那么播放器就跳转到第3s的关键帧开始解码播放,因此,会产生一定的误差。
关键帧的间隔越大,那么这个误差也就越大。因此,为了更准确地支持拖动,建议不要把关键帧间隔设置得太大。
直播丢帧
丢帧的情况多发生在直播场景,由于主播端的网络抖动或者内存不足,导致不得不被迫丢掉一些视频帧,而为了保证客户端解码后不出现花屏,丢帧往往伴随着一整个GOP的丢弃。
当GOP丢失后,部分关键帧的间隔时间点就会变得更大了,从而导致拖动不准。
为了避免这种情况,建议推流端开启动态码率,在网络不好的时候,主动降低码率,快速发送掉缓冲区中累积的视频帧,从而减少丢帧的情况发生。
(点击图片,查看活动详情)
预览时标签不可点收录于合集#个上一篇下一篇转载请注明:http://www.abuoumao.com/hyls/890.html