Click on play, video plays immediately
What actually happened
Click on play, warnings {type: "mediaError", details: "bufferStalledError", fatal: false, buffer: 61.391667} spawn in console, video plays after 15 seconds. On Firefox. behavior is similar with this in the log: The video playback was aborted due to a corruption problem or because the video used features your browser did not support - NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005), although playback eventually starts.
This does not happen on OSX 10.12.6, only 10.13. These versions of Chrome and Firefox playback normally on 10.12.6 as well as Windows 10. It seems isolated to 10.13 only. I've tried baseline and main h264 3.1 and 4.1 live streams, the behavior is largely the same.
Chrome:
logger.js:37 [warn] > playback stalling in high buffer @0.038333
(anonymous) @ logger.js:37
_checkBuffer @ stream-controller.js:1503
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528 {type: "mediaError", details: "bufferStalledError", fatal: false, buffer: 61.391667}
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
_checkBuffer @ stream-controller.js:1504
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528 {type: "mediaError", details: "bufferNudgeOnStall", fatal: false}
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
_checkBuffer @ stream-controller.js:1515
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
logger.js:37 [warn] > playback stalling in high buffer @0.138333
(anonymous) @ logger.js:37
_checkBuffer @ stream-controller.js:1503
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528 {type: "mediaError", details: "bufferStalledError", fatal: false, buffer: 69.36666699999999}
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
_checkBuffer @ stream-controller.js:1504
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528 {type: "mediaError", details: "bufferNudgeOnStall", fatal: false}
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
_checkBuffer @ stream-controller.js:1515
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
logger.js:37 [warn] > playback stalling in high buffer @0.338333
(anonymous) @ logger.js:37
_checkBuffer @ stream-controller.js:1503
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528 {type: "mediaError", details: "bufferStalledError", fatal: false, buffer: 69.16666699999999}
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
_checkBuffer @ stream-controller.js:1504
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
logger.js:37 [error] > still stuck in high buffer @0.338333 after 3, raise fatal error
(anonymous) @ logger.js:37
_checkBuffer @ stream-controller.js:1517
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528 {type: "mediaError", details: "bufferStalledError", fatal: true}
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:528
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
_checkBuffer @ stream-controller.js:1518
doTick @ stream-controller.js:172
tick @ stream-controller.js:125
setInterval (async)
startLoad @ stream-controller.js:74
(anonymous) @ hls.js:178
startLoad @ hls.js:178
onManifestParsed @ stream-controller.js:898
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
onManifestLoaded @ level-controller.js:120
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadsuccess @ playlist-loader.js:530
readystatechange @ xhr-loader.js:117
XMLHttpRequest.send (async)
(anonymous) @ VM41:1
loadInternal @ xhr-loader.js:80
load @ xhr-loader.js:39
load @ playlist-loader.js:217
onManifestLoading @ playlist-loader.js:166
onEventGeneric @ event-handler.js:65
onEvent @ event-handler.js:53
EventEmitter.emit @ events.js:96
trigger @ hls.js:88
loadSource @ hls.js:173
loadStream @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:285
(anonymous) @ ?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined:258
logger.js:37 [warn] > playback not stuck anymore @0, after NaNms
Firefox:
[log] > loadSource:https://stream.ec.nau.edu/live/amlst:channelfour/playlist.m3u8 hls.js:125:7
[log] > trigger BUFFER_RESET hls.js:125:7
[log] > set autoLevelCapping:-1 hls.js:125:7
[log] > attachMedia hls.js:125:7
[log] > media source opened hls.js:125:7
[log] > manifest loaded,3 level(s) found, first bitrate:628000 logger.js:37:6
[log] > startLoad(-1) logger.js:37:6
[log] > switching to level 0 logger.js:37:6
[log] > loading playlist for level 0 logger.js:37:6
[log] > main stream:STOPPED->IDLE logger.js:37:6
[log] > audio tracks updated logger.js:37:6
[log] > subtitle tracks updated logger.js:37:6
[log] > live playlist, reload in 10290 ms logger.js:37:6
[log] > level 0 loaded [45455,45457],duration:31.099 logger.js:37:6
[log] > live playlist - first load, unknown sliding logger.js:37:6
[log] > configure startPosition to 0 logger.js:37:6
[log] > Loading 45455 of [45455 ,45457],level 0, currentTime:0.000,bufferEnd:0.000 logger.js:37:6
[log] > demuxing in webworker logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :1075us,count:1 demo:370:11
d378d9a6-ddba-a74f-8137-5b0713f948f4:516:7
[log] > Loaded 45455 of [45455 ,45457],level 0 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45455 of [45455 ,45457],level 0, cc 0 logger.js:37:6
[log] > main:discontinuity detected logger.js:37:6
[log] > main:switch detected logger.js:37:6
"[log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2" d378d9a6-ddba-a74f-8137-5b0713f948f4:516:7
[log] > parsed codec:mp4a.40.2,rate:48000,nb channel:2 d378d9a6-ddba-a74f-8137-5b0713f948f4:516:7
[log] > audio sampling rate : 48000 d378d9a6-ddba-a74f-8137-5b0713f948f4:516:7
[log] > InitPTS for cc:0 found from video track:-1352548840 logger.js:37:6
[log] > creating sourceBuffer(audio/mp4;codecs=mp4a.40.2) logger.js:37:6
[log] > creating sourceBuffer(video/mp4;codecs=avc1.4d001f) logger.js:37:6
[log] > main track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.2/mp4a.40.2] logger.js:37:6
[log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d001f/avc1.42801f] logger.js:37:6
[log] > Parsed audio,PTS:[0.052,11.252],DTS:[0.052/11.252],nb:525,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[0.034,11.279],DTS:[0.000/11.245],nb:337,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > target start position:0 logger.js:37:6
[log] > target start position not buffered, seek to buffered.start(0) 0.052333 logger.js:37:6
[log] > adjust currentTime from 0 to 0.052333 logger.js:37:6
[log] > main buffered : [0.052,11.252] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:206/746/68/13/9876 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > switching to level 2 logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > main stream:IDLE->WAITING_LEVEL logger.js:37:6
[log] > media seeking to 0.052 logger.js:37:6
Media resource blob:https://video-dev.github.io/0d408546-a119-0046-b480-ff6ea424d3be could not be decoded. demo
[log] > recoverMediaError logger.js:37:6
[log] > detachMedia logger.js:37:6
[log] > media source detaching logger.js:37:6
[log] > main stream:WAITING_LEVEL->STOPPED logger.js:37:6
[log] > attachMedia logger.js:37:6
The video playback was aborted due to a corruption problem or because the video used features your browser did not support - NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) demo:720:11
[log] > live playlist, reload in 10220 ms logger.js:37:6
[log] > level 2 loaded [45455,45457],duration:31.099 logger.js:37:6
[log] > live playlist - first load, unknown sliding logger.js:37:6
parsing level duration :1137us,count:2 demo:370:11
[log] > media source opened logger.js:37:6
[log] > startLoad(-1) logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > override startPosition with lastCurrentTime @0.052 logger.js:37:6
[log] > main stream:STOPPED->IDLE logger.js:37:6
[log] > switching to level 1 logger.js:37:6
[warn] > abort previous loader for type:level logger.js:37:6
[log] > loading playlist for level 1 logger.js:37:6
[log] > main stream:IDLE->WAITING_LEVEL logger.js:37:6
[log] > audio:override startPosition with lastCurrentTime @0.052 logger.js:37:6
[log] > audio stream:STOPPED->IDLE logger.js:37:6
[log] > audio stream:IDLE->STOPPED logger.js:37:6
[log] > audio:override startPosition with lastCurrentTime @0.052 logger.js:37:6
[log] > audio stream:STOPPED->IDLE logger.js:37:6
[log] > live playlist, reload in 10287 ms logger.js:37:6
[log] > level 1 loaded [45455,45457],duration:31.099 logger.js:37:6
[log] > live playlist - first load, unknown sliding logger.js:37:6
[log] > main stream:WAITING_LEVEL->IDLE logger.js:37:6
[log] > live playlist, switching playlist, unknown, load middle frag : 45457 logger.js:37:6
[log] > Loading 45457 of [45455 ,45457],level 1, currentTime:0.052,bufferEnd:0.052 logger.js:37:6
[log] > demuxing in webworker logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :820us,count:3 demo:370:11
b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > Loaded 45457 of [45455 ,45457],level 1 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45457 of [45455 ,45457],level 1, cc 0 logger.js:37:6
[log] > main:discontinuity detected logger.js:37:6
[log] > main:switch detected logger.js:37:6
"[log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2" b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > parsed codec:mp4a.40.2,rate:48000,nb channel:2 b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > audio sampling rate : 48000 b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > InitPTS for cc:0 found from video track:-1352551870 logger.js:37:6
[log] > creating sourceBuffer(audio/mp4;codecs=mp4a.40.2) logger.js:37:6
[log] > creating sourceBuffer(video/mp4;codecs=avc1.4d001f) logger.js:37:6
[log] > main track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.2/mp4a.40.2] logger.js:37:6
[log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d001f/avc1.42801f] logger.js:37:6
[log] > Parsed audio,PTS:[23.157,31.093],DTS:[23.157/31.093],nb:372,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[23.192,31.134],DTS:[23.158/31.101],nb:238,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [23.192,31.093] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:139/485/66/5/22798 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > target start position:0.052333 logger.js:37:6
[log] > adjust currentTime from 0 to 0.052333 logger.js:37:6
[log] > media seeking to 0.052 logger.js:37:6
[log] > Loading 45455 of [45455 ,45457],level 1, currentTime:0.052,bufferEnd:0.052 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
[log] > Loaded 45455 of [45455 ,45457],level 1 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45455 of [45455 ,45457],level 1, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[0.053,11.253],DTS:[0.053/11.253],nb:525,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[0.035,11.280],DTS:[0.001/11.246],nb:337,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,11.253][23.192,31.093] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:186/966/52/5/20897 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > switching to level 2 logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > main stream:IDLE->WAITING_LEVEL logger.js:37:6
[log] > live playlist, reload in 10295 ms logger.js:37:6
[log] > level 2 loaded [45455,45457],duration:31.099 logger.js:37:6
[log] > live playlist - first load, unknown sliding logger.js:37:6
[log] > main stream:WAITING_LEVEL->IDLE logger.js:37:6
[log] > live playlist, switching playlist, load frag with next SN: 45456 logger.js:37:6
[log] > Loading 45456 of [45455 ,45457],level 2, currentTime:0.052,bufferEnd:11.253 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :679us,count:4 demo:370:11
[log] > media seeked to 0.052 logger.js:37:6
[log] > Loaded 45456 of [45455 ,45457],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45456 of [45455 ,45457],level 2, cc 0 logger.js:37:6
[log] > main:switch detected logger.js:37:6
"[log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2" b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > parsed codec:mp4a.40.2,rate:48000,nb channel:2 b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > audio sampling rate : 48000 b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > main track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.2/mp4a.40.2] logger.js:37:6
[log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d001f/avc1.42801f] logger.js:37:6
[log] > Parsed audio,PTS:[11.253,23.157],DTS:[11.253/23.157],nb:558,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[11.280,23.192],DTS:[11.247/23.159],nb:357,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,31.093] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:185/1203/49/6/19848 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > Loading 45457 of [45455 ,45457],level 2, currentTime:0.052,bufferEnd:31.093 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
[log] > Loaded 45457 of [45455 ,45457],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45457 of [45455 ,45457],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[23.157,31.093],DTS:[23.157/31.093],nb:372,dropped:0 logger.js:37:6
[log] > Video/PTS/DTS adjusted: 23192/23159,delta:-1 ms b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > Parsed video,PTS:[23.192,31.134],DTS:[23.159/31.101],nb:238,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,31.093] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:145/1101/35/6/16181 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 9721 ms logger.js:37:6
[log] > level 2 loaded [45456,45458],duration:29.529000000000003 logger.js:37:6
[log] > live playlist sliding:11.253 logger.js:37:6
[log] > Updating mediasource duration to 40.782 logger.js:37:6
[log] > Loading 45458 of [45456 ,45458],level 2, currentTime:0.052,bufferEnd:31.093 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :580us,count:5 demo:370:11
[log] > Loaded 45458 of [45456 ,45458],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45458 of [45456 ,45458],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[31.093,40.821],DTS:[31.093/40.821],nb:456,dropped:0 logger.js:37:6
[log] > Video/PTS/DTS adjusted: 31133/31101,delta:-1 ms b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > Parsed video,PTS:[31.133,40.809],DTS:[31.101/40.776],nb:290,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,40.809] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:207/2834/63/5/8174 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 9001 ms logger.js:37:6
[log] > level 2 loaded [45457,45459],duration:27.329 logger.js:37:6
[log] > live playlist sliding:23.157 logger.js:37:6
[log] > Updating mediasource duration to 50.486 logger.js:37:6
[log] > Loading 45459 of [45457 ,45459],level 2, currentTime:0.052,bufferEnd:40.809 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :511us,count:6 demo:370:11
[log] > Loaded 45459 of [45457 ,45459],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45459 of [45457 ,45459],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[40.821,50.485],DTS:[40.821/50.485],nb:453,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[40.810,50.520],DTS:[40.776/50.486],nb:291,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,50.485] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:174/2393/57/4/10236 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 10332 ms logger.js:37:6
[log] > level 2 loaded [45458,45460],duration:31.233 logger.js:37:6
[log] > live playlist sliding:31.093 logger.js:37:6
[log] > Updating mediasource duration to 62.326 logger.js:37:6
[log] > Loading 45460 of [45458 ,45460],level 2, currentTime:1.271,bufferEnd:50.485 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :452us,count:7 demo:370:11
[log] > Loaded 45460 of [45458 ,45460],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45460 of [45458 ,45460],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[50.485,62.325],DTS:[50.485/62.325],nb:555,dropped:0 logger.js:37:6
[log] > Video/PTS/DTS adjusted: 50520/50486,delta:1 ms b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > Parsed video,PTS:[50.520,62.366],DTS:[50.486/62.332],nb:355,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,62.325] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:192/2361/59/6/11361 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 9754 ms logger.js:37:6
[log] > level 2 loaded [45459,45461],duration:29.497000000000003 logger.js:37:6
[log] > live playlist sliding:40.810 logger.js:37:6
[log] > Updating mediasource duration to 70.307 logger.js:37:6
[log] > Loading 45461 of [45459 ,45461],level 2, currentTime:1.271,bufferEnd:62.325 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :414us,count:8 demo:370:11
[log] > Loaded 45461 of [45459 ,45461],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45461 of [45459 ,45461],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[62.325,70.325],DTS:[62.325/70.325],nb:375,dropped:0 logger.js:37:6
[log] > Video/PTS/DTS adjusted: 62366/62332,delta:1 ms b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > Parsed video,PTS:[62.366,70.306],DTS:[62.332/70.273],nb:238,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,70.306] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:148/1691/45/4/11029 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 10131 ms logger.js:37:6
[log] > level 2 loaded [45460,45462],duration:30.631 logger.js:37:6
[log] > live playlist sliding:50.485 logger.js:37:6
[log] > Updating mediasource duration to 81.116 logger.js:37:6
[log] > Loading 45462 of [45460 ,45462],level 2, currentTime:1.271,bufferEnd:70.306 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :379us,count:9 demo:370:11
[log] > Loaded 45462 of [45460 ,45462],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45462 of [45460 ,45462],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[70.325,81.141],DTS:[70.325/81.141],nb:507,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[70.307,81.151],DTS:[70.273/81.118],nb:325,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,81.141] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:183/3317/66/5/8213 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 9281 ms logger.js:37:6
[log] > level 2 loaded [45461,45463],duration:28.061 logger.js:37:6
[log] > live playlist sliding:62.325 logger.js:37:6
[log] > Updating mediasource duration to 90.386 logger.js:37:6
[log] > Loading 45463 of [45461 ,45463],level 2, currentTime:1.271,bufferEnd:81.141 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :356us,count:10 demo:370:11
[log] > Loaded 45463 of [45461 ,45463],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45463 of [45461 ,45463],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[81.141,90.421],DTS:[81.141/90.421],nb:435,dropped:0 logger.js:37:6
[log] > Parsed video,PTS:[81.152,90.428],DTS:[81.118/90.395],nb:278,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,90.421] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:175/2260/58/4/10431 logger.js:37:6
[log] > main stream:PARSED->IDLE logger.js:37:6
[log] > loading playlist for level 2 logger.js:37:6
[log] > live playlist, reload in 9998 ms logger.js:37:6
[log] > level 2 loaded [45462,45464],duration:30.232000000000003 logger.js:37:6
[log] > live playlist sliding:70.307 logger.js:37:6
[log] > Updating mediasource duration to 100.539 logger.js:37:6
[log] > Loading 45464 of [45462 ,45464],level 2, currentTime:1.271,bufferEnd:90.421 logger.js:37:6
[log] > main stream:IDLE->FRAG_LOADING logger.js:37:6
parsing level duration :340us,count:11 demo:370:11
[log] > Loaded 45464 of [45462 ,45464],level 2 logger.js:37:6
[log] > main stream:FRAG_LOADING->PARSING logger.js:37:6
[log] > Parsing 45464 of [45462 ,45464],level 2, cc 0 logger.js:37:6
[log] > Parsed audio,PTS:[90.421,100.533],DTS:[90.421/100.533],nb:474,dropped:0 logger.js:37:6
[log] > Video/PTS/DTS adjusted: 90427/90395,delta:-1 ms b46ce2aa-340f-dd41-b36d-3b2edfc6caec:516:7
[log] > Parsed video,PTS:[90.427,100.538],DTS:[90.395/100.504],nb:303,dropped:0 logger.js:37:6
[log] > main stream:PARSING->PARSED logger.js:37:6
[log] > main buffered : [0.053,100.533] logger.js:37:6
[log] > latency/loading/parsing/append/kbps:164/1898/50/5/11751 logger.js:37:6
[log] > main stream:PARSED->IDLE
md5-c5caf6a7d0039626da1c7be1dae791f7
chrome://media-internals
{
"22:1": {
"id": "22:1",
"properties": {
"render_id": 22,
"player_id": 1,
"origin_url": "https://video-dev.github.io/",
"frame_url": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined",
"frame_title": "hls.js demo",
"url": "blob:https://video-dev.github.io/a79a9328-15cd-491b-904b-f9d56643968f",
"pipeline_state": "kStopped",
"found_audio_stream": true,
"audio_codec_name": "aac",
"found_video_stream": true,
"video_codec_name": "h264",
"seek_target": 0.338333,
"audio_dds": false,
"audio_decoder": "FFmpegAudioDecoder",
"video_dds": false,
"video_decoder": "GpuVideoDecoder",
"duration": 69.543333,
"event": "WEBMEDIAPLAYER_DESTROYED"
},
"allEvents": [
{
"time": 0,
"key": "origin_url",
"value": "https://video-dev.github.io/"
},
{
"time": 0.015000000013969839,
"key": "frame_url",
"value": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined"
},
{
"time": 0.02000000001862645,
"key": "frame_title",
"value": "hls.js demo"
},
{
"time": 0.18799999996554106,
"key": "url",
"value": "blob:https://video-dev.github.io/a79a9328-15cd-491b-904b-f9d56643968f"
},
{
"time": 33.896999999997206,
"key": "pipeline_state",
"value": "kStarting"
},
{
"time": 1058.8760000000475,
"key": "found_audio_stream",
"value": true
},
{
"time": 1058.8819999999832,
"key": "audio_codec_name",
"value": "aac"
},
{
"time": 1059.4479999999749,
"key": "found_video_stream",
"value": true
},
{
"time": 1059.4520000000484,
"key": "video_codec_name",
"value": "h264"
},
{
"time": 1073.1800000000512,
"key": "seek_target",
"value": 0.038333
},
{
"time": 1089.4440000000177,
"key": "audio_dds",
"value": false
},
{
"time": 1089.4500000000698,
"key": "audio_decoder",
"value": "FFmpegAudioDecoder"
},
{
"time": 1090.158000000054,
"key": "video_dds",
"value": false
},
{
"time": 1090.1620000000112,
"key": "video_decoder",
"value": "GpuVideoDecoder"
},
{
"time": 1090.2229999999981,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 1091.969999999972,
"key": "pipeline_state",
"value": "kSeeking"
},
{
"time": 1142.5439999999944,
"key": "duration",
"value": 30.531
},
{
"time": 3908.329000000027,
"key": "duration",
"value": 30.532
},
{
"time": 11331.859999999986,
"key": "duration",
"value": 40.936333
},
{
"time": 13081.925000000047,
"key": "duration",
"value": 40.943
},
{
"time": 23270.592999999993,
"key": "duration",
"value": 48.891333
},
{
"time": 24558.12699999998,
"key": "duration",
"value": 48.935333
},
{
"time": 34264.87699999998,
"key": "duration",
"value": 61.434333
},
{
"time": 36393.16000000003,
"key": "duration",
"value": 61.479333
},
{
"time": 44077.67300000007,
"key": "seek_target",
"value": 0.138333
},
{
"time": 44197.68599999999,
"key": "duration",
"value": 69.532333
},
{
"time": 45452.652,
"key": "duration",
"value": 69.543333
},
{
"time": 47173.23100000003,
"key": "seek_target",
"value": 0.338333
},
{
"time": 50276.986999999965,
"key": "pipeline_state",
"value": "kStopping"
},
{
"time": 50277.30000000005,
"key": "pipeline_state",
"value": "kStopped"
},
{
"time": 50277.38899999997,
"key": "event",
"value": "WEBMEDIAPLAYER_DESTROYED"
}
],
"lastRendered": 0,
"firstTimestamp_": 583234.279,
"destructed": true
},
"22:13": {
"id": "22:13",
"properties": {
"render_id": 22,
"player_id": 13,
"origin_url": "https://video-dev.github.io/",
"frame_url": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined",
"frame_title": "hls.js demo",
"url": "blob:https://video-dev.github.io/49126ac2-e0bd-4967-9844-f7cdc508738e",
"pipeline_state": "kPlaying",
"found_audio_stream": true,
"audio_codec_name": "aac",
"found_video_stream": true,
"video_codec_name": "h264",
"audio_dds": false,
"audio_decoder": "FFmpegAudioDecoder",
"video_dds": false,
"video_decoder": "GpuVideoDecoder",
"seek_target": 0.338333,
"duration": 61.195,
"audio_buffering_state": "BUFFERING_HAVE_ENOUGH",
"height": 720,
"width": 1280,
"video_buffering_state": "BUFFERING_HAVE_ENOUGH",
"pipeline_buffering_state": "BUFFERING_HAVE_ENOUGH",
"event": "PLAY"
},
"allEvents": [
{
"time": 0,
"key": "origin_url",
"value": "https://video-dev.github.io/"
},
{
"time": 0.006999999983236194,
"key": "frame_url",
"value": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fstream.ec.nau.edu%2Flive%2Famlst%3Achannelfour%2Fplaylist.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined"
},
{
"time": 0.010999999940395355,
"key": "frame_title",
"value": "hls.js demo"
},
{
"time": 0.10899999993853271,
"key": "url",
"value": "blob:https://video-dev.github.io/49126ac2-e0bd-4967-9844-f7cdc508738e"
},
{
"time": 0.15399999998044223,
"key": "pipeline_state",
"value": "kStarting"
},
{
"time": 1741.1049999999814,
"key": "found_audio_stream",
"value": true
},
{
"time": 1741.1110000000335,
"key": "audio_codec_name",
"value": "aac"
},
{
"time": 1741.3169999999227,
"key": "found_video_stream",
"value": true
},
{
"time": 1741.3209999999963,
"key": "video_codec_name",
"value": "h264"
},
{
"time": 1744.4679999999935,
"key": "audio_dds",
"value": false
},
{
"time": 1744.4789999999339,
"key": "audio_decoder",
"value": "FFmpegAudioDecoder"
},
{
"time": 1745.0169999999925,
"key": "video_dds",
"value": false
},
{
"time": 1745.0209999999497,
"key": "video_decoder",
"value": "GpuVideoDecoder"
},
{
"time": 1745.0529999999562,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 1767.3489999999292,
"key": "seek_target",
"value": 0.338333
},
{
"time": 1767.3969999999972,
"key": "pipeline_state",
"value": "kSeeking"
},
{
"time": 1749.3390000000363,
"key": "duration",
"value": 32.178333
},
{
"time": 6037.66399999999,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 6038.834000000032,
"key": "audio_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 6079.337999999989,
"key": "height",
"value": 720
},
{
"time": 6079.337999999989,
"key": "width",
"value": 1280
},
{
"time": 6082.020000000019,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 6082.640000000014,
"key": "pipeline_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 6082.753000000026,
"key": "event",
"value": "PLAY"
},
{
"time": 10732.197999999975,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 10732.647999999928,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 12516.48199999996,
"key": "duration",
"value": 40.114333
},
{
"time": 12950.488999999943,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 12951.51000000001,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 21775.910999999964,
"key": "duration",
"value": 51.085
},
{
"time": 31627.282999999938,
"key": "duration",
"value": 61.195
}
],
"lastRendered": 0,
"firstTimestamp_": 633520.748
}
}
We're seeing this same issue as well with sporadic videos. It isn't all of them. Investigating now.
I'm able to precisely reproduce the steps here as well.
Mac mini (Late 2014)
macOS 10.13 (17A365)
Chrome 61.0.3163.100 (Official Build) (64-bit)
Firefox ESR 52.3.0 (64-bit)
I'm happy to attach logs from the repro case spelled out here, but they're similar enough to be functionally identical - so I'll refrain from adding additional noise.
Same here . I can't share the stream in issue here, as it is paid content, but I would be happy to email it to the hls.js team. The stream was an akamai DVR live stream that is offline at the moment, which acts as if it is VOD. The content does not play and only throws the bufferstall error
This live stream seems to be much more reliable
http://ihoplive-f.akamaihd.net/i/ihopkc_tprhd@142185/master.m3u8?__b__=700&set-segment-duration=quality
Also VOD content seems to be reliable too
https://ihopvod-f.akamaihd.net/i/IHOP/593/227/170926-0600-TPR.mp4,,.csmil/index_0_av.m3u8
I've been testing with https://s3.amazonaws.com/videoteam-test-files/publictests/osx_vid/mbr/manifest_bad.m3u8 (note this is bad only on osx 10.13)
One way I've found to get it to play is by setting Hls.DefaultConfig.maxSeekHole to 0. There's some issue with performing a seek operation early on that causes the seek operation to stall entirely and never recover.
I'm not on High Sierra yet so I can't test these streams myself. But for anyone on it, are you experiencing these issues in older versions of Hlsjs? I'll start compiling a list of test streams. Please make sure your stream continues to be available publicly in North America so we can test it when free.
Ok, I'll be looking into this today.
Is not it a responsibility of Browser Vendors (Google, Mozilla, etc.) to provide a consistent behavior for different OS?
Also, It looks like a regression from Apple. We should consider opening a bug in their tracker after an investigation of the issue.
One other datapoint; in Chrome, if I disable Use hardware acceleration when available under chrome://settings -> advanced settings, then playback works correctly for the file I supplied. In my mind, this strongly implies the issue is somewhere in Apple's H.264 decoder implementation. @mangui suggested I ping https://github.com/jernoble on this.
@jernoble could you comment?
Can repro in Chrome, but not Firefox (developer edition). In FF 55 (regular version), I see a corrupt video error.
Stream: https://s3.amazonaws.com/videoteam-test-files/publictests/osx_vid/mbr/manifest_bad.m3u8
@jyavenard do you possibly have any insight into this issue? See above for details.
@jnoring
Duration:139.041087
Buffered:[0.014355,139.041087]
Seekable:[0,139.041087]
Played:
audio Buffered:[0,139.041087]
video Buffered:[0.014355,138.889354]
It probably has something to do with the buffered range not extending to the currentTime (0.000). No video samples exist for 0.000.
Edit: these are stats from Chrome while playing manifest_bad.m3u8
@jernoble I don't think so. The good file has identical timestamps (just a slightly different video payload), and plays back fine. (https://s3.amazonaws.com/videoteam-test-files/publictests/osx_vid/mbr/manifest_good.m3u8)
And what I see from the chrome stats are a seek operation that never completes on the bad manifest. The same operation _does_ complete on the good manifest.
Interesting. Well, the readyState seems to be stuck at 1 (HAVE_METADATA) and seeking is stuck at true, which is why I assumed it had to do with the video's buffered range. Seems like you should pull a Chrome engineer into the conversation before filing a bug with Apple about hardware video decode acceleration.
hls.js is seeking on buffered(0).start on loadedmetadata, so this is not expected to stall
On 10.13, using hls.js 0.6.1(http://streambox.fr/mse/hls.js-0.6.1/demo/), the streams posted here appear to be working without any console errors in Chrome 61.0.3163.100 (Official Build) (64-bit). Edit - I'm getting video stalls in Chrome as well on 0.6.1. Hopefully this is useful and doesn't just muddy the waters.
Firefox 55.0.3 (64-bit) is on shakier ground, although the errors change from a ton of InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable in 0.6.2+, to only a handful of Media resource blob:http://streambox.fr/4a7fa9b5-60d8-f245-adad-8f4f3544e920 could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_FATAL_ERR (0x806e0005) type errors in 0.6.1. If the video starts to play in Firefox, it eventually stalls while the audio continues.
@fuzzynectarine I can confirm it works in 0.6.1, but that the audio is way out of sync. It starts about half a second before the video begins. Seems to be another clue.
@johnBartos I think I'm having better luck in both browsers with 0.5.52.
@fuzzynectarine Interesting. That version is a bit before my time but I'll try to diff the behavior between that and 0.8.4
I can confirm that the "seek to buffered.start" operation is what's causing the issue. Removing this line allows playback to start.
Update: It seems to be a timing issue. Breaking right before the seek allows the stream to begin playback. Resuming execution after playback has begun does not break the video.
Update 2: Waiting until media.readyState > 1 to seek fixes the issue.
It sounds like the Apple H264 decoder is errorring when not enough data is provided.
This would be a regression in high sierra. And unfortunately not the first.
Until beta 4 we saw major regression.
I'll confirm tomorrow if I can get my hand on such machine.
And report à bug to Apple if required.
tks @jyavenard
by sake of curiosity, if anybody could check https://github.com/video-dev/hls.js/pull/1376 against 10.13 with https://s3.amazonaws.com/videoteam-test-files/publictests/osx_vid/mbr/manifest_bad.m3u8
@mangui I'll give it a go
Confirmed in Chrome 61 with High Sierra using with video.src = mp4; video.load(); video.play(); and setting currentTime on "durationchange" or "loadedmetadata". It's intermittent - maybe 1/10 - but definitely new since I just started using High Sierra today and saw this while working on a video player test case that switched out media element src's and seeks. The video tag was in this state:
video.networkSate: 1 IDLEvideo.readyState: 1 HAVE_METADATAvideo.seeking: 1video.paused: falsevideo.duration: 52video.buffered.end(0): 52video.currentTime: 18video.videoWidth: 722In this state, setting currentTime and calling play() or pause() and play() has no effect. The only way to clear this state is to call video.load() to empty the tag and start again.
And in Safari?
@jyavenard I am not able to reproduce the issue in Safari 11 or Firefox 55.0.3 (upgrading to 56 to give it a try). Maybe I can make a standalone test for Chrome 61. It's easy enough to reproduce in jwplayer, and deferring seeking until "loadeddata" when readyState reaches 2 seems to do the trick.
Can't reproduce it in Firefox, only in Chrome.
In the console (Chrome)I can see messages about reaching EOS
The first stream i get at the start is the 426x240 which isn't HW accelerated (test on a mac book air mid-2012)
It then switches to 720p stream, which can be HW accerated.
@mangui is there a way to force the stream to be 720p?
The file I supplied reproduces in Safari, Chrome and Firefox (https://s3.amazonaws.com/videoteam-test-files/publictests/osx_vid/mbr/manifest_bad.m3u8) - it does not reproduce on newer versions of FF, which from what I understand have an automatic fallback to software decoding.
Is there any reasonable workaround to this? At this point I've taken to disabling HLS on 10.13/Chrome/Firefox.
@jnoring if you have issues with all browsers at this stage, I would question more the validity of the stream.
@jyavenard if that's true, then how do you explain https://s3.amazonaws.com/videoteam-test-files/publictests/osx_vid/mbr/manifest_bad.m3u8 ?
Also I ran that stream through apple's mediastreamvalidator tool, and I see no significant issues flagged. To me it's really obvious that there's some issue with hls.js and/or Apple's H.264 decoder on 10.13 It isn't clear to me how you've concluded this is working correctly.
We see that issue also, will come back with the data we find
I'm going to submit a bug to Chrome today
you can check a workaround here : http://streambox.fr/mse/align/demo/
feedback welcome as it will not fix issue with separate audio tracks
Ok... here's what I found out. First of all... the workaround provided by @mangui doesn't help. I don't think it has a direct connection with the initial seeking.
I found out that this issue doesn't happen on all Macs updated to High Sierra. It depends on the hardware (e.g. Mac Mini with Intel graphics has issues while iMac with AMD graphics doesn't). I believe that this issue is somehow related with the Intel HW h264 decoder on High Sierra.
Additionally I found out that this issue only appears on the lowest quality level of our streams. By doing some comparison I believe that this issue depends on the H264 codec level used. Our low quality stream uses level 1.3. All other streams have levels 2.1 and above. I also checked the "bad manifest" posted here... it uses level 1.3. The "good manifest" uses level 3.
I think this needs to be reported to Apple. There seems to be an issue in the HW decoder implementation.
Then again... we also have some low quality streams with level 1.3 that work without any issues. Which means there is something more to it. The difference is Baseline 1.3 (works) compared to Main 1.3 (doesn't work). The "bad manifest" is High 1.3 which also doesn't work. All streams have the resolution 320x240. But there are of course many differences in more specific codec settings between them (e.g. working stream has CABAC disabled, other two have CABAC enabled).
@mikrohard Chrome under some circumstances will use ffmpeg to decode, and if the stream can be hardware decoded it will use the Apple VideoToolbox decoder.
The issue appears to be related to the use of the Apple VT decoder.
Apple VT doesn't supports HW acceleration for video with a height <= 240px. It which case, ffmpeg will be used.
What you're seeing for low bitrate video is likely related to that
Well... if I disable HW acceleration in Chrome, everything works perfectly. I'm pretty sure that HW decoder is causing the issues here.
I have two identical Mac Minis (Late 2014). One on Sierra and the other on High Sierra. On Sierra everything works perfectly. On High Sierra some 240p streams cause playback to get stuck at start if HW acceleration is enabled in Chrome. If I disable HW acceleration in Chrome the issue disappears.
Another update. The @mangui workaound version on http://streambox.fr/mse/align/demo/ does indeed fix the problem (tested with the streams posted here).
I still need to check why it doesn't always work for our streams.
We use dynamically generated LIVE HLS streams. Which means that segments are generated on-the-fly based on the time the URL is requested the first time. And with the workaround branch of @mangui it does start playing sometimes but not always (I would say its 50:50). Without this workaround it never starts playing. This is the reason why I first thought that his workaround doesn't work at all.
My issue with video failing to play in hls.js in Firefox was resolved with an update to 52.4.1 (ESR).
The release notes (https://www.mozilla.org/en-US/firefox/52.4.1/releasenotes/) even call out "Fixed a crash when playing videos on macOS 10.13".
@mikrohard Thanks for the research, it's very helpful.
I think this needs to be reported to Apple.
I agree. I forgot to submit the Chrome bug yesterday so I'll do both today.
@VerilyPete That's great 👍 Pointing to FF's fix should help getting it resolved in other browsers
make maxSeekHole to 0 will solve the issue.
@johnBartos there’s no “fix” in Firefox for this issue. The change on Firefox ESR 52 was related to updating the sandbox settings to allow for a new apple’s system call for the audio decoding framework.
Firefox runs its code in a sandbox that limits what the application has access to. Audio decoding no longer worked in 10.13.
@jyavenard Thanks for the clarification. Can you point me to any docs on how FF's media stack works? Would like to have more in depth knowledge of it.
@ranjan000 That'd work if you can ensure that your streams will not have holes; otherwise, any small gap will freeze playback.
Looks like it's fixed in Chrome 62: https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fs3.amazonaws.com%2Fvideoteam-test-files%2Fpublictests%2Fosx_vid%2Fmbr%2Fmanifest_bad.m3u8&enableStreaming=true&autoRecoverError=true&enableWorker=true&dumpfMP4=false&levelCapping=-1&defaultAudioCodec=undefined
I think this is the bugfix: https://chromium.googlesource.com/chromium/src/+/8e297cef04c45ec224334d11717f02daa11633ca
And the bug report: https://bugs.chromium.org/p/chromium/issues/detail?id=767037&desc=2
Can someone else please verify?
It certainly sounds like it.
Great. Closing this out. Thanks for the help everyone.
I am on 66 on High Sierra. Still not working. Media source and hls.js not supported. I am guessing in Safari it is working but it is falling back on its own hls support like in the iphone.
Most helpful comment
One other datapoint; in Chrome, if I disable
Use hardware acceleration when availableunder chrome://settings -> advanced settings, then playback works correctly for the file I supplied. In my mind, this strongly implies the issue is somewhere in Apple's H.264 decoder implementation. @mangui suggested I ping https://github.com/jernoble on this.