Cannot play video with shorter audio after end of audio.

Open
#7,266 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
42/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
typescript

Research direction

Reproduce the issue in the Hls.js demo with the provided stream and inspect the logged fragment parsing and buffering behavior around 16 seconds. Trace the stream-controller and transmuxer paths shown in the console output; done means the full 30-second video remains playable when audio ends.

Written by the indexing model from the issue text.

Description

Bug MSE Mux/Encoding issue Revisit-at-later-release-cycle sourcebuffer-track-mismatch Stream Issue
What version of Hls.js are you using?

1.6.2

What browser (including version) are you using?

Chrome 136.0.7103.114 (Official Build) (arm64)

What OS (including version) are you using?

MacOS Sequoia 15.5

Test stream

https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcdnvideo.webvideocore.net%2Fenc4_vdokh9d9l8b32aqr8677gr7vk179dqpq9ek8uec1gu2apm14bfr0nj7d75r6el8aq2bpsq29mg3e8631hfiibro31cuovl95ekqgqi5dunuv3tuktnh98m3akjagh6jcv25ol25khml3mbve1p9fdegnu54%2Findex.m3u8%3Fclip_id%3D22fvi72f963o&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

Configuration
{ }
Additional player setup steps

No response

Checklist
Steps to reproduce
  • Play the video
  • At the 16 second mark the video stops and an infinite spinner is displayed

Alternatively:

  • Seek the video after the 16 second mark
  • Video does not play and an infinitie spinner is displayed
Expected behaviour

I can play the video for the entire length even without audio.

What actually happened?

The video is 30 seconds long.
The audio stream for the video is only 16 seconds long starting at the beginning of the video stream.
When parsing the fragment containing the end of the audio, only the part with audio is buffered.
Then when parsing the next fragment none of it is buffered and fragment parsing is stopped.

According to https://github.com/video-dev/hls.js/issues/5550 video should be prioritized over the audio which does not seem to be the case here.

Console output
blob:https://hlsjs.video-dev.org/7b3ec0aa-6337-49aa-8900-c3b8cfa18cc4:1197 [log] > Debug logs enabled for "main" in hls.js version 1.6.2
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: IDLE->STOPPED
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://cdnvideo.webvideocore.net/enc4_vdokh9d9l8b32aqr8677gr7vk179dqpq9ek8uec1gu2apm14bfr0nj7d75r6el8aq2bpsq29mg3e8631hfiibro31cuovl95ekqgqi5dunuv3tuktnh98m3akjagh6jcv25ol25khml3mbve1p9fdegnu54/index.m3u8?clip_id=22fvi72f963o
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, 1 level(s) found, first bitrate: 0
buffer-controller.ts:266 [log] > [buffer-controller]: 1 bufferCodec event(s) expected.
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 (SDR @0) from level -1
base-stream-controller.ts:2093 [log] > [stream-controller]: STOPPED->IDLE
base-stream-controller.ts:2093 [log] > [subtitle-stream-controller]: STOPPED->IDLE
stream-controller.ts:671 [log] > [stream-controller]: Level 0 loaded [1,8][part-8--1], cc [0, 0] duration:30.367
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-30.37]
interstitials-controller.ts:1294 [log] > [interstitials]: resuming [primary: 0.00-30.37]
buffer-controller.ts:1319 [log] > [buffer-controller]: Updating MediaSource duration to 30.367
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 1 of level 0 (frag:[0.000-2.500]) cc: 0 [1-8], target: 0
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
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
2f823fbc-cd9a-4e8d-9165-f1cb9b0e6fd8:1197 [log] > Debug logs enabled for "main" in hls.js version 1.6.2
transmuxer-interface.ts:396 [log] > [mp4-remuxer]: ISGenerated flag reset
transmuxer-interface.ts:396 [log] > [mp4-remuxer]: initPTS & initDTS reset
transmuxer-interface.ts:396 [log] > [mp4-remuxer]: reset next timestamp
2f823fbc-cd9a-4e8d-9165-f1cb9b0e6fd8:10863 [log] > manifest codec:undefined, parsed codec:mp4a.40.2, channels:2, rate:44100 (ADTS object type:2 sampling index:4)
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
stream-controller.ts:1435 [log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2//mp4a.40.2]
stream-controller.ts:1464 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[/avc1.640028]
buffer-controller.ts:590 [log] > [buffer-controller]: BUFFER_CODECS: "audio,video" (current SB count 0)
buffer-controller.ts:1342 [log] > [buffer-controller]: checkPendingTracks (pending: 2 codec events expected: 1) {"audio":{"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"},"video":{"listeners":[],"codec":"avc1.640028","container":"video/mp4","metadata":{"width":1920,"height":1080},"id":"main"}}
buffer-controller.ts:1411 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2) {"listeners":[],"codec":"mp4a.40.2","container":"audio/mp4","levelCodec":"mp4a.40.2","metadata":{"channelCount":2},"id":"main"}
buffer-controller.ts:1411 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.640028) {"listeners":[],"codec":"avc1.640028","container":"video/mp4","metadata":{"width":1920,"height":1080},"id":"main"}
buffer-controller.ts:1380 [log] > [buffer-controller]: SourceBuffers created. Running queue: 
video: (SourceBuffer) 
audio: (SourceBuffer) 
audiovideo: (none) }
audio-stream-controller.ts:153 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 9090/90000
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.567])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 1 of level 0 (frag:[0.000-2.567] > buffer:[0.067-2.508])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 2 of level 0 (frag:[2.508-5.008]) cc: 0 [1-8], target: 2.508
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 2 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 2 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 2 of level 0 (frag:[2.508-5.067])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 2 of level 0 (frag:[2.508-5.067] > buffer:[0.067-5.015])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 3 of level 0 (frag:[5.016-9.183]) cc: 0 [1-8], target: 5.016
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 3 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 3 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 3 of level 0 (frag:[5.016-9.233])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 3 of level 0 (frag:[5.016-9.233] > buffer:[0.067-9.172])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 4 of level 0 (frag:[9.172-14.172]) cc: 0 [1-8], target: 9.172
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 4 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 4 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 4 of level 0 (frag:[9.172-14.233])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 4 of level 0 (frag:[9.172-14.233] > buffer:[0.067-14.187])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 5 of level 0 (frag:[14.187-19.187]) cc: 0 [1-8], target: 14.187
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 5 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 5 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 5 of level 0 (frag:[14.187-19.233])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 5 of level 0 (frag:[14.187-19.233] > buffer:[0.067-15.604])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
base-stream-controller.ts:899 [log] > [stream-controller]: Loading main sn: 6 of level 0 (frag:[15.604-20.604]) cc: 0 [1-8], target: 15.604
base-stream-controller.ts:2093 [log] > [stream-controller]: IDLE->FRAG_LOADING
base-stream-controller.ts:512 [log] > [stream-controller]: Loaded main sn: 6 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: FRAG_LOADING->PARSING
transmuxer-interface.ts:396 [log] > [transmuxer.ts]: Flushed main sn: 6 of level 0
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSING->PARSED
base-stream-controller.ts:2040 [log] > [stream-controller]: Parsed main sn: 6 of level 0 (frag:[19.233-24.233])
base-stream-controller.ts:708 [log] > [stream-controller]: Buffered main sn: 6 of level 0 (frag:[19.233-24.233] > buffer:[0.067-15.604])
base-stream-controller.ts:2093 [log] > [stream-controller]: PARSED->IDLE
Chrome media internals output
{
  "properties": {
    "render_id": 1604,
    "player_id": 0,
    "created": "2025-05-22 08:02:31.339025 UTC",
    "origin_url": "https://hlsjs.video-dev.org/",
    "kFrameUrl": "https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcdnvideo.webvideocore.net%2Fenc4_vdokh9d9l8b32aqr8677gr7vk179dqpq9ek8uec1gu2apm14bfr0nj7d75r6el8aq2bpsq29mg3e8631hfiibro31cuovl95ekqgqi5dunuv3tuktnh98m3akjagh6jcv25ol25khml3mbve1p9fdegnu54%2Findex.m3u8%3Fclip_id%3D22fvi72f963o&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==",
    "kFrameTitle": "hls.js demo",
    "url": "blob:https://hlsjs.video-dev.org/c775a476-ba71-4377-8bc1-544c6150053c",
    "info": "Selected VideoToolboxVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}",
    "kRendererName": "RendererImpl",
    "pipeline_state": "kPlaying",
    "kAudioTracks": [
      {
        "bytes per channel": 2,
        "bytes per frame": 4,
        "channel layout": "STEREO",
        "channels": 2,
        "codec": "aac",
        "codec delay": 0,
        "discard decoder delay": false,
        "encryption scheme": "Unencrypted",
        "has extra data": false,
        "profile": "unknown",
        "sample format": "Signed 16-bit",
        "samples per second": 44100,
        "seek preroll": "0us"
      }
    ],
    "kVideoTracks": [
      {
        "alpha mode": "is_opaque",
        "codec": "h264",
        "coded size": "1920x1080",
        "color space": {
          "matrix": "BT709",
          "primaries": "BT709",
          "range": "LIMITED",
          "transfer": "BT709"
        },
        "encryption scheme": "Unencrypted",
        "has extra data": false,
        "hdr metadata": "unset",
        "natural size": "1920x1080",
        "orientation": "0°",
        "profile": "h264 high",
        "visible rect": "0,0 1920x1080"
      }
    ],
    "kIsAudioDecryptingDemuxerStream": false,
    "kAudioDecoderName": "FFmpegAudioDecoder",
    "kIsPlatformAudioDecoder": false,
    "kIsVideoDecryptingDemuxerStream": false,
    "kVideoDecoderName": "VideoToolboxVideoDecoder",
    "kIsPlatformVideoDecoder": true,
    "debug": "Skipping audio splice trimming at PTS=2507732us. Found only 22us of overlap, need at least 1000us. Multiple occurrences may result in loss of A/V sync.",
    "dimensions": "1920x1080",
    "kResolution": "1920x1080",
    "duration": 30.367,
    "pipeline_buffering_state": {
      "for_suspended_start": false,
      "reason": "DEMUXER_UNDERFLOW",
      "state": "BUFFERING_HAVE_NOTHING"
    },
    "event": "kPlay",
    "audio_buffering_state": {
      "reason": "DEMUXER_UNDERFLOW",
      "state": "BUFFERING_HAVE_NOTHING"
    },
    "video_track_selected": "unset",
    "video_buffering_state": {
      "state": "BUFFERING_HAVE_ENOUGH"
    }
  },
  "events": [
    {
      "time": 0,
      "key": "created",
      "value": "2025-05-22 08:02:31.339025 UTC"
    },
    {
      "time": 0.22500000149011612,
      "key": "origin_url",
      "value": "https://hlsjs.video-dev.org/"
    },
    {
      "time": 0.22699999809265137,
      "key": "kFrameUrl",
      "value": "https://hlsjs.video-dev.org/demo/?src=https%3A%2F%2Fcdnvideo.webvideocore.net%2Fenc4_vdokh9d9l8b32aqr8677gr7vk179dqpq9ek8uec1gu2apm14bfr0nj7d75r6el8aq2bpsq29mg3e8631hfiibro31cuovl95ekqgqi5dunuv3tuktnh98m3akjagh6jcv25ol25khml3mbve1p9fdegnu54%2Findex.m3u8%3Fclip_id%3D22fvi72f963o&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ=="
    },
    {
      "time": 0.2280000001192093,
      "key": "kFrameTitle",
      "value": "hls.js demo"
    },
    {
      "time": 0.2679999992251396,
      "key": "url",
      "value": "blob:https://hlsjs.video-dev.org/c775a476-ba71-4377-8bc1-544c6150053c"
    },
    {
      "time": 0.28700000047683716,
      "key": "info",
      "value": "ChunkDemuxer"
    },
    {
      "time": 0.2929999977350235,
      "key": "kRendererName",
      "value": "RendererImpl"
    },
    {
      "time": 1.1990000009536743,
      "key": "pipeline_state",
      "value": "kStarting"
    },
    {
      "time": 200.96400000154972,
      "key": "kAudioTracks",
      "value": [
        {
          "bytes per channel": 2,
          "bytes per frame": 4,
          "channel layout": "STEREO",
          "channels": 2,
          "codec": "aac",
          "codec delay": 0,
          "discard decoder delay": false,
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "profile": "unknown",
          "sample format": "Signed 16-bit",
          "samples per second": 44100,
          "seek preroll": "0us"
        }
      ]
    },
    {
      "time": 201.00199999660254,
      "key": "kVideoTracks",
      "value": [
        {
          "alpha mode": "is_opaque",
          "codec": "h264",
          "coded size": "1920x1080",
          "color space": {
            "matrix": "BT709",
            "primaries": "BT709",
            "range": "LIMITED",
            "transfer": "BT709"
          },
          "encryption scheme": "Unencrypted",
          "has extra data": false,
          "hdr metadata": "unset",
          "natural size": "1920x1080",
          "orientation": "0°",
          "profile": "h264 high",
          "visible rect": "0,0 1920x1080"
        }
      ]
    },
    {
      "time": 202.84700000286102,
      "key": "kIsAudioDecryptingDemuxerStream",
      "value": false
    },
    {
      "time": 202.847999997437,
      "key": "kAudioDecoderName",
      "value": "FFmpegAudioDecoder"
    },
    {
      "time": 202.84899999946356,
      "key": "kIsPlatformAudioDecoder",
      "value": false
    },
    {
      "time": 202.8530000001192,
      "key": "info",
      "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 44100, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
    },
    {
      "time": 202.8779999986291,
      "key": "info",
      "value": "Cannot select DecryptingVideoDecoder for video decoding"
    },
    {
      "time": 207.97200000286102,
      "key": "kIsVideoDecryptingDemuxerStream",
      "value": false
    },
    {
      "time": 207.97500000149012,
      "key": "kVideoDecoderName",
      "value": "VideoToolboxVideoDecoder"
    },
    {
      "time": 208.09700000286102,
      "key": "kIsPlatformVideoDecoder",
      "value": true
    },
    {
      "time": 208.1199999973178,
      "key": "info",
      "value": "Selected VideoToolboxVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
    },
    {
      "time": 208.14000000059605,
      "key": "pipeline_state",
      "value": "kPlaying"
    },
    {
      "time": 223.1059999987483,
      "key": "debug",
      "value": "Skipping audio splice trimming at PTS=2507732us. Found only 22us of overlap, need at least 1000us. Multiple occurrences may result in loss of A/V sync."
    },
    {
      "time": 226.20600000023842,
      "key": "dimensions",
      "value": "1920x1080"
    },
    {
      "time": 226.20799999684095,
      "key": "kResolution",
      "value": "1920x1080"
    },
    {
      "time": 29.152000002563,
      "key": "duration",
      "value": 30.367
    },
    {
      "time": 228.54699999839067,
      "key": "pipeline_buffering_state",
      "value": {
        "for_suspended_start": false,
        "state": "BUFFERING_HAVE_ENOUGH"
      }
    },
    {
      "time": 17760.93100000173,
      "key": "pipeline_state",
      "value": "kSuspending"
    },
    {
      "time": 17761.53299999982,
      "key": "pipeline_state",
      "value": "kSuspended"
    },
    {
      "time": 17761.608999997377,
      "key": "event",
      "value": "kSuspended"
    },
    {
      "time": 33834.66099999845,
      "key": "info",
      "value": "Effective playback rate changed from 0 to 1"
    },
    {
      "time": 33834.91700000316,
      "key": "kRendererName",
      "value": "RendererImpl"
    },
    {
      "time": 33834.96100000292,
      "key": "pipeline_state",
      "value": "kResuming"
    },
    {
      "time": 33845.88099999726,
      "key": "kIsAudioDecryptingDemuxerStream",
      "value": false
    },
    {
      "time": 33845.88700000197,
      "key": "kAudioDecoderName",
      "value": "FFmpegAudioDecoder"
    },
    {
      "time": 33845.890000000596,
      "key": "kIsPlatformAudioDecoder",
      "value": false
    },
    {
      "time": 33845.909999996424,
      "key": "info",
      "value": "Selected FFmpegAudioDecoder for audio decoding, config: codec: aac, profile: unknown, bytes_per_channel: 2, channel_layout: STEREO, channels: 2, samples_per_second: 44100, sample_format: Signed 16-bit, bytes_per_frame: 4, seek_preroll: 0us, codec_delay: 0, has extra data: false, encryption scheme: Unencrypted, discard decoder delay: false, target_output_channel_layout: STEREO, target_output_sample_format: Unknown sample format, has aac extra data: true"
    },
    {
      "time": 33846.02199999988,
      "key": "info",
      "value": "Cannot select DecryptingVideoDecoder for video decoding"
    },
    {
      "time": 33846.99700000137,
      "key": "kIsVideoDecryptingDemuxerStream",
      "value": false
    },
    {
      "time": 33846.99899999797,
      "key": "kVideoDecoderName",
      "value": "VideoToolboxVideoDecoder"
    },
    {
      "time": 33847.00100000203,
      "key": "kIsPlatformVideoDecoder",
      "value": true
    },
    {
      "time": 33847.04500000179,
      "key": "info",
      "value": "Selected VideoToolboxVideoDecoder for video decoding, config: codec: h264, profile: h264 high, level: not available, alpha_mode: is_opaque, coded size: [1920,1080], visible rect: [0,0,1920,1080], natural size: [1920,1080], has extra data: false, encryption scheme: Unencrypted, rotation: 0°, flipped: 0, color space: {primaries:BT709, transfer:BT709, matrix:BT709, range:LIMITED}"
    },
    {
      "time": 33847.109999999404,
      "key": "pipeline_state",
      "value": "kPlaying"
    },
    {
      "time": 33875.69399999827,
      "key": "dimensions",
      "value": "1920x1080"
    },
    {
      "time": 33875.69799999893,
      "key": "kResolution",
      "value": "1920x1080"
    },
    {
      "time": 33878.72699999809,
      "key": "pipeline_buffering_state",
      "value": {
        "for_suspended_start": false,
        "state": "BUFFERING_HAVE_ENOUGH"
      }
    },
    {
      "time": 33834.83100000024,
      "key": "event",
      "value": "kPlay"
    },
    {
      "time": 49474.76200000197,
      "key": "audio_buffering_state",
      "value": {
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      }
    },
    {
      "time": 49474.92499999702,
      "key": "pipeline_buffering_state",
      "value": {
        "for_suspended_start": false,
        "reason": "DEMUXER_UNDERFLOW",
        "state": "BUFFERING_HAVE_NOTHING"
      }
    },
    {
      "time": 60607.83799999952,
      "key": "video_track_selected",
      "value": "unset"
    },
    {
      "time": 60608.7669999972,
      "key": "video_buffering_state",
      "value": {
        "state": "BUFFERING_HAVE_ENOUGH"
      }
    }
  ]
}
Dominant language
TypeScript
Stars
16.9k
Forks
2.8k
Avg merge
1d 12h
Merged PRs (30d)
27

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from video-dev/hls.js

All issues in video-dev/hls.js

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.