Cannot play video with shorter audio after end of audio.
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
- [x] The issue observed is not already reported by searching on Github under https://github.com/video-dev/hls.js/issues
- [x] The issue occurs in the stable client (latest release) on https://hlsjs.video-dev.org/demo and not just on my page
- [x] The issue occurs in the latest client (main branch) on https://hlsjs-dev.video-dev.org/demo and not just on my page
- [x] The stream has correct Access-Control-Allow-Origin headers (CORS)
- [x] There are no network errors such as 404s in the browser console when trying to play the stream
Steps to reproduce
- 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"
}
}
]
}
Hi @ThomasLefranc,
I tried to look at the sample provided but it is not avaiable (403).
HLS.js requires audio and video to be aligned and populated for the duration of the asset. MSE based browser playback requires audio and video SourceBuffers to be buffered for playback to advance. HLS.js will insert silence in small gaps but it won't make up for tracks missing completely or multiple seconds of media missing in segments.