flv.js icon indicating copy to clipboard operation
flv.js copied to clipboard

求助。隐藏浏览器页面时,直播视频自动暂停,重新打开页面播放进度滞后的问题

Open Tairr opened this issue 6 years ago • 9 comments

@xqq 遇到的情景类似 #206 ,不过原因似乎不一致,chrome://media-internals/ 下的日志如贴图: meida-internals-log 似乎是页面被遮挡后,会自动暂停视频,打开时恢复播放;

另,是否有根据id获取player的方法,因为页面创建了多个player,但是不知道怎么操作某个具体的元素....

感谢!...

Tairr avatar Jan 11 '18 01:01 Tairr

我目前的解决办法: 窗口隐藏(遮盖)时:player.show(false);恢复显示时:player.show(true); 如此,解决了恢复播放时进度滞后问题

为了操作player,把player放到了window里...

Tairr avatar Jan 11 '18 02:01 Tairr

可以直接video.currentTime设到buffered.end(0)附近

byteman avatar Jan 16 '18 05:01 byteman

我在谷歌浏览器也遇到这个问题. 当视频不在可视范围内,切换tab页面,直播就会自动暂停。document.addEventListener("visibilitychange").现在是监听这个属性。不知道是否有更好的解决办法

hengwangm avatar Jun 21 '18 06:06 hengwangm

可以直接video.currentTime设到buffered.end(0)附近

正好遇到这个问题,感谢!

Allenisme avatar Apr 28 '19 09:04 Allenisme

可以直接video.currentTime设到buffered.end(0)附近

在什么事件里执行这个呢?

fancyluo88 avatar Nov 11 '19 09:11 fancyluo88

` function visibilitychange () { var hidden; var visibilityChange; var visible; var state; if (typeof document.hidden !== "undefined") { hidden = "hidden"; visibilityChange = "visibilitychange"; visible = "visible"; state = 'visibilityState'; } else if (typeof document.mozHidden !== "undefined") { hidden = "mozHidden"; visibilityChange = "mozvisibilitychange"; visible = "mozVisibilityState"; state = 'mozVisibilityState'; } else if (typeof document.msHidden !== "undefined") { hidden = "msHidden"; visibilityChange = "msvisibilitychange"; visible = "msVisibilityState"; state = 'msVisibilityState'; } else if (typeof document.webkitHidden !== "undefined") { hidden = "webkitHidden"; visibilityChange = "webkitvisibilitychange"; visible = "webkitVisibilityState"; } //标签页切换媒体播放时间重置 document.addEventListener(visibilityChange, function() { if(document[state] === visible) { let videoEleObj = document.getElementsByTagName('video') for(let video in videoEleObj){ let buffered = videoEleObj[video].buffered; if(buffered && buffered.length > 0){ videoEleObj[video].currentTime = buffered.end(0) - 0.5 } } }else if(document[state] === hidden){

        }
    },false)
}`

QwQ20 avatar Nov 20 '19 06:11 QwQ20

可以直接video.currentTime设到buffered.end(0)附近

在什么事件里执行这个呢?

video.addEventListener('timeupdate', function () { const buffered = video.buffered.end(0) - 0.5 if (buffered - video.currentTime > 1) { video.currentTime = buffered } })

891294527 avatar Nov 05 '20 12:11 891294527

主要是为了严谨一点先判断有没有缓存,然后把他时间设置到缓存前一点点时间所以-0.5,如果直接设置到.end(0)他还需要去加载内容才能流畅继续播放

------------------ 原始邮件 ------------------ 发件人: "bilibili/flv.js" @.>; 发送时间: 2020年11月5日(星期四) 晚上8:02 @.>; @.@.>; 主题: Re: [bilibili/flv.js] 求助。隐藏浏览器页面时,直播视频自动暂停,重新打开页面播放进度滞后的问题 (#259)

可以直接video.currentTime设到buffered.end(0)附近

在什么事件里执行这个呢?

video.addEventListener('timeupdate', function () { const buffered = video.buffered.end(0) - 0.5 if (buffered - video.currentTime > 1) { video.currentTime = buffered } })

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or unsubscribe.

QwQ20 avatar Apr 15 '21 11:04 QwQ20

// 网页重新激活后,更新视频
window.onfocus = () => {
  let end = player.buffered.end(0) - 1;
  this.player.currentTime = end;
};

shady-xia avatar Jul 20 '22 06:07 shady-xia