diff --git a/packages/core/src/dom/media/hls/metadata-tracks.ts b/packages/core/src/dom/media/hls/metadata-tracks.ts index 2c79060f..f2759a65 100644 --- a/packages/core/src/dom/media/hls/metadata-tracks.ts +++ b/packages/core/src/dom/media/hls/metadata-tracks.ts @@ -37,16 +37,16 @@ export function HlsJsMediaMetadataTracksMixin { - trackEl.setAttribute('src', src); - }, 0); + // Only reset the track if it was loaded before and had no cues. + if (src && trackEl.readyState === TRACK_LOADED && !track.cues?.length) { + const clonedTrackEl = trackEl.cloneNode() as HTMLTrackElement; + target.replaceChild(clonedTrackEl, trackEl); } - if (trackEl?.default && track.mode !== 'hidden') { - track.mode = 'hidden'; + // Force mode to 'hidden' for default tracks (independent of replacement). + const currentTrackEl = target.querySelector(selector) as HTMLTrackElement | null; + if (currentTrackEl?.default && currentTrackEl.track.mode !== 'hidden') { + currentTrackEl.track.mode = 'hidden'; } }); }