hls.js
hls.js copied to clipboard
Buffer append error when playing video + audio in fmp4
What version of Hls.js are you using?
v1.6.2
What browser (including version) are you using?
Version 136.0.7103.114 (Official Build) (arm64), Safari Version 17.5
What OS (including version) are you using?
mac sonoma 14.5
Test stream
https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcfvod.kaltura.com%2Fhls%2Fcontainer%2Ffmp4%2Fp%2F5182872%2Fsp%2F518287200%2FserveFlavor%2FentryId%2F1_utcle93o%2Fv%2F1%2C1%2Fev%2F7%2FflavorId%2F1_545fzio1%2C%2Fev%2F7%2FflavorId%2F1_2xalcyon%2C%2Fev%2F7%2FflavorId%2F1_qonq9oza%2C%2Fev%2F7%2FflavorId%2F1_0lis80ef%2C%2Fname%2Fa.mp4%2Findex.m3u8.urlset%2Fmaster.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
Configuration
{
"debug": true,
"enableWorker": true,
"lowLatencyMode": true,
"backBufferLength": 90
}
Additional player setup steps
Please note that the same stream using ts does play without any issues: https://cfvod.kaltura.com/hls/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1,1/ev/7/flavorId/1_545fzio1,/ev/7/flavorId/1_2xalcyon,/ev/7/flavorId/1_qonq9oza,/ev/7/flavorId/1_0lis80ef,/name/a.mp4/index.m3u8.urlset/master.m3u8
Another example stream with the same/similar issue: https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_ol7nd2ui/v/,11/ev/6/flavorId/1_k5m4h8oz,21/ev/6/flavorId/1_6c32aqlv,1/ev/6/flavorId/1_uza5x8r0,1/ev/6/flavorId/1_y5gqgnkn,/name/a.mp4/index.m3u8.urlset/master.m3u8
P.S: All the examples provided in this ticket are playbale whe pasting the stream URLs in safari or when opening the stream url in native iphone player.
Checklist
- [x] The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues
- [x] The issue occurs in the stable client (latest release) on https://hlsjs.video-dev.org/demo and not just on my page
- [x] The issue occurs in the latest client (main branch) on https://hlsjs-dev.video-dev.org/demo and not just on my page
- [x] The stream has correct Access-Control-Allow-Origin headers (CORS)
- [x] There are no network errors such as 404s in the browser console when trying to play the stream
Steps to reproduce
- Load the test stream
- You will sometimes get a buffer stalled error, and sometimes an endless loop
Expected behaviour
The media should play
What actually happened?
Player fails to load media
Console output
[log] > destroy
hls.ts:478 [log] > detachMedia
buffer-controller.ts:462 [log] > [buffer-controller]: media source detaching
main.js:350 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
logger.ts:102 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.6.2
hls.ts:575 [log] > stopLoad
hls.ts:509 [log] > loadSource:https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1,1/ev/7/flavorId/1_545fzio1,/ev/7/flavorId/1_2xalcyon,/ev/7/flavorId/1_qonq9oza,/ev/7/flavorId/1_0lis80ef,/name/a.mp4/index.m3u8.urlset/master.m3u8
stream-controller.ts:611 [log] > [stream-controller]: Trigger BUFFER_RESET
hls.ts:462 [log] > attachMedia
buffer-controller.ts:320 [log] > [buffer-controller]: created media source: MediaSource
buffer-controller.ts:1513 [log] > [buffer-controller]: Media source opened
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 0) {}
level-controller.ts:370 [log] > [level-controller]: manifest loaded, 2 level(s) found, first bitrate: 461702
buffer-controller.ts:266 [log] > [buffer-controller]: 2 bufferCodec event(s) expected.
abr-controller.ts:798 [log] > [abr]: picked start tier {"codecSet":"avc1,mp4a","videoRanges":["SDR"],"preferHDR":false,"minFramerate":25,"minBitrate":461702,"minIndex":0}
abr-controller.ts:958 [info] > [abr]: switch candidate:0->0 adjustedbw(500000)-bitrate=38298 ttfb:0.1 avgDuration:0.0 maxFetchDuration:4.0 fetchDuration:0.2 firstSelection:true codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:-1
playlist-loader.ts:405 [log] > auto startLoad with configured startPosition -1
hls.ts:552 [log] > startLoad(-1)
level-controller.ts:468 [log] > [level-controller]: Switching to level 0 (360p SDR avc1,mp4a @461702) from level -1
audio-track-controller.ts:187 [log] > [audio-track-controller]: Updating audio tracks, 2 track(s) found in group(s): audio0
audio-track-controller.ts:326 [log] > [audio-track-controller]: Switching to audio-track 0 "English" lang:en group:audio0 channels:2
base-stream-controller.ts:1919 [log] > [audio-stream-controller]: Reset loading state
level-controller.ts:673 [log] > [level-controller]: Loading level index 0 https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1/ev/7/flavorId/1_qonq9oza/name/a.mp4/index.m3u8/index-v1-a1.m3u8
base-stream-controller.ts:2093 [log] > [stream-controller]: STOPPED->IDLE
audio-track-controller.ts:421 [log] > [audio-track-controller]: Loading audio-track 0 "English" lang:en group:audio0 https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/11/ev/7/flavorId/1_545fzio1/name/a.mp4/index.m3u8/index-a1.m3u8
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: STOPPED->IDLE
stream-controller.ts:671 [log] > [stream-controller]: Level 0 loaded [1,78][part-78--1], cc [0, 0] duration:741.088
base-stream-controller.ts:1725 [log] > [stream-controller]: setting startPosition to 0 by default
interstitials-controller.ts:1056 [log] > [interstitials]: setSchedulePosition 0, undefined
interstitials-controller.ts:1842 [log] > [interstitials]: buffered to boundary [primary: 0.00-741.09]
interstitials-controller.ts:1294 [log] > [interstitials]: resuming [primary: 0.00-741.09]
buffer-controller.ts:1319 [log] > [buffer-controller]: Updating MediaSource duration to 741.088
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: initSegment of level 0 (frag:[0.000-0.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
audio-track-controller.ts:101 [log] > [audio-track-controller]: Audio track 0 "English" lang:en group:audio0 loaded [1-78]
audio-stream-controller.ts:550 [log] > [audio-stream-controller]: Audio track 0 "English" of "audio0" loaded [1,78][part-78--1],duration:741.081
base-stream-controller.ts:1725 [log] > [audio-stream-controller]: setting startPosition to 0 by default
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
base-stream-controller.ts:899 [log] > [audio-stream-controller]: Loading audio sn: initSegment of track 0 (frag:[0.000-0.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 1 of level 0 (frag:[0.000-2.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:899 [log] > [audio-stream-controller]: Loading audio sn: 1 of track 0 (frag:[0.000-2.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:88 [log] > injecting Web Worker for "audio"
audio-stream-controller.ts:677 [log] > [audio-stream-controller]: Unknown video PTS for cc 0, waiting for video PTS before demuxing audio frag 1 of [1 ,78],track 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: FRAG_LOADING->WAITING_INIT_PTS
base-stream-controller.ts:512 [log] > [audio-stream-controller]: Loaded audio sn: 1 of track 0
transmuxer-interface.ts:88 [log] > injecting Web Worker for "main"
transmuxer-interface.ts:238 [log] > [transmuxer-interface]: Starting new transmux session for main sn: 1 level: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: true
timeOffset: 0
initSegmentChange: true
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 1 of level 0
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "audio" in hls.js version 1.6.2
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "main" in hls.js version 1.6.2
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1358 [warn] > [stream-controller]: Init segment with muxed audiovideo where only video expected: https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1/ev/7/flavorId/1_qonq9oza/name/a.mp4/index.m3u8/init-v1-a1.mp4
logMuxedErr @ stream-controller.ts:1358
_bufferInitSegment @ stream-controller.ts:1379
_handleTransmuxComplete @ stream-controller.ts:1205
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
stream-controller.ts:1474 [log] > [stream-controller]: Init audiovideo buffer, container:video/mp4, codecs[level/parsed]=[avc1.42c01e,mp4a.40.2/mp4a.40.2,avc1.42C01E]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audiovideo" (current SB count 0)
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 1 codec events expected: 2) {"audiovideo":{"listeners":[],"codec":"mp4a.40.2,avc1.42C01E","container":"video/mp4","id":"main"}}
buffer-controller.ts:1411 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=mp4a.40.2,avc1.42C01E) {"listeners":[],"codec":"mp4a.40.2,avc1.42C01E","container":"video/mp4","id":"main"}
buffer-controller.ts:1380 [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (none)
audiovideo: (SourceBuffer) }
audio-stream-controller.ts:153 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 0/1
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: WAITING_INIT_PTS->FRAG_LOADING
transmuxer-interface.ts:238 [log] > [transmuxer-interface]: Starting new transmux session for audio sn: 1 track: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: false
timeOffset: 0
initSegmentChange: true
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 1 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 1 of level 0 (frag:[0.000-2.000])
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:962 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[level/parsed]=[mp4a.40.2/mp4a.40.2]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audio" (current SB count 1)
buffer-controller.ts:602 [warn] > [buffer-controller]: Unsupported transition between "audiovideo" and "audio" SourceBuffers
onBufferCodecs @ buffer-controller.ts:602
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:969
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
buffer-controller.ts:920 [warn] > [buffer-controller]: Failed 1/3 times to append segment in "audio" sourceBuffer (no media error)
onError @ buffer-controller.ts:920
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
content-steering-controller.ts:220 [warn] > [content-steering]: Could not resolve bufferAppendError ("Attempting to append to the audio SourceBuffer, but it does not exist") with content-steering for Pathway: . levels: 2 priorities: ["."] penalized: {".":11495.5}
onError @ content-steering-controller.ts:220
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
base-stream-controller.ts:1919 [log] > [audio-stream-controller]: Reset loading state
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: PARSING->IDLE
hls.ts:575 [log] > stopLoad
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->STOPPED
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: IDLE->STOPPED
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: IDLE->STOPPED
main.js:745 Error event: {type: 'mediaError', parent: 'audio', details: 'bufferAppendError', sourceBufferName: 'audio', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
main.js:858 Fatal error : bufferAppendError
(anonymous) @ main.js:858
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this error
hls.ts:658 [log] > recoverMediaError
hls.ts:478 [log] > detachMedia
buffer-controller.ts:462 [log] > [buffer-controller]: media source detaching
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "main" in hls.js version 1.6.2
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "audio" in hls.js version 1.6.2
hls.ts:462 [log] > attachMedia
buffer-controller.ts:320 [log] > [buffer-controller]: created media source: MediaSource
timeline-chart.ts:559 InvalidStateError: Failed to read the 'buffered' property from 'SourceBuffer': This SourceBuffer has been removed from the parent media source.
at SourceBuffer.<anonymous> (timeline-chart.ts:556:47)
(anonymous) @ timeline-chart.ts:559Understand this warning
buffer-controller.ts:1513 [log] > [buffer-controller]: Media source opened
buffer-controller.ts:1319 [log] > [buffer-controller]: Updating MediaSource duration to 741.088
interstitials-controller.ts:1056 [log] > [interstitials]: setSchedulePosition 0, undefined
interstitials-controller.ts:1842 [log] > [interstitials]: buffered to boundary [primary: 0.00-741.09]
interstitials-controller.ts:1294 [log] > [interstitials]: resuming [primary: 0.00-741.09]
hls.ts:552 [log] > startLoad(0)
base-stream-controller.ts:2093 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: WAITING_TRACK->WAITING_INIT_PTS
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: STOPPED->IDLE
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 2) {}
abr-controller.ts:798 [log] > [abr]: picked start tier {"codecSet":"avc1,mp4a","videoRanges":["SDR"],"preferHDR":false,"minFramerate":25,"minBitrate":461702,"minIndex":0}
abr-controller.ts:564 [warn] > [abr]: Could not find best starting auto level. Defaulting to first in playlist 0 clamped to 0
get @ abr-controller.ts:564
get @ abr-controller.ts:597
get @ hls.ts:979
get @ level-controller.ts:695
get @ hls.ts:764
doTickIdle @ stream-controller.ts:267
doTick @ stream-controller.ts:234
tick @ task-loop.ts:109
setInterval
setInterval @ task-loop.ts:71
startLoad @ stream-controller.ts:145
startLoad @ hls.ts:561
startLoadingPrimaryAt @ interstitials-controller.ts:1401
attachPrimary @ interstitials-controller.ts:1384
resumePrimary @ interstitials-controller.ts:1305
advanceSchedule @ interstitials-controller.ts:1255
setSchedulePosition @ interstitials-controller.ts:1123
onMediaAttached @ interstitials-controller.ts:271
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
BufferController._this2._onMediaSourceOpen @ buffer-controller.ts:1522Understand this warning
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 1 of level 0 (frag:[0.000-2.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: WAITING_INIT_PTS->IDLE
transmuxer-interface.ts:238 [log] > [transmuxer-interface]: Starting new transmux session for main sn: 1 level: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: true
timeOffset: 0
initSegmentChange: true
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 1 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1358 [warn] > [stream-controller]: Init segment with muxed audiovideo where only video expected: https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1/ev/7/flavorId/1_qonq9oza/name/a.mp4/index.m3u8/init-v1-a1.mp4
logMuxedErr @ stream-controller.ts:1358
_bufferInitSegment @ stream-controller.ts:1379
_handleTransmuxComplete @ stream-controller.ts:1205
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
stream-controller.ts:1474 [log] > [stream-controller]: Init audiovideo buffer, container:video/mp4, codecs[level/parsed]=[avc1.42c01e,mp4a.40.2/mp4a.40.2,avc1.42C01E]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audiovideo" (current SB count 0)
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 1 codec events expected: 2) {"audiovideo":{"listeners":[],"codec":"mp4a.40.2,avc1.42C01E","container":"video/mp4","id":"main"}}
buffer-controller.ts:1411 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=mp4a.40.2,avc1.42C01E) {"listeners":[],"codec":"mp4a.40.2,avc1.42C01E","container":"video/mp4","id":"main"}
buffer-controller.ts:1380 [log] > [buffer-controller]: SourceBuffers created. Running queue:
video: (none)
audio: (none)
audiovideo: (SourceBuffer) }
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 1 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 1 of level 0 (frag:[0.000-2.000])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 1 of level 0 (frag:[0.000-2.000] > buffer:[0.000-2.000])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
abr-controller.ts:958 [info] > [abr]: switch candidate:0->1 adjustedbw(16460192)-bitrate=14658666 ttfb:0.0 avgDuration:2.0 maxFetchDuration:2.0 fetchDuration:0.3 firstSelection:false codecSet:avc1,mp4a videoRange:SDR hls.loadLevel:0
stream-controller.ts:298 [log] > [stream-controller]: Adapting to level 1 from level 0
level-controller.ts:468 [log] > [level-controller]: Switching to level 1 (720p SDR avc1,mp4a @1801526) from level 0
level-controller.ts:673 [log] > [level-controller]: Loading level index 1 https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1/ev/7/flavorId/1_0lis80ef/name/a.mp4/index.m3u8/index-v1-a1.m3u8
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->WAITING_LEVEL
stream-controller.ts:671 [log] > [stream-controller]: Level 1 loaded [1,78][part-78--1], cc [0, 0] duration:741.088
base-stream-controller.ts:2093 [log] > [stream-controller]: WAITING_LEVEL->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: initSegment of level 1 (frag:[0.000-0.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 2 of level 1 (frag:[2.000-4.000]) cc: 0 [1-78], target: 2
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:899 [log] > [audio-stream-controller]: Loading audio sn: 2 of track 0 (frag:[2.000-4.000]) cc: 0 [1-78], target: 2
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:238 [log] > [transmuxer-interface]: Starting new transmux session for audio sn: 2 track: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: false
timeOffset: 2
initSegmentChange: true
base-stream-controller.ts:512 [log] > [audio-stream-controller]: Loaded audio sn: 2 of track 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:962 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[level/parsed]=[mp4a.40.2/mp4a.40.2]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audio" (current SB count 1)
buffer-controller.ts:602 [warn] > [buffer-controller]: Unsupported transition between "audiovideo" and "audio" SourceBuffers
onBufferCodecs @ buffer-controller.ts:602
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:969
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
buffer-controller.ts:920 [warn] > [buffer-controller]: Failed 1/3 times to append segment in "audio" sourceBuffer (no media error)
onError @ buffer-controller.ts:920
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
content-steering-controller.ts:220 [warn] > [content-steering]: Could not resolve bufferAppendError ("Attempting to append to the audio SourceBuffer, but it does not exist") with content-steering for Pathway: . levels: 2 priorities: ["."] penalized: {".":11495.5}
onError @ content-steering-controller.ts:220
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
base-stream-controller.ts:1919 [log] > [audio-stream-controller]: Reset loading state
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: PARSING->IDLE
hls.ts:575 [log] > stopLoad
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->STOPPED
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "main" in hls.js version 1.6.2
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: IDLE->STOPPED
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "audio" in hls.js version 1.6.2
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: IDLE->STOPPED
main.js:745 Error event: {type: 'mediaError', parent: 'audio', details: 'bufferAppendError', sourceBufferName: 'audio', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
main.js:858 Fatal error : bufferAppendError
(anonymous) @ main.js:858
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ audio-stream-controller.ts:980
_handleTransmuxComplete @ audio-stream-controller.ts:879
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this error
hls.ts:647 [log] > swapAudioCodec
hls.ts:658 [log] > recoverMediaError
hls.ts:478 [log] > detachMedia
buffer-controller.ts:462 [log] > [buffer-controller]: media source detaching
hls.ts:462 [log] > attachMedia
buffer-controller.ts:320 [log] > [buffer-controller]: created media source: MediaSource
base-stream-controller.ts:1753 [warn] > [stream-controller]: Fragment 2 of level 1 was aborted
handleFragLoadAborted @ base-stream-controller.ts:1753
handleFragLoadError @ base-stream-controller.ts:990
(anonymous) @ base-stream-controller.ts:938
Promise.catch
_doFragLoad @ base-stream-controller.ts:938
_loadFragForPlayback @ base-stream-controller.ts:492
loadFragment @ base-stream-controller.ts:467
loadFragment @ stream-controller.ts:409
doTickIdle @ stream-controller.ts:387
doTick @ stream-controller.ts:234
tick @ task-loop.ts:109
completeInitSegmentLoad @ base-stream-controller.ts:693
(anonymous) @ base-stream-controller.ts:670
Promise.then
_loadInitSegment @ base-stream-controller.ts:623
loadFragment @ stream-controller.ts:402
doTickIdle @ stream-controller.ts:387
doTick @ stream-controller.ts:234
tick @ task-loop.ts:109
onLevelLoaded @ stream-controller.ts:730
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
handlePlaylistLoaded @ playlist-loader.ts:747
handleTrackOrLevelPlaylist @ playlist-loader.ts:563
onSuccess @ playlist-loader.ts:360
readystatechange @ xhr-loader.ts:232
XMLHttpRequest.send
openAndSendXhr @ xhr-loader.ts:166
loadInternal @ xhr-loader.ts:125
load @ xhr-loader.ts:83
load @ playlist-loader.ts:393
onLevelLoading @ playlist-loader.ts:171
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
loadingPlaylist @ level-controller.ts:681
scheduleLoading @ base-playlist-controller.ts:335
loadPlaylist @ level-controller.ts:659
set @ level-controller.ts:517
set @ level-controller.ts:700
set @ hls.ts:772
doTickIdle @ stream-controller.ts:300
doTick @ stream-controller.ts:234
tick @ task-loop.ts:109
onFragBuffered @ stream-controller.ts:986
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onUnblocked @ buffer-controller.ts:1003
(anonymous) @ buffer-controller.ts:1703
Promise.then
blockBuffers @ buffer-controller.ts:1698
onFragParsed @ buffer-controller.ts:1017
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
updateLevelTiming @ base-stream-controller.ts:2045
_handleTransmuxerFlush @ base-stream-controller.ts:1037
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:389Understand this warning
base-stream-controller.ts:2093 [log] > [stream-controller]: STOPPED->IDLE
buffer-controller.ts:1513 [log] > [buffer-controller]: Media source opened
buffer-controller.ts:1319 [log] > [buffer-controller]: Updating MediaSource duration to 741.088
interstitials-controller.ts:1056 [log] > [interstitials]: setSchedulePosition 0, undefined
interstitials-controller.ts:1842 [log] > [interstitials]: buffered to boundary [primary: 0.00-741.09]
interstitials-controller.ts:1294 [log] > [interstitials]: resuming [primary: 0.00-741.09]
hls.ts:552 [log] > startLoad(0)
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->STOPPED
base-stream-controller.ts:2093 [log] > [stream-controller]: STOPPED->IDLE
48318507-99ce-4d36-92ec-966a926a688b:1197 [log] > Debug logs enabled for "main" in hls.js version 1.6.2
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: WAITING_TRACK->WAITING_INIT_PTS
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: STOPPED->IDLE
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 0 codec events expected: 2) {}
abr-controller.ts:798 [log] > [abr]: picked start tier {"codecSet":"avc1,mp4a","videoRanges":["SDR"],"preferHDR":false,"minFramerate":25,"minBitrate":461702,"minIndex":0}
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 1 of level 1 (frag:[0.000-2.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: WAITING_INIT_PTS->IDLE
base-stream-controller.ts:899 [log] > [audio-stream-controller]: Loading audio sn: 1 of track 0 (frag:[0.000-2.000]) cc: 0 [1-78], target: 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
transmuxer-interface.ts:238 [log] > [transmuxer-interface]: Starting new transmux session for audio sn: 1 track: 0 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: false
timeOffset: 0
initSegmentChange: true
base-stream-controller.ts:512 [log] > [audio-stream-controller]: Loaded audio sn: 1 of track 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
audio-stream-controller.ts:962 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[level/parsed]=[mp4a.40.2/mp4a.40.2]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audio" (current SB count 0)
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 1 codec events expected: 2) {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","id":"audio"}}
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed audio sn: 1 of track 0
base-stream-controller.ts:2093 [log] > [audio-stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [audio-stream-controller]: Parsed audio sn: 1 of track 0 (frag:[0.000-2.020])
stream-controller.ts:1142 [log] > [stream-controller]: Swapping audio codec
transmuxer-interface.ts:238 [log] > [transmuxer-interface]: Starting new transmux session for main sn: 1 level: 1 id: 1
discontinuity: true
trackSwitch: true
contiguous: false
accurateTimeOffset: true
timeOffset: 0
initSegmentChange: true
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 1 of level 1
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1358 [warn] > [stream-controller]: Init segment with muxed audiovideo where only video expected: https://cfvod.kaltura.com/hls/container/fmp4/p/5182872/sp/518287200/serveFlavor/entryId/1_utcle93o/v/1/ev/7/flavorId/1_0lis80ef/name/a.mp4/index.m3u8/init-v1-a1.mp4
logMuxedErr @ stream-controller.ts:1358
_bufferInitSegment @ stream-controller.ts:1379
_handleTransmuxComplete @ stream-controller.ts:1205
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
stream-controller.ts:1474 [log] > [stream-controller]: Init audiovideo buffer, container:video/mp4, codecs[level/parsed]=[avc1.640028,mp4a.40.2/mp4a.40.2,avc1.640028]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audiovideo" (current SB count 0)
buffer-controller.ts:602 [warn] > [buffer-controller]: Unsupported transition between "audio" and "audiovideo" SourceBuffers
onBufferCodecs @ buffer-controller.ts:602
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
_bufferInitSegment @ stream-controller.ts:1482
_handleTransmuxComplete @ stream-controller.ts:1205
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
base-stream-controller.ts:1919 [log] > [stream-controller]: Reset loading state
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->IDLE
main.js:745 Error event: {type: 'mediaError', parent: 'main', details: 'bufferAppendError', sourceBufferName: 'audiovideo', frag: Fragment, …}
(anonymous) @ main.js:745
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
onError @ buffer-controller.ts:930
executeNext @ buffer-operation-queue.ts:104
append @ buffer-operation-queue.ts:35
append @ buffer-controller.ts:1727
onBufferAppending @ buffer-controller.ts:933
emit @ index.js:203
emit @ hls.ts:382
trigger @ hls.ts:390
(anonymous) @ stream-controller.ts:1492
_bufferInitSegment @ stream-controller.ts:1488
_handleTransmuxComplete @ stream-controller.ts:1205
handleTransmuxComplete @ transmuxer-interface.ts:447
TransmuxerInterface.onWorkerMessage @ transmuxer-interface.ts:384Understand this warning
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 1 of level 1
abr-controller.ts:798 [log] > [abr]: picked start tier {"codecSet":"avc1,mp4a","videoRanges":["SDR"],"preferHDR":false,"minFramerate":25,"minBitrate":461702,"minIndex":0}
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 2 of level 1 (frag:[2.000-4.000]) cc: 0 [1-78], target: 2
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
stream-controller.ts:1142
Chrome media internals output
HLS.js does not demux muxed audio-video in mp4. Muxed audio-video fmp4 is supported on its own, but not with alternate audio options. Audio and video should be provided separately in all variants.
Is there any plan to add support for this? As it seems to be supported when using TS, supporting it from FMP4 would be nice to have as well.