@@ -297,6 +297,18 @@ export function CapVideoPlayer({
297297 }
298298 } ;
299299
300+ // Ensure all caption tracks remain hidden
301+ const ensureTracksHidden = ( ) : void => {
302+ const tracks = Array . from ( video . textTracks ) ;
303+ for ( const track of tracks ) {
304+ if ( track . kind === "captions" || track . kind === "subtitles" ) {
305+ if ( track . mode !== "hidden" ) {
306+ track . mode = "hidden" ;
307+ }
308+ }
309+ }
310+ } ;
311+
300312 const handleLoadedMetadataWithTracks = ( ) => {
301313 setVideoLoaded ( true ) ;
302314 if ( ! hasPlayedOnce ) {
@@ -305,6 +317,11 @@ export function CapVideoPlayer({
305317 setupTracks ( ) ;
306318 } ;
307319
320+ // Monitor for track changes and ensure they stay hidden
321+ const handleTrackChange = ( ) => {
322+ ensureTracksHidden ( ) ;
323+ } ;
324+
308325 video . addEventListener ( "loadeddata" , handleLoadedData ) ;
309326 video . addEventListener ( "canplay" , handleCanPlay ) ;
310327 video . addEventListener ( "loadedmetadata" , handleLoadedMetadataWithTracks ) ;
@@ -313,6 +330,11 @@ export function CapVideoPlayer({
313330 video . addEventListener ( "error" , handleError as EventListener ) ;
314331 video . addEventListener ( "loadedmetadata" , handleLoadedMetadataWithTracks ) ;
315332
333+ // Add event listeners to monitor track changes
334+ video . textTracks . addEventListener ( "change" , handleTrackChange ) ;
335+ video . textTracks . addEventListener ( "addtrack" , handleTrackChange ) ;
336+ video . textTracks . addEventListener ( "removetrack" , handleTrackChange ) ;
337+
316338 if ( video . readyState === 4 ) {
317339 handleLoadedData ( ) ;
318340 }
@@ -341,6 +363,9 @@ export function CapVideoPlayer({
341363 "loadedmetadata" ,
342364 handleLoadedMetadataWithTracks ,
343365 ) ;
366+ video . textTracks . removeEventListener ( "change" , handleTrackChange ) ;
367+ video . textTracks . removeEventListener ( "addtrack" , handleTrackChange ) ;
368+ video . textTracks . removeEventListener ( "removetrack" , handleTrackChange ) ;
344369 if ( retryTimeout . current ) clearTimeout ( retryTimeout . current ) ;
345370 } ;
346371 }
@@ -355,6 +380,9 @@ export function CapVideoPlayer({
355380 "loadedmetadata" ,
356381 handleLoadedMetadataWithTracks ,
357382 ) ;
383+ video . textTracks . removeEventListener ( "change" , handleTrackChange ) ;
384+ video . textTracks . removeEventListener ( "addtrack" , handleTrackChange ) ;
385+ video . textTracks . removeEventListener ( "removetrack" , handleTrackChange ) ;
358386 if ( retryTimeout . current ) {
359387 clearTimeout ( retryTimeout . current ) ;
360388 }
@@ -462,7 +490,6 @@ export function CapVideoPlayer({
462490 kind = "captions"
463491 srcLang = "en"
464492 src = { captionsSrc }
465- default
466493 />
467494 </ MediaPlayerVideo >
468495 ) }
0 commit comments