fix(player): refresh caption track state

This commit is contained in:
XZH 2026-08-28 16:34:48 -07:00
parent 57f1310bd4
commit fb38584a8f

View File

@ -958,7 +958,6 @@ if (player.share) player.share(shareOptions);
(function initCaptionLoading() { (function initCaptionLoading() {
const tracks = player.textTracks(); const tracks = player.textTracks();
let preferredTrackSelected = false; let preferredTrackSelected = false;
let captionTrackShowing = false;
let prefetchStarted = false; let prefetchStarted = false;
function prefetchCaptionSource() { function prefetchCaptionSource() {
@ -973,6 +972,7 @@ if (player.share) player.share(shareOptions);
function initializeCaptionTracks() { function initializeCaptionTracks() {
let firstCaptionTrack = null; let firstCaptionTrack = null;
let anyTrackShowing = false;
for (let i = 0; i < tracks.length; i++) { for (let i = 0; i < tracks.length; i++) {
const track = tracks[i]; const track = tracks[i];
@ -980,7 +980,7 @@ if (player.share) player.share(shareOptions);
if (!firstCaptionTrack) firstCaptionTrack = track; if (!firstCaptionTrack) firstCaptionTrack = track;
if (track.mode === 'showing') { if (track.mode === 'showing') {
captionTrackShowing = true; anyTrackShowing = true;
preferredTrackSelected = preferredTrackSelected || preferredTrackSelected = preferredTrackSelected ||
player_data.preferred_caption_found; player_data.preferred_caption_found;
} }
@ -989,7 +989,7 @@ if (player.share) player.share(shareOptions);
if (player_data.preferred_caption_found && !preferredTrackSelected && firstCaptionTrack) { if (player_data.preferred_caption_found && !preferredTrackSelected && firstCaptionTrack) {
preferredTrackSelected = true; preferredTrackSelected = true;
firstCaptionTrack.mode = 'showing'; firstCaptionTrack.mode = 'showing';
} else if (!captionTrackShowing && !prefetchStarted && caption_track_sources.length > 0) { } else if (!anyTrackShowing && !prefetchStarted && caption_track_sources.length > 0) {
prefetchStarted = true; prefetchStarted = true;
prefetchCaptionSource(); prefetchCaptionSource();
} }