Как мгновенно приостановить видео (в javascript), когда нет активности?
Я работаю над несколькими потоковыми видео. Это работает таким образом, когда я переключаюсь на новую вкладку и остаюсь там в течение одной минуты, потоковое видео в предыдущей вкладке приостанавливается. Ниже приведен код, который делает это:
// If the live streaming videos get hidden for one minute, it get paused.
no.visibility': function() {
hiddenTimeout = setTimeout(function () {
let lens, hash;
for (hash in lenss) {
lens = lenss[hash];
if (lens.loaded && lens.player != undef) {
if (lens.player.isPlaying()) {
lens.player.pause();
}
if (lens.mjpeg_player != undef) {
lens.mjpeg_player.pause();
}
}
}
hiddenTimeout = undef;
}, 60000);
}
Внутри функции pause() у меня есть следующий код. Я полагаю (не уверен), что внутри кода паузы что-то не так, что не делает видео-паузу мгновенно (хотя появляется знак паузы).
pause: function() {
clearTimers();
if (instance.playing) {
if (instance.type == "video") {
if (
!("readyState " in video) ||
(video.currentTime > 0 &&
!video.paused &&
!video.ended &&
video.readyState > 2)
) {
if (hls != undef) {
hls.stopLoad();
}
video.pause();
}
}
playerState = 2;
}
target.dataset.mediaPlayback = "pause";
instance.trigger("pause").instance;
},
Постановка задачи:
Приведенный выше код, похоже, не останавливает видео немедленно. Знак паузы действительно появляется, но я все еще вижу, что в видео происходит некоторая активность с присутствием знака паузы. Через несколько минут видео останавливается.
Мне интересно, по каким причинам видео не останавливаются сразу. Что-то не так в коде?
Я полагаю, что что-то не так в функции pause(), которая не останавливает это немедленно. Это показывает знак паузы, но активность все еще присутствует.