This source no longer works in Chrome since v0.10.x:
https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8
It was introduced in 741d531f (tried the demo locally and checking out the previous commit works)
0.017 | Loading https://bitdash-a.akamaihd.net/content/sintel/hls/playlist.m3u8
0.036 | Loading manifest and attaching video element...
0.212 | No of audio tracks found: 4
0.214 | No of quality levels found: 8
0.214 | Manifest successfully loaded
0.331 | Audio track switching...
0.428 | Media element attached
0.68 | Audio track switched
0.91 | Audio track switching...
1.025 | Audio track switched, trying to recover media error.
5.09 | Media element detached
5.093 | The video playback was aborted due to a corruption problem or because the video used features your browser did not support - PIPELINE_ERROR_DECODE: Failed to send audio packet for decoding: timestamp=279333 duration=21333 size=786 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)
5.198 | Media element attached
{
"5783:30": {
"id": "5783:30",
"properties": {
"render_id": 5783,
"player_id": 30,
"pipeline_state": "kStopped",
"event": "WEBMEDIAPLAYER_DESTROYED"
},
"allEvents": [
{
"time": 0,
"key": "pipeline_state",
"value": "kStopping"
},
{
"time": 0.037000060081481934,
"key": "pipeline_state",
"value": "kStopped"
},
{
"time": 0.1390000581741333,
"key": "event",
"value": "WEBMEDIAPLAYER_DESTROYED"
}
],
"lastRendered": 0,
"firstTimestamp_": 930165550.13,
"destructed": true
},
"5783:35": {
"id": "5783:35",
"properties": {
"render_id": 5783,
"player_id": 35,
"origin_url": "https://video-dev.github.io/",
"frame_url": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fbitdash-a.akamaihd.net%2Fcontent%2Fsintel%2Fhls%2Fplaylist.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsImVuYWJsZVdvcmtlciI6dHJ1ZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xLCJ3aWRldmluZUxpY2Vuc2VVcmwiOiIifQ==",
"frame_title": "hls.js demo",
"url": "blob:https://video-dev.github.io/5f47249f-a843-4ead-aae3-4712cf9c2561",
"info": "Effective playback rate changed from 0 to 1",
"pipeline_state": "kStopped",
"found_video_stream": true,
"video_codec_name": "h264",
"debug": "(Log limit reached. Further similar entries may be suppressed): Prepared video sample is not conformant",
"found_audio_stream": true,
"audio_codec_name": "aac",
"audio_dds": false,
"audio_decoder": "FFmpegAudioDecoder",
"video_dds": false,
"video_decoder": "FFmpegVideoDecoder",
"video_buffering_state": "BUFFERING_HAVE_ENOUGH",
"height": 181,
"width": 426,
"seek_target": 0.052,
"audio_buffering_state": "BUFFERING_HAVE_ENOUGH",
"for_suspended_start": false,
"pipeline_buffering_state": "BUFFERING_HAVE_ENOUGH",
"duration": 888,
"event": "WEBMEDIAPLAYER_DESTROYED",
"error": "audio error during playing, status: PIPELINE_ERROR_DECODE",
"pipeline_error": "PIPELINE_ERROR_DECODE"
},
"allEvents": [
{
"time": 0,
"key": "origin_url",
"value": "https://video-dev.github.io/"
},
{
"time": 0.013000011444091797,
"key": "frame_url",
"value": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fbitdash-a.akamaihd.net%2Fcontent%2Fsintel%2Fhls%2Fplaylist.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsImVuYWJsZVdvcmtlciI6dHJ1ZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xLCJ3aWRldmluZUxpY2Vuc2VVcmwiOiIifQ=="
},
{
"time": 0.01900005340576172,
"key": "frame_title",
"value": "hls.js demo"
},
{
"time": 0.11800003051757812,
"key": "url",
"value": "blob:https://video-dev.github.io/5f47249f-a843-4ead-aae3-4712cf9c2561"
},
{
"time": 0.17599999904632568,
"key": "info",
"value": "ChunkDemuxer: buffering by DTS"
},
{
"time": 1.13100004196167,
"key": "pipeline_state",
"value": "kStarting"
},
{
"time": 255.43299996852875,
"key": "found_video_stream",
"value": true
},
{
"time": 255.43900001049042,
"key": "video_codec_name",
"value": "h264"
},
{
"time": 257.0180000066757,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 272.2319999933243,
"key": "found_audio_stream",
"value": true
},
{
"time": 272.23800003528595,
"key": "audio_codec_name",
"value": "aac"
},
{
"time": 279.32800006866455,
"key": "audio_dds",
"value": false
},
{
"time": 279.3359999656677,
"key": "audio_decoder",
"value": "FFmpegAudioDecoder"
},
{
"time": 279.3639999628067,
"key": "info",
"value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac bytes_per_channel: 2 channel_layout: 3 channels: 2 samples_per_second: 48000 sample_format: 2 bytes_per_frame: 4 seek_preroll: 0ms codec_delay: 0 has extra data? false encrypted? false discard decoder delay? false"
},
{
"time": 280.8489999771118,
"key": "video_dds",
"value": false
},
{
"time": 280.8569999933243,
"key": "video_decoder",
"value": "FFmpegVideoDecoder"
},
{
"time": 280.89400005340576,
"key": "info",
"value": "Selected FFmpegVideoDecoder for video decoding, config: codec: h264 format: 1 profile: h264 main coded size: [426,180] visible rect: [0,0,426,180] natural size: [426,181] has extra data? false encrypted? false rotation: 0掳"
},
{
"time": 280.96399998664856,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 295.5270000696182,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 309.95099997520447,
"key": "height",
"value": 181
},
{
"time": 309.95099997520447,
"key": "width",
"value": 426
},
{
"time": 329.0219999551773,
"key": "seek_target",
"value": 0
},
{
"time": 329.19000005722046,
"key": "pipeline_state",
"value": "kSeeking"
},
{
"time": 329.4630000591278,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 345.7940000295639,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 349.0859999656677,
"key": "audio_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 349.19599997997284,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 356.24699997901917,
"key": "for_suspended_start",
"value": false
},
{
"time": 356.24699997901917,
"key": "pipeline_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 448.7680000066757,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 616.5529999732971,
"key": "seek_target",
"value": 0.052
},
{
"time": 616.6189999580383,
"key": "pipeline_state",
"value": "kSeeking"
},
{
"time": 616.6840000152588,
"key": "audio_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 616.9630000591278,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 616.99899995327,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 620.8830000162125,
"key": "audio_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 621.1030000448227,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 625.1759999990463,
"key": "for_suspended_start",
"value": false
},
{
"time": 625.1759999990463,
"key": "pipeline_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 694.5820000171661,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 974.386999964714,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 255.5,
"key": "duration",
"value": 888
},
{
"time": 1190.1560000181198,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 1584.3040000200272,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 1687.3170000314713,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 1776.7150000333786,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 1898.5789999961853,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2008.7189999818802,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2139.5060000419617,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2242.75,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2357.6920000314713,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2431.261999964714,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2511.2009999752045,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2612.28200006485,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2735.2560000419617,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 2948.46899998188,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 3146,
"key": "debug",
"value": "Prepared video sample is not conformant"
},
{
"time": 3343.2120000123978,
"key": "debug",
"value": "(Log limit reached. Further similar entries may be suppressed): Prepared video sample is not conformant"
},
{
"time": 3603.4900000095367,
"key": "info",
"value": "Effective playback rate changed from 0 to 1"
},
{
"time": 3603.6890000104904,
"key": "event",
"value": "PLAY"
},
{
"time": 3614.764000058174,
"key": "error",
"value": "Failed to send audio packet for decoding: timestamp=279333 duration=21333 size=786 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)"
},
{
"time": 3614.8259999752045,
"key": "error",
"value": "audio decode error"
},
{
"time": 3637.9810000658035,
"key": "error",
"value": "audio error during playing, status: PIPELINE_ERROR_DECODE"
},
{
"time": 3642.738000035286,
"key": "pipeline_error",
"value": "PIPELINE_ERROR_DECODE"
},
{
"time": 3643.182000041008,
"key": "pipeline_state",
"value": "kStopping"
},
{
"time": 3645.3810000419617,
"key": "pipeline_state",
"value": "kStopped"
},
{
"time": 3647.455999970436,
"key": "event",
"value": "PAUSE"
},
{
"time": 3649.708999991417,
"key": "event",
"value": "WEBMEDIAPLAYER_DESTROYED"
}
],
"lastRendered": 0,
"firstTimestamp_": 930166435.737,
"destructed": true
},
"5783:64": {
"id": "5783:64",
"properties": {
"render_id": 5783,
"player_id": 64,
"origin_url": "https://video-dev.github.io/",
"frame_url": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fbitdash-a.akamaihd.net%2Fcontent%2Fsintel%2Fhls%2Fplaylist.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsImVuYWJsZVdvcmtlciI6dHJ1ZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xLCJ3aWRldmluZUxpY2Vuc2VVcmwiOiIifQ==",
"frame_title": "hls.js demo",
"url": "blob:https://video-dev.github.io/0fa0bfbb-abf8-46cd-b907-97f0b1fd2372",
"info": "ChunkDemuxer: buffering by DTS",
"pipeline_state": "kStarting"
},
"allEvents": [
{
"time": 0,
"key": "origin_url",
"value": "https://video-dev.github.io/"
},
{
"time": 0.016000032424926758,
"key": "frame_url",
"value": "https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fbitdash-a.akamaihd.net%2Fcontent%2Fsintel%2Fhls%2Fplaylist.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsImVuYWJsZVdvcmtlciI6dHJ1ZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xLCJ3aWRldmluZUxpY2Vuc2VVcmwiOiIifQ=="
},
{
"time": 0.02200007438659668,
"key": "frame_title",
"value": "hls.js demo"
},
{
"time": 0.12000000476837158,
"key": "url",
"value": "blob:https://video-dev.github.io/0fa0bfbb-abf8-46cd-b907-97f0b1fd2372"
},
{
"time": 0.1770000457763672,
"key": "info",
"value": "ChunkDemuxer: buffering by DTS"
},
{
"time": 0.21600008010864258,
"key": "pipeline_state",
"value": "kStarting"
}
],
"lastRendered": 0,
"firstTimestamp_": 930170104.678
},
"5192:1": {
"id": "5192:1",
"properties": {
"render_id": 5192,
"player_id": 1,
"debug": "FFmpegDemuxer: av_read_frame(): End of file",
"event": "ENDED",
"seek_target": 0,
"pipeline_state": "kPlaying",
"audio_buffering_state": "BUFFERING_HAVE_ENOUGH",
"video_buffering_state": "BUFFERING_HAVE_ENOUGH",
"for_suspended_start": false,
"pipeline_buffering_state": "BUFFERING_HAVE_ENOUGH"
},
"allEvents": [
{
"time": 0,
"key": "debug",
"value": "FFmpegDemuxer: av_read_frame(): End of file"
},
{
"time": 2322.1080000400543,
"key": "event",
"value": "ENDED"
},
{
"time": 2322.363000035286,
"key": "seek_target",
"value": 0
},
{
"time": 2322.448000073433,
"key": "pipeline_state",
"value": "kSeeking"
},
{
"time": 2322.5110000371933,
"key": "audio_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 2323.089000105858,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_NOTHING"
},
{
"time": 2323.196000099182,
"key": "pipeline_state",
"value": "kPlaying"
},
{
"time": 2341.847000002861,
"key": "video_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 2346.7680000066757,
"key": "audio_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
},
{
"time": 2347.082000017166,
"key": "for_suspended_start",
"value": false
},
{
"time": 2347.082000017166,
"key": "pipeline_buffering_state",
"value": "BUFFERING_HAVE_ENOUGH"
}
],
"lastRendered": 0,
"firstTimestamp_": 930219625.004
}
}
Hey, thanks for the report! Interesting issue. Do we know if it appeared since a certain Chrome version as well?
It works on Firefox, so we can't be that wrong. Curious to know what it is. I assume decoding capabilities or something about transmuxing (since other assets work still :)).
I don't know of any changes in Chrome 67 that may have lead to this (and also don't know enough to exclude it). They did change the player, but only visually afaik.
Have you been able to replicate it?
It's a bummer it happened in such a large commit. I was aiming to poke around with the code to see if I could do something to bring attention to a specific line of the code, but I really wouldn't know what I was doing.
I'm getting some other issues with that manifest too, that I didn't mention originally since I think they might be red herrings:
0.10.1:
00:00:00 00 | origin_url | https://video-dev.github.io/
-- | -- | --
00:00:00 00 | frame_url | https://video-dev.github.io/hls.js/demo/?src=https%3A%2F%2Fbitdash-a.akamaihd.net%2Fcontent%2Fsintel%2Fhls%2Fplaylist.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsImVuYWJsZVdvcmtlciI6dHJ1ZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xLCJ3aWRldmluZUxpY2Vuc2VVcmwiOiIifQ==
00:00:00 00 | frame_title | hls.js demo
00:00:00 00 | url | blob:https://video-dev.github.io/0ca64fc9-d5ad-478f-bf26-2dbf228296f3
00:00:00 00 | info | ChunkDemuxer: buffering by DTS
00:00:00 02 | pipeline_state | kStarting
00:00:00 225 | found_video_stream | true
00:00:00 225 | video_codec_name | h264
00:00:00 227 | debug | Prepared video sample is not conformant
00:00:00 241 | found_audio_stream | true
00:00:00 241 | audio_codec_name | aac
00:00:00 244 | audio_dds | false
00:00:00 244 | audio_decoder | FFmpegAudioDecoder
00:00:00 244 | info | Selected FFmpegAudioDecoder for audio decoding, config: codec: aac bytes_per_channel: 2 channel_layout: 3 channels: 2 samples_per_second: 48000 sample_format: 2 bytes_per_frame: 4 seek_preroll: 0ms codec_delay: 0 has extra data? false encrypted? false discard decoder delay? false
00:00:00 246 | video_dds | false
00:00:00 246 | video_decoder | GpuVideoDecoder
00:00:00 246 | info | Selected GpuVideoDecoder for video decoding, config: codec: h264 format: 1 profile: h264 main coded size: [426,180] visible rect: [0,0,426,180] natural size: [426,181] has extra data? false encrypted? false rotation: 0掳
00:00:00 246 | pipeline_state | kPlaying
00:00:00 248 | audio_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 259 | height | 181
00:00:00 259 | width | 426
00:00:00 259 | video_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 260 | for_suspended_start | false
00:00:00 260 | pipeline_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 373 | debug | Prepared video sample is not conformant
00:00:00 575 | seek_target | 0.052
00:00:00 575 | pipeline_state | kSeeking
00:00:00 575 | audio_buffering_state | BUFFERING_HAVE_NOTHING
00:00:00 575 | video_buffering_state | BUFFERING_HAVE_NOTHING
00:00:00 575 | pipeline_state | kPlaying
00:00:00 577 | audio_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 580 | video_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 580 | for_suspended_start | false
00:00:00 580 | pipeline_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 225 | duration | 888
00:00:01 237 | debug | Prepared video sample is not conformant
00:00:01 698 | debug | Prepared video sample is not conformant
00:00:02 492 | debug | Prepared video sample is not conformant
00:00:03 462 | debug | Prepared video sample is not conformant
00:00:03 905 | debug | Prepared video sample is not conformant
00:00:04 199 | debug | Prepared video sample is not conformant
00:00:04 461 | debug | Prepared video sample is not conformant
00:00:04 735 | debug | Prepared video sample is not conformant
00:00:05 11 | debug | Prepared video sample is not conformant
00:00:05 255 | debug | Prepared video sample is not conformant
00:00:05 499 | debug | Prepared video sample is not conformant
00:00:05 758 | debug | Prepared video sample is not conformant
00:00:05 950 | debug | Prepared video sample is not conformant
00:00:06 195 | debug | Prepared video sample is not conformant
00:00:06 492 | debug | Prepared video sample is not conformant
00:00:06 785 | seek_target | 87.355029
00:00:06 785 | pipeline_state | kSeeking
00:00:06 785 | audio_buffering_state | BUFFERING_HAVE_NOTHING
00:00:06 785 | video_buffering_state | BUFFERING_HAVE_NOTHING
00:00:07 214 | pipeline_state | kPlaying
00:00:07 214 | error | Failed to send audio packet for decoding: timestamp=87340666 duration=21333 size=822 side_data_size=0 is_key_frame=1 encrypted=0 discard_padding (ms)=(0, 0)
00:00:07 214 | info | video decoder config changed midstream, new config: codec: h264 format: 1 profile: h264 main coded size: [4096,1744] visible rect: [0,0,4096,1744] natural size: [4096,1744] has extra data? false encrypted? false rotation: 0掳
00:00:07 214 | error | audio decode error
00:00:07 214 | error | audio error during playing, status: PIPELINE_ERROR_DECODE
00:00:07 214 | pipeline_error | PIPELINE_ERROR_DECODE
00:00:07 215 | pipeline_state | kStopping
00:00:07 215 | pipeline_state | kStopped
00:00:07 217 | event | WEBMEDIAPLAYER_DESTROYED
Using Hls.js config: {debug: true, enableWorker: true, defaultAudioCodec: undefined, widevineLicenseUrl: ""}
logger.js:40 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d400d/avc1.4d400d]
d20bb4b6-49c7-43cb-8b76-cdc26b1f8ae0:520 [log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2
d20bb4b6-49c7-43cb-8b76-cdc26b1f8ae0:520 [log] > parsed codec:mp4a.40.5,rate:48000,nb channel:2
logger.js:40 [log] > creating sourceBuffer(video/mp4;codecs=avc1.4d400d)
logger.js:40 [log] > creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)
logger.js:40 [log] > audio track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.5/mp4a.40.5]
logger.js:40 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d4015/avc1.4d4015]
logger.js:40 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d4033/avc1.4d4033]
logger.js:40 [error] > sourceBuffer error: Event聽{isTrusted: true, type: "error", target: SourceBuffer, currentTarget: SourceBuffer, eventPhase: 2,聽鈥bubbles: falsecancelBubble: falsecancelable: falsecomposed: falsecurrentTarget: SourceBuffer聽{ended: false, mode: "segments", updating: false, timestampOffset: 0, appendWindowStart: 0,聽鈥defaultPrevented: falseeventPhase: 0isTrusted: truepath: []returnValue: truesrcElement: SourceBuffer聽{ended: false, mode: "segments", updating: false, timestampOffset: 0, appendWindowStart: 0,聽鈥target: SourceBuffer聽{ended: false, mode: "segments", updating: false, timestampOffset: 0, appendWindowStart: 0,聽鈥timeStamp: 7504.400000034366type: "error"__proto__: Event
(anonymous) @ logger.js:40
onSBUpdateError @ buffer-controller.js:240
error (async)
createSourceBuffers @ buffer-controller.js:291
checkPendingTracks @ buffer-controller.js:186
onBufferCodecs @ buffer-controller.js:273
onEventGeneric @ event-handler.js:77
onEvent @ event-handler.js:64
EventEmitter.emit @ events.js:96
trigger @ hls.js:118
onFragParsingInitSegment @ audio-stream-controller.js:624
onEventGeneric @ event-handler.js:77
onEvent @ event-handler.js:64
EventEmitter.emit @ events.js:96
trigger @ hls.js:118
onWorkerMessage @ demuxer.js:149
main.js:554 Error event: {type: "mediaError", details: "bufferAppendingError", fatal: false}
(anonymous) @ main.js:554
EventEmitter.emit @ events.js:96
trigger @ hls.js:118
onSBUpdateError @ buffer-controller.js:244
error (async)
createSourceBuffers @ buffer-controller.js:291
checkPendingTracks @ buffer-controller.js:186
onBufferCodecs @ buffer-controller.js:273
onEventGeneric @ event-handler.js:77
onEvent @ event-handler.js:64
EventEmitter.emit @ events.js:96
trigger @ hls.js:118
onFragParsingInitSegment @ audio-stream-controller.js:624
onEventGeneric @ event-handler.js:77
onEvent @ event-handler.js:64
EventEmitter.emit @ events.js:96
trigger @ hls.js:118
onWorkerMessage @ demuxer.js:149
logger.js:40 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d4033/avc1.4d4033]
md5-7cde994c7730d70e75a0fea944ffd08c
00:00:00 00 | origin_url | https://streambox.fr/
-- | -- | --
00:00:00 00 | frame_url | https://streambox.fr/mse/hls.js-0.9.1/demo/
00:00:00 00 | frame_title | hls.js demo
00:00:00 00 | url | blob:https://streambox.fr/40480f3e-92fc-4a8e-9c89-2e1fe25d5a23
00:00:00 00 | info | ChunkDemuxer: buffering by DTS
00:00:00 00 | pipeline_state | kStarting
00:00:00 65 | found_video_stream | true
00:00:00 65 | video_codec_name | h264
00:00:00 65 | debug | Prepared video sample is not conformant
00:00:00 67 | found_audio_stream | true
00:00:00 67 | audio_codec_name | aac
00:00:00 69 | audio_dds | false
00:00:00 69 | audio_decoder | FFmpegAudioDecoder
00:00:00 69 | info | Selected FFmpegAudioDecoder for audio decoding, config: codec: aac bytes_per_channel: 2 channel_layout: 3 channels: 2 samples_per_second: 48000 sample_format: 2 bytes_per_frame: 4 seek_preroll: 0ms codec_delay: 0 has extra data? false encrypted? false discard decoder delay? false
00:00:00 70 | video_dds | false
00:00:00 70 | video_decoder | GpuVideoDecoder
00:00:00 70 | info | Selected GpuVideoDecoder for video decoding, config: codec: h264 format: 1 profile: h264 main coded size: [426,180] visible rect: [0,0,426,180] natural size: [426,181] has extra data? false encrypted? false rotation: 0掳
00:00:00 70 | pipeline_state | kPlaying
00:00:00 72 | audio_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 77 | height | 181
00:00:00 77 | width | 426
00:00:00 84 | video_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 84 | for_suspended_start | false
00:00:00 84 | pipeline_buffering_state | BUFFERING_HAVE_ENOUGH
00:00:00 84 | info | Effective playback rate changed from 0 to 1
00:00:00 84 | event | PLAY
00:00:00 107 | debug | Prepared video sample is not conformant
00:00:00 428 | debug | Prepared video sample is not conformant
00:00:00 491 | debug | Prepared video sample is not conformant
00:00:00 525 | debug | Prepared video sample is not conformant
00:00:00 552 | debug | Prepared video sample is not conformant
00:00:00 577 | debug | Prepared video sample is not conformant
00:00:00 600 | debug | Prepared video sample is not conformant
00:00:00 634 | debug | Prepared video sample is not conformant
00:00:00 663 | debug | Prepared video sample is not conformant
00:00:00 688 | debug | Prepared video sample is not conformant
00:00:00 715 | debug | Prepared video sample is not conformant
00:00:00 741 | debug | Prepared video sample is not conformant
00:00:00 759 | debug | Prepared video sample is not conformant
00:00:00 777 | debug | Prepared video sample is not conformant
00:00:00 799 | debug | Prepared video sample is not conformant
00:00:00 824 | debug | Prepared video sample is not conformant
00:00:00 924 | debug | Prepared video sample is not conformant
00:00:00 65 | duration | 888
00:00:01 317 | debug | Prepared video sample is not conformant
00:00:01 746 | debug | (Log limit reached. Further similar entries may be suppressed): Prepared video sample is not conformant
00:00:01 805 | info | video decoder config changed midstream, new config: codec: h264 format: 1 profile: h264 main coded size: [640,272] visible rect: [0,0,640,272] natural size: [640,273] has extra data? false encrypted? false rotation: 0掳
00:00:02 238 | height | 273
00:00:02 238 | width | 640
00:00:03 856 | info | video decoder config changed midstream, new config: codec: h264 format: 1 profile: h264 main coded size: [4096,1744] visible rect: [0,0,4096,1744] natural size: [4096,1744] has extra data? false encrypted? false rotation: 0掳
00:00:04 239 | height | 1744
00:00:04 239 | width | 4096
00:00:04 619 | event | PAUSE
00:00:19 621 | pipeline_state | kSuspending
00:00:19 621 | pipeline_state | kSuspended
md5-f4ee81fa9f7ddb30ab181e9f3db0250d
[log] > both AAC/HE-AAC audio found in levels; declaring level codec as HE-AAC
blob:https://streambox.fr/9c0c583b-fe10-457a-9e63-5f2c6f4c9978:520 [log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:4[44100Hz],channelConfig:2
blob:https://streambox.fr/9c0c583b-fe10-457a-9e63-5f2c6f4c9978:520 [log] > parsed codec:mp4a.40.5,rate:44100,nb channel:2
logger.js:37 [log] > creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)
logger.js:37 [log] > creating sourceBuffer(video/mp4;codecs=avc1.64001f)
logger.js:37 [log] > main track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.5/mp4a.40.5]
logger.js:37 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.64001f/avc1.64001f]
blob:https://streambox.fr/9c0c583b-fe10-457a-9e63-5f2c6f4c9978:520 [log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:4[44100Hz],channelConfig:2
blob:https://streambox.fr/9c0c583b-fe10-457a-9e63-5f2c6f4c9978:520 [log] > parsed codec:mp4a.40.5,rate:44100,nb channel:2
logger.js:37 [log] > main track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.5/mp4a.40.5]
logger.js:37 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.640028/avc1.640028]
logger.js:37 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d400d/avc1.4d400d]
blob:https://streambox.fr/28d3e307-8e23-4d95-8a30-2b40c8cd6698:520 [log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2
blob:https://streambox.fr/28d3e307-8e23-4d95-8a30-2b40c8cd6698:520 [log] > manifest codec:mp4a.40.2,ADTS data:type:2,sampleingIndex:3[48000Hz],channelConfig:2
blob:https://streambox.fr/28d3e307-8e23-4d95-8a30-2b40c8cd6698:520 [log] > parsed codec:mp4a.40.5,rate:48000,nb channel:2
blob:https://streambox.fr/28d3e307-8e23-4d95-8a30-2b40c8cd6698:520 [log] > parsed codec:mp4a.40.5,rate:48000,nb channel:2
logger.js:37 [log] > creating sourceBuffer(video/mp4;codecs=avc1.4d400d)
logger.js:37 [log] > creating sourceBuffer(audio/mp4;codecs=mp4a.40.5)
logger.js:37 [log] > audio track:audio,container:audio/mp4,codecs[level/parsed]=[mp4a.40.5/mp4a.40.5]
logger.js:37 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d4015/avc1.4d4015]
logger.js:37 [log] > main track:video,container:video/mp4,codecs[level/parsed]=[avc1.4d4033/avc1.4d4033]
The stream will restart and play in 0.10.1 if you manually select the first English track. It seems like your surround tracks use unsupported codecs - avc1.4d401f is not supported by Chrome (test here https://cconcolato.github.io/media-mime-support/?). I haven't looked into the root cause of why it worked before but if I had to guess it was because we were never picking an unsupported rendition.
We should be filtering out these sources. Looks like there's a bug here/somewhere downstream: https://github.com/video-dev/hls.js/blob/master/src/controller/level-controller.js#L117
Thank you!
When I check https://cconcolato.github.io/media-mime-support/ avc1.4d401f is actually listed as probably / true (Chrome 67, OS X), and it seems to work for me in 0.9.1. I'm getting 8 levels in total, and I can switch to all of them in the demo. I'm guessing you only get 6 levels in 0.9.1?
I'm not sure why the codecs are different. I've been using this manifest to demonstrate integrating hls.js with Plyr, since it's a free to use sample with captions and levels. So I really don't know how it was encoded. It may have been put together by Bitmovin to be used for testing odd and likely to fail combinations. It has odd resolutions too, like 1921 x 818
hls.levels output if it helps (have removed the fragments since otherwise the log would be megabytes):
[
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "258157",
"CODECS": "avc1.4d400d,mp4a.40.2",
"AUDIO": "stereo",
"RESOLUTION": "422x180",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/250kbit.m3u8"
],
"width": 422,
"height": 180,
"bitrate": 258157,
"videoCodec": "avc1.4d400d",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0,
"level": 0,
"details": {
"type": null,
"version": null,
"url": "https://bitdash-a.akamaihd.net/content/sintel/hls/video/250kbit.m3u8",
"live": false,
"startSN": 0,
"targetduration": 2,
"totalduration": 888,
"averagetargetduration": 2,
"endSN": 443,
"startCC": 0,
"endCC": 0,
"tload": 20066.400000010617,
"PTSKnown": true
}
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "520929",
"CODECS": "avc1.4d4015,mp4a.40.2",
"AUDIO": "stereo",
"RESOLUTION": "638x272",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/500kbit.m3u8"
],
"width": 638,
"height": 272,
"bitrate": 520929,
"videoCodec": "avc1.4d4015",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0,
"level": 1,
"details": {
"type": null,
"version": null,
"url": "https://bitdash-a.akamaihd.net/content/sintel/hls/video/500kbit.m3u8",
"live": false,
"startSN": 0,
"targetduration": 2,
"totalduration": 888,
"averagetargetduration": 2,
"endSN": 443,
"startCC": 0,
"endCC": 0,
"tload": 20240.400000009686,
"PTSKnown": true
}
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "831270",
"CODECS": "avc1.4d4015,mp4a.40.2",
"AUDIO": "stereo",
"RESOLUTION": "638x272",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/800kbit.m3u8"
],
"width": 638,
"height": 272,
"bitrate": 831270,
"videoCodec": "avc1.4d4015",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "1144430",
"CODECS": "avc1.4d401f,mp4a.40.2",
"AUDIO": "surround",
"RESOLUTION": "958x408",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/1100kbit.m3u8"
],
"width": 958,
"height": 408,
"bitrate": 1144430,
"videoCodec": "avc1.4d401f",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "1558322",
"CODECS": "avc1.4d401f,mp4a.40.2",
"AUDIO": "surround",
"RESOLUTION": "1277x554",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/1500kbit.m3u8"
],
"width": 1277,
"height": 554,
"bitrate": 1558322,
"videoCodec": "avc1.4d401f",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "4149264",
"CODECS": "avc1.4d4028,mp4a.40.2",
"AUDIO": "surround",
"RESOLUTION": "1921x818",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/4000kbit.m3u8"
],
"width": 1921,
"height": 818,
"bitrate": 4149264,
"videoCodec": "avc1.4d4028",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0,
"level": 5,
"details": {
"type": null,
"version": null,
"url": "https://bitdash-a.akamaihd.net/content/sintel/hls/video/4000kbit.m3u8",
"live": false,
"startSN": 0,
"targetduration": 2,
"totalduration": 888,
"averagetargetduration": 2,
"endSN": 443,
"startCC": 0,
"endCC": 0,
"tload": 109161.89999994822,
"PTSKnown": true
}
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "6214307",
"CODECS": "avc1.4d4028,mp4a.40.2",
"AUDIO": "surround",
"RESOLUTION": "1921x818",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/6000kbit.m3u8"
],
"width": 1921,
"height": 818,
"bitrate": 6214307,
"videoCodec": "avc1.4d4028",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0,
"level": 6,
"details": {
"type": null,
"version": null,
"url": "https://bitdash-a.akamaihd.net/content/sintel/hls/video/6000kbit.m3u8",
"live": false,
"startSN": 0,
"targetduration": 2,
"totalduration": 888,
"averagetargetduration": 2,
"endSN": 443,
"startCC": 0,
"endCC": 0,
"tload": 20435.199999948964,
"PTSKnown": true
}
},
{
"attrs": {
"PROGRAM-ID": "1",
"BANDWIDTH": "10285391",
"CODECS": "avc1.4d4033,mp4a.40.2",
"AUDIO": "surround",
"RESOLUTION": "4096x1744",
"SUBTITLES": "subs"
},
"url": [
"https://bitdash-a.akamaihd.net/content/sintel/hls/video/10000kbit.m3u8"
],
"width": 4096,
"height": 1744,
"bitrate": 10285391,
"videoCodec": "avc1.4d4033",
"audioCodec": "mp4a.40.2",
"unknownCodecs": [],
"loadError": 0,
"fragmentError": false,
"urlId": 0,
"level": 7,
"details": {
"type": null,
"version": null,
"url": "https://bitdash-a.akamaihd.net/content/sintel/hls/video/10000kbit.m3u8",
"live": false,
"startSN": 0,
"targetduration": 2,
"totalduration": 888,
"averagetargetduration": 2,
"endSN": 443,
"startCC": 0,
"endCC": 0,
"tload": 20866.399999940768,
"PTSKnown": true
}
}
]
Fixed by #1867 Thanks @johnBartos! :)