fix(plex): subtitles survive hls.js and a remounted track
hls.js emptied the cues of every text track on the element when a manifest loaded or the media attached, our own <track> included, so a VTT that loaded first showed nothing for the session; its subtitle and caption controllers are no longer built. A remounted default <track> was switched to showing by the browser after the hide had run, drawing the cues natively under ours; the hide now follows every added track and mode change.
This commit is contained in:
@@ -12,7 +12,19 @@ export function createHlsPort(handlers: HlsHandlers): HlsPort | null {
|
||||
// up with the live-edge timeline → 0 fragments load → a permanent stall. But the seek-restart model
|
||||
// means fragment 0 IS the requested content position (`?t=` positioned the server ffmpeg there),
|
||||
// so it always starts VOD-style at 0 and buffers forward up to maxBufferLength.
|
||||
const hls = new Hls({ maxBufferLength: 30, enableWorker: true, startPosition: 0 });
|
||||
//
|
||||
// No subtitle or caption controllers (a controller left unset is never built): the subtitles are
|
||||
// a <track> of ours, out of band, and hls.js empties the cues of EVERY text track on the element
|
||||
// when a manifest loads or the media attaches/detaches — ours included, so a VTT that loaded before
|
||||
// the manifest showed nothing for the rest of the session.
|
||||
const hls = new Hls({
|
||||
maxBufferLength: 30,
|
||||
enableWorker: true,
|
||||
startPosition: 0,
|
||||
subtitleTrackController: undefined,
|
||||
subtitleStreamController: undefined,
|
||||
timelineController: undefined,
|
||||
});
|
||||
hls.on(Hls.Events.MANIFEST_PARSED, () => handlers.onManifestParsed());
|
||||
hls.on(Hls.Events.AUDIO_TRACKS_UPDATED, () => handlers.onAudioTracksUpdated());
|
||||
// The delivered bitrate is measured per fragment: the master playlist's own BANDWIDTH is not a
|
||||
|
||||
Reference in New Issue
Block a user