Hls.js: Source no longer works in Chrome since v0.10.x

Created on 18 Jun 2018  路  6Comments  路  Source: video-dev/hls.js

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)

Environment

Console output
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
chrome://media-internals/ output
{
  "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
  }
}
Bug MuEncoding issue

All 6 comments

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:

  • Since v0.10.0, in Firefox OS X (El Capitan) I can't get it to work in a minimal testing setup, but the same setup works in Windows 10 on Firefox, and the manifest works on the demo even in Firefox OS X El Capitan.
  • Since v0.8.8 Safari in older OS X (again El Capitan but seems to also affect Sierra) can't play the manifest with negative PTS(?) but I don't think this is related at all, since it was already happening, and the other manifest in the issue does work in Chrome.

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! :)

Was this page helpful?
0 / 5 - 0 ratings

Related issues

krsvital picture krsvital  路  3Comments

NicholasAsimov picture NicholasAsimov  路  3Comments

nickcartery picture nickcartery  路  4Comments

shalommeoded picture shalommeoded  路  3Comments

crazytoad picture crazytoad  路  3Comments