diff --git a/receivers/electron/src/player/Renderer.ts b/receivers/electron/src/player/Renderer.ts index 234b1a8..94d3dd5 100644 --- a/receivers/electron/src/player/Renderer.ts +++ b/receivers/electron/src/player/Renderer.ts @@ -104,37 +104,6 @@ let lastPlayerUpdateGenerationTime = 0; let isLive = false; let isLivePosition = false; -// Dashjs workaround for playback stalling when captions are enabled and user scrubs video beyond the loaded buffer... -let playbackSeeking = false; -let lastSeekTimestamp = 0; -let lastSeekTime = 0; -let bufferStalled = false; - -function stallRecoveryCheck(dashPlayer, value) { - // Buffer could have loaded by now, but the player still might be in the stalled state - if (playbackSeeking) { - const lastSeekDelta = Math.abs(Date.now() - lastSeekTimestamp) - - if (lastSeekDelta < 5000) { - console.warn('Possible player stall, waiting 5 seconds after last seek...'); - window.setTimeout(() => { stallRecoveryCheck(dashPlayer, value); }, 5000 - lastSeekDelta); - } - else { - console.warn('Detected player stall, reloading video in attempt to unstall...'); - dashPlayer.initialize(videoElement, `data:${value.container};base64,` + window.btoa(value.content), true, lastSeekTime); - - playerPrevTime = 0; - lastPlayerUpdateGenerationTime = 0; - isLive = false; - isLivePosition = false; - - playbackSeeking = false; - lastSeekTimestamp = 0; - lastSeekTime = 0; - bufferStalled = false; - } - } -} window.electronAPI.onPlay((_event, value: PlayMessage) => { console.log("Handle play message renderer", JSON.stringify(value)); @@ -146,11 +115,6 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => { isLive = false; isLivePosition = false; - playbackSeeking = false; - lastSeekTimestamp = 0; - lastSeekTime = 0; - bufferStalled = false; - if (player) { if (player.getSource() === value.url) { if (value.time) { @@ -233,39 +197,6 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => { document.getElementById("subtitle-" + e.cueID)?.remove(); }); - // Dashjs workaround for playback stalling when captions are enabled and user scrubs video beyond the loaded buffer... - dashPlayer.on(dashjs.MediaPlayer.events.BUFFER_LEVEL_STATE_CHANGED, (e: any) => { - if (player.isCaptionsSupported()) { - if (e.state === 'bufferStalled') { - bufferStalled = true; - } - else if (e.state === 'bufferLoaded') { - bufferStalled = false; - } - - if (playbackSeeking && bufferStalled) { - window.setTimeout(() => { stallRecoveryCheck(dashPlayer, value); }, 5000); - } - } - }); - - dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_SEEKING, (e: any) => { - if (player.isCaptionsSupported()) { - playbackSeeking = true; - lastSeekTimestamp = Date.now(); - lastSeekTime = e.seekTime; - } - }); - - - dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_SEEKED, (e: any) => { - if (player.isCaptionsSupported()) { - playbackSeeking = false; - lastSeekTimestamp = 0; - lastSeekTime = 0; - } - }); - dashPlayer.updateSettings({ // debug: { // logLevel: dashjs.LogLevel.LOG_LEVEL_INFO