@@ -291,13 +291,13 @@ const qualityLevels = (player, options) => {
291291 } ;
292292
293293 // Audio track handling
294- const addAudioTrackVideojs = track => {
295- var vjsTrack = new videojs . AudioTrack ( {
294+ const addAudioTrackVideojs = ( track , hls ) => {
295+ const vjsTrack = new videojs . AudioTrack ( {
296296 id : `${ track . type } -id_${ track . id } -groupId_${ track . groupId } -${ track . name } ` ,
297297 kind : 'translation' ,
298298 label : track . name ,
299299 language : track . lang ,
300- enabled : track . enabled ,
300+ enabled : hls . audioTrack === hls . audioTracks . indexOf ( track ) ,
301301 default : track . default
302302 } ) ;
303303
@@ -315,7 +315,7 @@ const qualityLevels = (player, options) => {
315315 const hls = tech . sourceHandler_ . hls ;
316316 const len = hls . audioTracks . length ;
317317 for ( let i = 0 ; i < len ; i ++ ) {
318- addAudioTrackVideojs ( hls . audioTracks [ i ] ) ;
318+ addAudioTrackVideojs ( hls . audioTracks [ i ] , hls ) ;
319319 }
320320 }
321321
@@ -354,11 +354,20 @@ const qualityLevels = (player, options) => {
354354 tech . sourceHandler_ . hls != null
355355 ) {
356356 const hls = tech . sourceHandler_ . hls ;
357- hls . on ( Hls . Events . MANIFEST_LOADED , ( eventName , data ) => {
357+
358+ const manifestLoadedHandler = ( eventName , data ) => {
358359 debugLog ( `HLS event: ${ eventName } ` , data ) ;
359360 populateLevels ( hls . levels , 'hls' ) ;
360361 initAudioTrackInfo ( ) ;
361- } ) ;
362+ hls . off ( Hls . Events . MANIFEST_LOADED , manifestLoadedHandler ) ;
363+ } ;
364+
365+ // If manifest is already loaded, populate levels immediately.
366+ if ( hls . levels && hls . levels . length > 0 ) {
367+ manifestLoadedHandler ( 'MANUAL_MANIFEST_LOADED' , { } ) ;
368+ } else {
369+ hls . on ( Hls . Events . MANIFEST_LOADED , manifestLoadedHandler ) ;
370+ }
362371
363372 hls . on ( Hls . Events . LEVEL_SWITCHED , ( eventName , data ) => {
364373 debugLog ( `HLS event: ${ eventName } ` , data ) ;
0 commit comments