Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
Tairr opened this issue Jan 11, 2018 · 9 comments

Comments

@Tairr
Copy link

Tairr commented Jan 11, 2018

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

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

感谢!...

@Tairr
Copy link
Author

Tairr commented Jan 11, 2018

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

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

@byteman
Copy link

byteman commented Jan 16, 2018

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

@hengwangm
Copy link

hengwangm commented Jun 21, 2018

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

@Allenisme
Copy link

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

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

@fancyluo88
Copy link

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

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

@QwQ20
Copy link

QwQ20 commented Nov 20, 2019

` 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)
}`

@891294527
Copy link

可以直接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
}
})

@QwQ20
Copy link

QwQ20 commented Apr 15, 2021 via email

@shady-xia
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants