Fen*_* Yu 5 video google-chrome ffmpeg http-live-streaming hls.js
我网站的直播播放器使用hls.js。从我的服务器的统计数据来看,很多情况下玩家都会卡在缓冲范围的中间。
这是我的服务器原始统计日志(删除了一些无用的参数):
tm=2019-09-27 12:04:41`bufferLevel=8.447303999999974`currentTime=158.4`buffered=[6.024,166.832]`readyState=4`ua=Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/3.53.1153.400 QQBrowser/9.0.2524.400 Tencent AppMarket/4.8 GameCenter
Run Code Online (Sandbox Code Playgroud)
currentTime是通过以下方式获得的HTMLMediaElement.currentTime,并且缓冲是通过以下方式获得的HTMLMediaElement.buffered:
currentTime=158.4
buffered=[6.024,166.832]
readyState=4
Run Code Online (Sandbox Code Playgroud)
来自 W3c:
如果 HTMLMediaElement.buffered 包含一个 TimeRange,其中包含当前播放位置和足够的数据以确保不间断播放:
- 将 HTMLMediaElement.readyState 属性设置为 HAVE_ENOUGH_DATA。
- 如果之前因转换到 HAVE_CURRENT_DATA 而暂停播放,则此时可能会恢复播放。
在本例中,613.3在 的中间[469.277,677.612],视频应该正在播放,但事实并非如此。
Hls.js 将currentTime每隔 100 毫秒定期检查进度。如果currentTime1000 毫秒没有进展,那么 hls.js 将触发STALL事件,我将向服务器发送一个停顿统计信息。
我无法在我这边重现这个问题,它只出现在我的服务器统计数据上。
shaka播放器有一个模块检测这种情况(https://www.ellealcatrase.eu/player2/docs/api/lib_media_stall_detector.js.html),其评论显示:
某些平台/浏览器可能会卡在缓冲范围的中间(例如,在后台选项卡中查找时)。检测我们何时陷入困境,以便玩家可以做出响应。
但当我的浏览器位于后台选项卡时,我无法重现。
| 归档时间: |
|
| 查看次数: |
908 次 |
| 最近记录: |