Update css/player-base.js
This commit is contained in:
parent
3a5304644a
commit
a7126dbe73
@ -2,7 +2,7 @@
|
|||||||
var _yt_player = videojs;
|
var _yt_player = videojs;
|
||||||
|
|
||||||
var versionclient = "youtube.player.web_20250917_22_RC00"
|
var versionclient = "youtube.player.web_20250917_22_RC00"
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
// video.js 8 init - source can be seen in https://poketube.fun/static/vjs.min.js or the vjs.min.js file
|
// video.js 8 init - source can be seen in https://poketube.fun/static/vjs.min.js or the vjs.min.js file
|
||||||
const video = videojs('video', {
|
const video = videojs('video', {
|
||||||
@ -55,6 +55,11 @@ var versionclient = "youtube.player.web_20250917_22_RC00"
|
|||||||
let prevAudioMuted = false;
|
let prevAudioMuted = false;
|
||||||
let pendingUnmute = false;
|
let pendingUnmute = false;
|
||||||
|
|
||||||
|
// FIX: seek heuristics (fast-pause vs keep-playing)
|
||||||
|
const SMALL_SEEK_SEC = 0.75; // under this, try not to pause if buffer is ready
|
||||||
|
const LARGE_SEEK_SEC = 1.75; // over this, pause immediately during seeking
|
||||||
|
let lastVTime = 0; // updated from timeupdate to estimate seek size
|
||||||
|
|
||||||
// turn OFF native loop so 'ended' fires and we control both tracks together
|
// turn OFF native loop so 'ended' fires and we control both tracks together
|
||||||
try { videoEl.loop = false; videoEl.removeAttribute?.('loop'); } catch {}
|
try { videoEl.loop = false; videoEl.removeAttribute?.('loop'); } catch {}
|
||||||
try { audio.loop = false; audio.removeAttribute?.('loop'); } catch {}
|
try { audio.loop = false; audio.removeAttribute?.('loop'); } catch {}
|
||||||
@ -215,14 +220,16 @@ var versionclient = "youtube.player.web_20250917_22_RC00"
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function pauseTogether() {
|
function pauseTogether(opts = {}) {
|
||||||
if (syncing || seekingActive) return;
|
const { force = false } = opts; // FIX: allow bypass during seeking for fast-pause
|
||||||
|
if (syncing || (seekingActive && !force)) return;
|
||||||
syncing = true;
|
syncing = true;
|
||||||
try {
|
try {
|
||||||
desiredPlaying = false; // remember intent
|
desiredPlaying = false; // remember intent
|
||||||
try { video.pause(); } catch {}
|
try { video.pause(); } catch {}
|
||||||
try { audio.pause(); } catch {}
|
try { audio.pause(); } catch {}
|
||||||
clearSyncLoop();
|
clearSyncLoop();
|
||||||
|
vIsPlaying = false; aIsPlaying = false;
|
||||||
} finally {
|
} finally {
|
||||||
syncing = false;
|
syncing = false;
|
||||||
}
|
}
|
||||||
@ -360,6 +367,14 @@ var versionclient = "youtube.player.web_20250917_22_RC00"
|
|||||||
video.on('playing', markVPlaying);
|
video.on('playing', markVPlaying);
|
||||||
audio.addEventListener('playing', markAPlaying);
|
audio.addEventListener('playing', markAPlaying);
|
||||||
|
|
||||||
|
// FIX: keep a rolling time so we can tell small vs big seeks
|
||||||
|
video.on('timeupdate', () => {
|
||||||
|
if (!seekingActive && !restarting) {
|
||||||
|
const vt = Number(video.currentTime());
|
||||||
|
if (isFinite(vt)) lastVTime = vt;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
const errorBox = document.getElementById('loopedIndicator');
|
const errorBox = document.getElementById('loopedIndicator');
|
||||||
video.on('error', () => {
|
video.on('error', () => {
|
||||||
const mediaError = video.error();
|
const mediaError = video.error();
|
||||||
@ -382,15 +397,29 @@ var versionclient = "youtube.player.web_20250917_22_RC00"
|
|||||||
if (restarting) return;
|
if (restarting) return;
|
||||||
seekingActive = true;
|
seekingActive = true;
|
||||||
seekToken++;
|
seekToken++;
|
||||||
wasPlayingBeforeSeek = desiredPlaying || !video.paused(); // remember intent
|
|
||||||
// stop sync + keep clocks close; pause audio to avoid drift audio glitches
|
// compute seek size vs last known time
|
||||||
try { audio.pause(); } catch {}
|
|
||||||
clearSyncLoop();
|
|
||||||
const vt = Number(video.currentTime());
|
const vt = Number(video.currentTime());
|
||||||
if (Math.abs(vt - Number(audio.currentTime)) > 0.1) safeSetCT(audio, vt);
|
const from = isFinite(lastVTime) ? lastVTime : vt;
|
||||||
vIsPlaying = false; aIsPlaying = false;
|
const delta = Math.abs(vt - from);
|
||||||
|
|
||||||
|
// decide whether to fast-pause:
|
||||||
|
const targetPlayable = bothPlayableAt(vt);
|
||||||
|
const shouldPauseFast = (delta >= LARGE_SEEK_SEC) || !targetPlayable;
|
||||||
|
|
||||||
|
wasPlayingBeforeSeek = desiredPlaying || !video.paused(); // remember intent
|
||||||
|
|
||||||
|
if (shouldPauseFast) {
|
||||||
|
// immediate coordinated pause, even during seeking
|
||||||
|
pauseTogether({ force: true });
|
||||||
|
vIsPlaying = false; aIsPlaying = false;
|
||||||
|
} else {
|
||||||
|
// small, buffered scrub: keep playing; just keep clocks tight
|
||||||
|
if (Math.abs(vt - Number(audio.currentTime)) > 0.05) safeSetCT(audio, vt);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// wait helper
|
||||||
const waitUntilPlayable = (t, timeoutMs = 1000) => new Promise(resolve => {
|
const waitUntilPlayable = (t, timeoutMs = 1000) => new Promise(resolve => {
|
||||||
const start = performance.now();
|
const start = performance.now();
|
||||||
const tick = () => {
|
const tick = () => {
|
||||||
@ -416,9 +445,13 @@ var versionclient = "youtube.player.web_20250917_22_RC00"
|
|||||||
if (myToken !== seekToken) return;
|
if (myToken !== seekToken) return;
|
||||||
|
|
||||||
seekingActive = false;
|
seekingActive = false;
|
||||||
|
|
||||||
// apply remembered intent
|
// apply remembered intent
|
||||||
if (wasPlayingBeforeSeek || desiredPlaying) playTogether({ allowMutedRetry: true });
|
if (wasPlayingBeforeSeek || desiredPlaying) {
|
||||||
else pauseTogether();
|
playTogether({ allowMutedRetry: true });
|
||||||
|
} else {
|
||||||
|
pauseTogether();
|
||||||
|
}
|
||||||
})().catch(()=>{ seekingActive = false; });
|
})().catch(()=>{ seekingActive = false; });
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -476,8 +509,6 @@ var versionclient = "youtube.player.web_20250917_22_RC00"
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// https://codeberg.org/ashley/poke/src/branch/main/src/libpoketube/libpoketube-youtubei-objects.json
|
// https://codeberg.org/ashley/poke/src/branch/main/src/libpoketube/libpoketube-youtubei-objects.json
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user