Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lost date-range information for some streams #5531

Closed
5 tasks done
yajin2021 opened this issue Jun 1, 2023 · 6 comments · Fixed by #5546
Closed
5 tasks done

Lost date-range information for some streams #5531

yajin2021 opened this issue Jun 1, 2023 · 6 comments · Fixed by #5546

Comments

@yajin2021
Copy link
Contributor

What version of Hls.js are you using?

v1.4.4

What browser (including version) are you using?

Google Chrome Version 109.0.5414.119 (Official Build) (arm64)

What OS (including version) are you using?

macOS Montery 12.6

Test stream

https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index.m3u8

Configuration

{
  "debug": true,
  "enableWorker": true,
  "lowLatencyMode": true,
  "backBufferLength": 90
}

Additional player setup steps

No response

Checklist

Steps to reproduce

  1. play stream
  2. check hls._media.textTracks

Expected behaviour

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:29131342
#EXT-X-MAP:URI="../Reference_Stream_Channel_video_3_track_1997080000_init.mp4"
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:35:57.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131342.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131343.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131344.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:03.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131345.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131346.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131347.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:09.720Z
#EXTINF:2.720,
../Reference_Stream_Channel_video_3_29131348.mp4?m=1640054247
#EXT-X-DATERANGE:ID="956704",START-DATE="2023-06-01T09:36:12.440Z",PLANNED-DURATION=31.000,SCTE35-OUT=0xFC302500013399491800FFF01405000E99207FEFFE0D0AA1E0FE002A927000010101000029B6F550
#EXTINF:3.280,
../Reference_Stream_Channel_video_3_29131349.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:15.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131350.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131351.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131352.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:21.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131353.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131354.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131355.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:27.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131356.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131357.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131358.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:33.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131359.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131360.mp4?m=1640054247
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131361.mp4?m=1640054247
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:39.720Z
#EXTINF:6.000,
../Reference_Stream_Channel_video_3_29131362.mp4?m=1640054247
#EXT-X-DATERANGE:ID="956704",START-DATE="2023-06-01T09:36:12.440Z",END-DATE="2023-06-01T09:36:45.720Z",DURATION=33.280
#EXT-X-PROGRAM-DATE-TIME:2023-06-01T09:36:45.720Z
#EXTINF:2.000,
../Reference_Stream_Channel_video_3_29131363.mp4?m=1640054247

.......

The DURATION and END-DATE of tag EXT-X-DATERANGE '956704' can be parsed. According RFC 8216, EXT-X-DATERANGE is valid as long as it has 'ID' and 'START-DATE' attributes.

What actually happened?

Cannot get 'DURATION' and 'END-DATE' property of EXT-X-DATERANGE.

Console output

17:43:28.157 main.js:339 Using Hls.js config: {debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90}
17:43:28.158 logger.ts:74 [log] > Debug logs enabled for "Hls instance" in hls.js version 1.4.4
17:43:28.167 hls.ts:410 [log] > stopLoad
17:43:28.167 hls.ts:379 [log] > loadSource:https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index.m3u8
17:43:28.167 stream-controller.ts:566 [log] > [stream-controller]: Trigger BUFFER_RESET
17:43:28.168 hls.ts:351 [log] > attachMedia
17:43:28.171 buffer-controller.ts:800 [log] > [buffer-controller]: Media source opened
17:43:28.171 base-stream-controller.ts:1745 [log] > [subtitle-stream-controller]: STOPPED->IDLE
17:43:28.494 level-controller.ts:269 [log] > [level-controller]: manifest loaded, 3 level(s) found, first bitrate: 5712974
17:43:28.494 buffer-controller.ts:148 [log] > 2 bufferCodec event(s) expected
17:43:28.496 hls.ts:400 [log] > startLoad(-1)
17:43:28.496 level-controller.ts:351 [log] > [level-controller]: Switching to level 2 from level -1
17:43:28.496 audio-track-controller.ts:138 [log] > [audio-track-controller]: Updating audio tracks, 1 track(s) found in group:audio_0
17:43:28.497 audio-track-controller.ts:195 [log] > [audio-track-controller]: Switching to audio-track 0 "eng" lang:eng group:audio_0
17:43:28.497 base-stream-controller.ts:1610 [log] > [audio-stream-controller]: Reset loading state
17:43:28.497 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: STOPPED->IDLE
17:43:28.497 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->WAITING_TRACK
17:43:28.498 level-controller.ts:520 [log] > [level-controller]: Loading level index 2 with URI 1/1 https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index_1.m3u8
17:43:28.499 base-stream-controller.ts:1745 [log] > [stream-controller]: STOPPED->IDLE
17:43:28.499 audio-track-controller.ts:273 [log] > [audio-track-controller]: loading audio-track playlist 0 "eng" lang:eng group:audio_0
17:43:28.499 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: WAITING_TRACK->STOPPED
17:43:28.499 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: STOPPED->WAITING_TRACK
17:43:28.500 base-stream-controller.ts:1745 [log] > [subtitle-stream-controller]: IDLE->STOPPED
17:43:28.500 base-stream-controller.ts:1745 [log] > [subtitle-stream-controller]: STOPPED->IDLE
17:43:28.908 audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "eng" lang:eng group:audio_0 loaded [29131411-29131551]
17:43:28.908 base-playlist-controller.ts:261 [log] > [audio-track-controller]: reload live playlist 0 in 3591 ms
17:43:28.912 base-playlist-controller.ts:261 [log] > [level-controller]: reload live playlist 2 in 3584 ms
17:43:28.912 stream-controller.ts:631 [log] > [stream-controller]: Level 2 loaded [29131411,29131551][part-29131551--1], cc [0, 0] duration:298
17:43:28.912 base-stream-controller.ts:1375 [log] > [stream-controller]: Live playlist sliding: 0.00 start-sn: na->29131411 prev-sn: na fragments: 141
17:43:28.912 buffer-controller.ts:692 [log] > [buffer-controller]: Updating Media Source duration to 298.000
17:43:28.913 id3-track-controller.ts:362 300908 com.apple.quicktime.HLS 262 33.480000019073486 PLANNED-DURATION
17:43:28.913 id3-track-controller.ts:362 300908 com.apple.quicktime.HLS 262 33.480000019073486 SCTE35-OUT
17:43:28.913 id3-track-controller.ts:362 702524 com.apple.quicktime.HLS 24 34.96000003814697 PLANNED-DURATION
17:43:28.914 id3-track-controller.ts:362 702524 com.apple.quicktime.HLS 24 34.96000003814697 SCTE35-OUT
17:43:28.914 id3-track-controller.ts:362 784432 com.apple.quicktime.HLS 144 34.72000002861023 PLANNED-DURATION
17:43:28.914 id3-track-controller.ts:362 784432 com.apple.quicktime.HLS 144 34.72000002861023 SCTE35-OUT
17:43:28.915 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment initSegment cc: 0 of [29131411-29131551] level: 2, target: 0
17:43:28.915 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:28.916 audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "eng" lang:eng group:audio_0 loaded [29131411-29131551]
17:43:28.916 base-playlist-controller.ts:148 [log] > [audio-track-controller]: live playlist 0 MISSED
17:43:28.916 base-playlist-controller.ts:261 [log] > [audio-track-controller]: reload live playlist 0 in 3583 ms
17:43:28.916 audio-stream-controller.ts:497 [log] > [audio-stream-controller]: Track 0 loaded [29131411,29131551][part-29131551--1],duration:297.97099999999966
17:43:28.916 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: WAITING_TRACK->IDLE
17:43:28.916 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment initSegment cc: 0 of [29131411-29131551] track: 0, target: 0
17:43:28.916 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:29.013 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->IDLE
17:43:29.013 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: initSegment of level 2 (frag:[NaN-NaN] > buffer:)
17:43:29.013 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131546 cc: 0 of [29131411-29131551] level: 2, target: 286.003
17:43:29.013 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:29.032 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->IDLE
17:43:29.033 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: initSegment of track 0 (frag:[NaN-NaN] > buffer:)
17:43:29.033 audio-stream-controller.ts:886 [log] > [audio-stream-controller]: Waiting for video PTS in continuity counter 0 of live stream before loading audio fragment 29131546 of level 0
17:43:29.033 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->WAITING_INIT_PTS
17:43:29.033 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: WAITING_INIT_PTS->IDLE
17:43:29.101 audio-stream-controller.ts:886 [log] > [audio-stream-controller]: Waiting for video PTS in continuity counter 0 of live stream before loading audio fragment 29131546 of level 0
17:43:29.101 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->WAITING_INIT_PTS
17:43:29.201 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: WAITING_INIT_PTS->IDLE
17:43:29.302 audio-stream-controller.ts:886 [log] > [audio-stream-controller]: Waiting for video PTS in continuity counter 0 of live stream before loading audio fragment 29131546 of level 0
17:43:29.302 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->WAITING_INIT_PTS
17:43:29.383 transmuxer-interface.ts:85 [log] > injecting Web Worker for "main"
17:43:29.386 transmuxer-interface.ts:227 [log] > [transmuxer-interface, main]: Starting new transmux session for sn: 29131546 p: -1 level: 2 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 286
        initSegmentChange: true
17:43:29.386 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131546 of level 2
17:43:29.405 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: WAITING_INIT_PTS->IDLE
17:43:29.416 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:29.416 stream-controller.ts:1261 [log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.4D4028/avc1.4D4028]
17:43:29.416 audio-stream-controller.ts:128 [log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 62861869.20416
17:43:29.417 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131546 of level 2
17:43:29.417 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:29.503 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131546 cc: 0 of [29131411-29131551] track: 0, target: 286.005
17:43:29.503 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:29.613 transmuxer-interface.ts:85 [log] > injecting Web Worker for "audio"
17:43:29.617 transmuxer-interface.ts:227 [log] > [transmuxer-interface, audio]: Starting new transmux session for sn: 29131546 p: -1 level: 0 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: false
        timeOffset: 285.9619999999997
        initSegmentChange: true
17:43:29.617 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131546 of level 0
17:43:29.647 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:29.647 audio-stream-controller.ts:848 [log] > [audio-stream-controller]: Init audio buffer, container:audio/mp4, codecs[parsed]=[mp4a.40.2]
17:43:29.647 buffer-controller.ts:765 [log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.4D4028)
17:43:29.647 buffer-controller.ts:765 [log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2)
17:43:29.647 stream-controller.ts:844 [log] > [stream-controller]: Alternate track found, use video.buffered to schedule main fragment loading
17:43:29.648 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131546 of level 0
17:43:29.648 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:29.649 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131546 of track 0 (frag:[285.962-288.009] > buffer:[286.004-288.009])
17:43:29.650 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:29.651 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131546 of level 2 (frag:[286.000-288.000] > buffer:[286.040-288.040])
17:43:29.651 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:29.651 stream-controller.ts:1006 [log] > [stream-controller]: adjusting start position by 0.036399902343760004 to match buffer start
17:43:29.651 stream-controller.ts:1010 [log] > [stream-controller]: seek to target start position 286.04 from current time 0
17:43:29.652 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131547 cc: 0 of [29131411-29131551] level: 2, target: 288.04
17:43:29.652 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:29.653 base-stream-controller.ts:241 [log] > [stream-controller]: media seeking to 286.040, state: FRAG_LOADING
17:43:29.654 base-stream-controller.ts:241 [log] > [audio-stream-controller]: media seeking to 286.040, state: IDLE
17:43:29.654 base-stream-controller.ts:241 [log] > [subtitle-stream-controller]: media seeking to 286.040, state: IDLE
17:43:29.654 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131547 cc: 0 of [29131411-29131551] track: 0, target: 288.009
17:43:29.654 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:29.677 stream-controller.ts:546 [log] > [stream-controller]: Media seeked to 286.040
17:43:29.757 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131547 of level 0
17:43:29.757 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:29.757 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131547 of level 0
17:43:29.757 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:29.758 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131547 of track 0 (frag:[287.967-290.015] > buffer:[286.004-290.015])
17:43:29.758 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:29.758 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131548 cc: 0 of [29131411-29131551] track: 0, target: 290.015
17:43:29.758 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:29.960 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131547 of level 2
17:43:29.962 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:29.962 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131547 of level 2
17:43:29.963 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:29.963 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131547 of level 2 (frag:[288.000-290.000] > buffer:[286.040-290.040])
17:43:29.963 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:29.963 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131548 cc: 0 of [29131411-29131551] level: 2, target: 290.04
17:43:29.963 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:30.168 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131548 of level 0
17:43:30.168 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:30.168 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131548 of level 0
17:43:30.169 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:30.169 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131548 of track 0 (frag:[289.972-292.020] > buffer:[286.004-292.020])
17:43:30.169 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:30.169 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131549 cc: 0 of [29131411-29131551] track: 0, target: 292.02
17:43:30.169 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:30.281 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131548 of level 2
17:43:30.282 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:30.283 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131548 of level 2
17:43:30.283 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:30.283 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131548 of level 2 (frag:[290.000-292.000] > buffer:[286.040-292.040])
17:43:30.283 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:30.284 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131549 cc: 0 of [29131411-29131551] level: 2, target: 292.04
17:43:30.284 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:30.556 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131549 of level 0
17:43:30.557 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:30.557 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131549 of level 0
17:43:30.557 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:30.558 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131549 of track 0 (frag:[291.977-294.004] > buffer:[286.004-294.004])
17:43:30.558 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:30.558 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131550 cc: 0 of [29131411-29131551] track: 0, target: 294.004
17:43:30.558 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:30.898 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131549 of level 2
17:43:30.899 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:30.900 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131549 of level 2
17:43:30.900 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:30.902 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131549 of level 2 (frag:[292.000-294.000] > buffer:[286.040-294.040])
17:43:30.902 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:30.902 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131550 cc: 0 of [29131411-29131551] level: 2, target: 294.04
17:43:30.902 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:30.934 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131550 of level 0
17:43:30.934 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:30.934 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131550 of level 0
17:43:30.934 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:30.935 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131550 of track 0 (frag:[293.961-296.009] > buffer:[286.004-296.009])
17:43:30.935 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:30.935 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131551 cc: 0 of [29131411-29131551] track: 0, target: 296.009
17:43:30.935 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:31.316 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131551 of level 0
17:43:31.316 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:31.317 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131551 of level 0
17:43:31.317 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:31.317 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131551 of track 0 (frag:[295.966-298.015] > buffer:[286.004-298.015])
17:43:31.317 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:31.495 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131550 of level 2
17:43:31.496 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:31.496 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131550 of level 2
17:43:31.496 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:31.497 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131550 of level 2 (frag:[294.000-296.000] > buffer:[286.040-296.040])
17:43:31.497 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:31.497 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131551 cc: 0 of [29131411-29131551] level: 2, target: 296.04
17:43:31.497 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:32.500 level-controller.ts:520 [log] > [level-controller]: Loading level index 2 with URI 1/1 https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index_1.m3u8
17:43:32.507 audio-track-controller.ts:273 [log] > [audio-track-controller]: loading audio-track playlist 0 "eng" lang:eng group:audio_0
17:43:32.576 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131551 of level 2
17:43:32.577 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:32.577 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131551 of level 2
17:43:32.578 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:32.578 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131551 of level 2 (frag:[296.000-298.000] > buffer:[286.040-298.040])
17:43:32.579 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:32.885 base-playlist-controller.ts:148 [log] > [level-controller]: live playlist 2 REFRESHED 29131553--1
17:43:32.885 base-playlist-controller.ts:261 [log] > [level-controller]: reload live playlist 2 in 1611 ms
17:43:32.885 stream-controller.ts:631 [log] > [stream-controller]: Level 2 loaded [29131413,29131553][part-29131553--1], cc [0, 0] duration:298
17:43:32.886 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131552 cc: 0 of [29131413-29131553] level: 2, target: 298.04
17:43:32.886 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:32.889 buffer-controller.ts:692 [log] > [buffer-controller]: Updating Media Source duration to 302.000
17:43:32.944 audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "eng" lang:eng group:audio_0 loaded [29131413-29131553]
17:43:32.944 base-playlist-controller.ts:148 [log] > [audio-track-controller]: live playlist 0 REFRESHED 29131553--1
17:43:32.944 base-playlist-controller.ts:261 [log] > [audio-track-controller]: reload live playlist 0 in 1539 ms
17:43:32.944 audio-stream-controller.ts:497 [log] > [audio-stream-controller]: Track 0 loaded [29131413,29131553][part-29131553--1],duration:297.99367333646614
17:43:32.944 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131552 cc: 0 of [29131413-29131553] track: 0, target: 298.015
17:43:32.944 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:33.330 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131552 of level 0
17:43:33.330 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:33.330 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131552 of level 0
17:43:33.331 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:33.331 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131552 of track 0 (frag:[298.015-300.020] > buffer:[286.004-300.020])
17:43:33.331 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:33.331 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131553 cc: 0 of [29131413-29131553] track: 0, target: 300.02
17:43:33.331 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:33.539 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131552 of level 2
17:43:33.540 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:33.541 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131552 of level 2
17:43:33.541 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:33.542 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131552 of level 2 (frag:[298.000-300.000] > buffer:[286.040-300.040])
17:43:33.542 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:33.542 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131553 cc: 0 of [29131413-29131553] level: 2, target: 300.04
17:43:33.542 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:33.759 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131553 of level 0
17:43:33.760 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:33.760 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131553 of level 0
17:43:33.760 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:33.761 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131553 of track 0 (frag:[300.020-302.004] > buffer:[286.004-302.004])
17:43:33.762 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:34.166 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131553 of level 2
17:43:34.167 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:34.167 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131553 of level 2
17:43:34.167 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:34.168 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131553 of level 2 (frag:[300.000-302.000] > buffer:[286.040-302.040])
17:43:34.168 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:34.484 audio-track-controller.ts:273 [log] > [audio-track-controller]: loading audio-track playlist 0 "eng" lang:eng group:audio_0
17:43:34.500 level-controller.ts:520 [log] > [level-controller]: Loading level index 2 with URI 1/1 https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index_1.m3u8
17:43:34.853 audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "eng" lang:eng group:audio_0 loaded [29131414-29131554]
17:43:34.853 base-playlist-controller.ts:148 [log] > [audio-track-controller]: live playlist 0 REFRESHED 29131554--1
17:43:34.853 base-playlist-controller.ts:261 [log] > [audio-track-controller]: reload live playlist 0 in 1635 ms
17:43:34.853 audio-stream-controller.ts:497 [log] > [audio-stream-controller]: Track 0 loaded [29131414,29131554][part-29131554--1],duration:298.0150066715479
17:43:34.853 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131554 cc: 0 of [29131414-29131554] track: 0, target: 302.004
17:43:34.854 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:34.883 base-playlist-controller.ts:148 [log] > [level-controller]: live playlist 2 REFRESHED 29131554--1
17:43:34.883 base-playlist-controller.ts:261 [log] > [level-controller]: reload live playlist 2 in 1613 ms
17:43:34.883 stream-controller.ts:631 [log] > [stream-controller]: Level 2 loaded [29131414,29131554][part-29131554--1], cc [0, 0] duration:298
17:43:34.884 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131554 cc: 0 of [29131414-29131554] level: 2, target: 302.04
17:43:34.884 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:34.886 buffer-controller.ts:692 [log] > [buffer-controller]: Updating Media Source duration to 304.000
17:43:35.267 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131554 of level 0
17:43:35.268 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:35.268 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131554 of level 0
17:43:35.269 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:35.274 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131554 of track 0 (frag:[302.004-304.009] > buffer:[286.004-304.009])
17:43:35.274 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:35.510 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131554 of level 2
17:43:35.511 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:35.511 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131554 of level 2
17:43:35.511 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:35.512 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131554 of level 2 (frag:[302.000-304.000] > buffer:[286.040-304.040])
17:43:35.512 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:36.492 audio-track-controller.ts:273 [log] > [audio-track-controller]: loading audio-track playlist 0 "eng" lang:eng group:audio_0
17:43:36.500 level-controller.ts:520 [log] > [level-controller]: Loading level index 2 with URI 1/1 https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index_1.m3u8
17:43:36.858 audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "eng" lang:eng group:audio_0 loaded [29131415-29131555]
17:43:36.858 base-playlist-controller.ts:148 [log] > [audio-track-controller]: live playlist 0 REFRESHED 29131555--1
17:43:36.858 base-playlist-controller.ts:261 [log] > [audio-track-controller]: reload live playlist 0 in 1635 ms
17:43:36.858 audio-stream-controller.ts:497 [log] > [audio-stream-controller]: Track 0 loaded [29131415,29131555][part-29131555--1],duration:298.0153400022586
17:43:36.858 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131555 cc: 0 of [29131415-29131555] track: 0, target: 304.009
17:43:36.858 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:36.988 base-playlist-controller.ts:148 [log] > [level-controller]: live playlist 2 REFRESHED 29131555--1
17:43:36.988 base-playlist-controller.ts:261 [log] > [level-controller]: reload live playlist 2 in 1508 ms
17:43:36.988 stream-controller.ts:631 [log] > [stream-controller]: Level 2 loaded [29131415,29131555][part-29131555--1], cc [0, 0] duration:298
17:43:36.988 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131555 cc: 0 of [29131415-29131555] level: 2, target: 304.04
17:43:36.989 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:36.992 buffer-controller.ts:692 [log] > [buffer-controller]: Updating Media Source duration to 306.000
17:43:37.244 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131555 of level 0
17:43:37.245 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:37.245 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131555 of level 0
17:43:37.245 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:37.245 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131555 of track 0 (frag:[304.009-306.015] > buffer:[286.004-306.015])
17:43:37.246 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:37.470 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131555 of level 2
17:43:37.471 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:37.472 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131555 of level 2
17:43:37.472 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:37.473 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131555 of level 2 (frag:[304.000-306.000] > buffer:[286.040-306.040])
17:43:37.473 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:38.500 audio-track-controller.ts:273 [log] > [audio-track-controller]: loading audio-track playlist 0 "eng" lang:eng group:audio_0
17:43:38.501 level-controller.ts:520 [log] > [level-controller]: Loading level index 2 with URI 1/1 https://d24rwxnt7vw9qb.cloudfront.net/out/v1/62a7ec8a0f3b4f19ad76eac54f2f2dce/cmaf-clear/index_1.m3u8
17:43:38.852 audio-track-controller.ts:90 [log] > [audio-track-controller]: audio-track 0 "eng" lang:eng group:audio_0 loaded [29131416-29131556]
17:43:38.852 base-playlist-controller.ts:148 [log] > [audio-track-controller]: live playlist 0 REFRESHED 29131556--1
17:43:38.853 base-playlist-controller.ts:261 [log] > [audio-track-controller]: reload live playlist 0 in 1646 ms
17:43:38.853 audio-stream-controller.ts:497 [log] > [audio-stream-controller]: Track 0 loaded [29131416,29131556][part-29131556--1],duration:298.01567333646614
17:43:38.853 base-stream-controller.ts:727 [log] > [audio-stream-controller]: Loading fragment 29131556 cc: 0 of [29131416-29131556] track: 0, target: 306.015
17:43:38.853 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->FRAG_LOADING
17:43:38.878 base-playlist-controller.ts:148 [log] > [level-controller]: live playlist 2 REFRESHED 29131556--1
17:43:38.878 base-playlist-controller.ts:261 [log] > [level-controller]: reload live playlist 2 in 1618 ms
17:43:38.878 stream-controller.ts:631 [log] > [stream-controller]: Level 2 loaded [29131416,29131556][part-29131556--1], cc [0, 0] duration:298
17:43:38.879 base-stream-controller.ts:727 [log] > [stream-controller]: Loading fragment 29131556 cc: 0 of [29131416-29131556] level: 2, target: 306.04
17:43:38.879 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->FRAG_LOADING
17:43:38.882 buffer-controller.ts:692 [log] > [buffer-controller]: Updating Media Source duration to 308.000
17:43:39.300 base-stream-controller.ts:386 [log] > [audio-stream-controller]: Loaded fragment 29131556 of level 0
17:43:39.300 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: FRAG_LOADING->PARSING
17:43:39.300 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131556 of level 0
17:43:39.300 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSING->PARSED
17:43:39.301 base-stream-controller.ts:556 [log] > [audio-stream-controller]: Buffered audio sn: 29131556 of track 0 (frag:[306.015-308.020] > buffer:[286.004-308.020])
17:43:39.301 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: PARSED->IDLE
17:43:39.469 base-stream-controller.ts:386 [log] > [stream-controller]: Loaded fragment 29131556 of level 2
17:43:39.470 base-stream-controller.ts:1745 [log] > [stream-controller]: FRAG_LOADING->PARSING
17:43:39.470 transmuxer-interface.ts:379 [log] > [transmuxer.ts]: Flushed fragment 29131556 of level 2
17:43:39.470 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSING->PARSED
17:43:39.471 base-stream-controller.ts:556 [log] > [stream-controller]: Buffered main sn: 29131556 of level 2 (frag:[306.000-308.000] > buffer:[286.040-308.040])
17:43:39.471 base-stream-controller.ts:1745 [log] > [stream-controller]: PARSED->IDLE
17:43:39.529 hls.ts:328 [log] > destroy
17:43:39.529 hls.ts:360 [log] > detachMedia
17:43:39.529 buffer-controller.ts:175 [log] > [buffer-controller]: media source detaching
17:43:39.530 base-stream-controller.ts:1745 [log] > [stream-controller]: IDLE->STOPPED
17:43:39.530 base-stream-controller.ts:1745 [log] > [audio-stream-controller]: IDLE->STOPPED
17:43:39.530 base-stream-controller.ts:1745 [log] > [subtitle-stream-controller]: IDLE->STOPPED

Chrome media internals output

No response

@yajin2021 yajin2021 added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Jun 1, 2023
@robwalch
Copy link
Collaborator

robwalch commented Jun 2, 2023

Cannot get 'DURATION' and 'END-DATE' property of EXT-X-DATERANGE.

Get the property from where, a TextTrack cue? Please provide a JavaScript example.

These properties are conveyed as cue.duration, and are intended to match the behavior of HTML5 based HLS playback in Safari.

You can also extract all date range data from Level.details.dateRanges.

@robwalch robwalch added Works as expected and removed Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Jun 2, 2023
@yajin2021
Copy link
Contributor Author

yajin2021 commented Jun 5, 2023

When playing index, run the following code in the console and observe the changes of cues of texttrack.

window.setInterval(function() {
    keys = Object.keys(hls._media.textTracks[0].cues)
    cues = hls._media.textTracks[0].cues
    keys.forEach((elem) => { if (cues[elem].type === "com.apple.quicktime.HLS" && (cues[elem].endTime - cues[elem].startTime) < 3) { console.warn('endTime=', cues[elem].endTime, 'startTime', cues[elem].startTime, 'id=', cues[elem].id) }});
}, 1000)

There is no obvious cue-in signs shown in this stream. The cue-out as follows:

#EXT-X-DATERANGE:ID="283717",START-DATE="2023-06-05T05:40:12.320Z",PLANNED-DURATION=31.000,SCTE35-OUT=0xFC302500013393CAD800FFF01405000454457FEFFEFF060AB0FE002A9270000101010000E6C1DFCA

The cue-in like this:

#EXT-X-DATERANGE:ID="283717",START-DATE="2023-06-05T05:40:12.320Z",END-DATE="2023-06-05T05:40:45.720Z",DURATION=33.400

When a new cue-out appears in the playlist, as long as there is corresponding cue-in mark appears, the endTime of this cue will always be about two seconds greater than the corresponding startTime. There are similar phenomena on chrome and firefox.

2023-06-05 12 35 13

After corresponding cue-in mark arrives, the end time of cues will be updated to the real value.

@yajin2021
Copy link
Contributor Author

yajin2021 commented Jun 5, 2023

In the id3-track-controller.ts, if cue-outs of date-range are not end, endTime of cue uses MAX_CUE_ENDTIME to assign its values. But the values read from cue of the media are not consistent.

There is no way to know the real duration of the advertisement for user, especially when the playback time is near the live point. So I would like to have a single cue to mark END-DATE or DURATION, just like PLANNED-DURATION.

@robwalch
Copy link
Collaborator

robwalch commented Jun 5, 2023

if cue-outs of date-range are not end, endTime of cue uses MAX_CUE_ENDTIME to assign its values. But the values read from cue of the media are not consistent.

Can you elaborate on how they are not consistent? Are the cues ending at the start of the next cue in the same class?

This is likely an issue with the ID3 "TXXX" cues and cue timing interfering with the DATERANGE cues. Adding a CLASS attribute might help. If not we should treat these as different classes by default so that they are allowed to overlap.

@robwalch robwalch added this to the 1.5.0 milestone Jun 5, 2023
@robwalch robwalch removed the Confirmed label Jun 5, 2023
@robwalch
Copy link
Collaborator

robwalch commented Jun 5, 2023

There is no way to know the real duration of the advertisement for user, especially when the playback time is near the live point. So I would like to have a single cue to mark END-DATE or DURATION, just like PLANNED-DURATION.

As soon as END-DATE is known, the endTime of each cue is updated. Until that point, the duration of these cues is Infinity or Number.MAX_VALUE (whichever is supported by the User Agent).

If you want a comprehensive way to access all properties of each DateRange in the active playlist, use hls.levels[hls.loadLevel].details.dateRanges or hls.levels[hls.currentLevel].details.dateRanges (matches playing level which may be desired when different from selected/loading level).

@robwalch
Copy link
Collaborator

robwalch commented Jun 5, 2023

This is likely an issue with the ID3 "TXXX" cues and cue timing interfering with the DATERANGE cues.

That was the issue. #5546.

robwalch added a commit that referenced this issue Jun 5, 2023
robwalch added a commit that referenced this issue Jul 3, 2023
* patch/v1.4.x:
  Reset loading start on worker setup error Fixes #5617
  Never back-track on first fragment to avoid loop loading Fixes #5609
  Only load earlier subtitle fragment if discontinuity matches
  Remove requirement for subtitles to be synced with media PTS when WebVTT MPEGTS map is not present
  Wait for level switch after fragment or key error with level switch action Fixes #5598
  Reset loader aborted state on internal retry #5588
  Fix issue where large subtitle target-durations result in incorrect subtitle segment selection Fixes #5595
  Keep level switch error actions within player constraints
  Do not adjust the end time of metadata cues that overlap with cues of another type (id3, emsg, daterange) Fixes #5531
  Resume fragment loading after level switch follows level error Fixes #5498
eowino added a commit to DiceTechnology/hls.js that referenced this issue Jan 17, 2024
* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore(deps): update babel monorepo to v7.21.5

* chore(deps): update dependency @microsoft/api-extractor to v7.34.5

* chore(deps): update dependency @babel/core to v7.21.8

* chore(deps): update dependency @microsoft/api-extractor to v7.34.6

* chore(deps): update dependency @microsoft/api-extractor to v7.34.8

* chore(deps): update dependency @types/chai to v4.3.5

* chore(deps): update dependency rollup to v3.21.1

* chore(deps): update dependency rollup to v3.21.5

* chore(deps): update dependency eventemitter3 to v5.0.1

* fix: partial audiovideo fragments not being treated as partial (video-dev#5460)

Fragments which contain both audio and video also need to be checked if
they are partial. We check for them individually, but there are cases
when only the one flag is set.

* Fix AV desync regression in v1.4.0 when mp4 audio track timestamps start before video track timestamps (video-dev#5471)

Fixes video-dev#5452

* chore(deps): update dependency wrangler to v2.18.0

* chore(deps): update dependency chromedriver to v112.0.1

* chore(deps): update dependency wrangler to v2.20.0

* Allow live level loading to recover from net::ERR_NETWORK_IO_SUSPENDED errors (video-dev#5473)

* Remove startLoad() as recovery method from API.md doc (video-dev#5478)

video-dev#5476

* Fix first fragment ejection tracking (video-dev#5480)

Fixes video-dev#5482

* Provide light ESM dist file (video-dev#5486)

* Playlist loading errors are fatal after all levels and retries exhausted (video-dev#5498)

Fixes video-dev#5488

* Adjust parsed TS AVC samples when start PTS overlaps with last DTS (video-dev#5500)

Resolves video-dev#5477

* Fix TS probing false positives by requiring 2-3 packet start bytes to be matched or more if first byte does not match sync word (video-dev#5503)

Fixes video-dev#5501

* Use input timescale when normalizing metadata cue timestamps (video-dev#5505)

Fixes video-dev#5504

* Resume fragment loading after level switch follows level error
Fixes video-dev#5498

(cherry picked from commit 1d7de74)

* Do not adjust the end time of metadata cues that overlap with cues of another type (id3, emsg, daterange)
Fixes video-dev#5531

* Keep level switch error actions within player constraints

Fixes video-dev#5566

* Patch/v1.4.0 doris (#79)

* Patch/v1.3.3 doris (#76)

* MPEG-TS probe improvement (video-dev#5186)

Fixes video-dev#5183

* Support AES-128 Encrypted Low-Latency HLS Parts (video-dev#5214)

* Log error and detach if MediaSource 'sourceopen' is interrupted (video-dev#5206)

* fix: merge DiceTechnology/hls.js changes.

* fix: Transition from Clear to DRM content

* fix:Sometimes play AES-128 stream failed

* test: modify test case

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>

* 1.3.4

* docs: modify api doc.

* chore: Modify version.

---------

Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>

* Patch/v1.4.1 doris (#80)

* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore: Modify version

* chore: remove package-lock.json

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: yajin2021 <gene.jin@endeavorstreaming.com>

* Update DiceTechnology/hls.js to v1.4.3(#81)

* Patch/v1.4.4 doris (#82)

* reference v1 jsdelivr url in v1 api doc

people should be using that over latest so that things don't break when we release v2 with potentially breaking changes. Main readme already used v1 url

* chore(deps): update dependency @rollup/plugin-alias to v4.0.4

* chore(deps): update dependency @microsoft/api-documenter to v7.21.7

* chore(deps): update dependency @rollup/plugin-typescript to v11.1.0

* chore(deps): update dependency @rollup/plugin-node-resolve to v15.0.2

* chore(deps): update dependency wrangler to v2.15.0

* chore(deps): update dependency @rollup/plugin-alias to v5

* Fix readme logos & add Mux logo (video-dev#5390)

* docs: replace broken logo with Mux

* docs: fix TED logo

* docs: replace broken logos

* chore(deps): update dependency lint-staged to v13.2.1

* chore(deps): update dependency typescript to v5.0.4

* chore(deps): update dependency eslint to v8.38.0

* chore(deps): update dependency es-check to v7.1.1

* chore(deps): update dependency @rollup/plugin-terser to v0.4.1

* chore(deps): update typescript-eslint monorepo to v5.58.0

* chore(deps): update dependency semver to v7.4.0

* chore(deps): update dependency @rollup/plugin-commonjs to v24.1.0

* chore(deps): update dependency semver to v7.5.0

* chore(deps): update typescript-eslint monorepo to v5.59.0

* Setup npm provenance statements (video-dev#5406)

* give publish job permissions for npm provenance

* add `—provenance` flag to `npm publish`

* remove unneeded `contents` permission

* chore(deps): update dependency chromedriver to v112 (video-dev#5393)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>

* set `internalChecksAsSuccess` renovate option

* chore(deps): update dependency wrangler to v2.15.1

* set renovate `prNotPendingHours` to 0

* chore(deps): update dependency wrangler to v2.16.0

* chore(deps): update dependency rollup to v3.20.3

* chore(deps): update dependency rollup to v3.20.7

* chore(deps): update dependency rollup to v3.21.0

* chore(deps): update tjenkinson/gh-action-auto-merge-dependency-updates digest to 01b22a9 (video-dev#5324)

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>

* tweak renovate options again

see renovatebot/renovate#21720

* reset remainderData in resetContiguity (video-dev#5410)

* docs: add Media Chrome for custom UI (video-dev#5391)

* Perform playlist retries before redundant failover and level switch (video-dev#5420)

(Pathway switch is still prioritized over retries when available)
Fixes video-dev#5419

* chore(deps): update dependency sinon to v15.0.4

* chore(deps): update dependency karma-chrome-launcher to v3.2.0

* chore(deps): update dependency selenium-webdriver to v4.9.0

* Update audio-track-controller.ts (video-dev#5431)

Sometimes STABLE-RENDITION_ID of tracks is undefined. Adding a guard for it, otherwise audio track doesn't switch.

* chore(deps): update dependency eslint to v8.39.0

* chore(deps): update dependency karma to v6.4.2

* chore(deps): update dependency prettier to v2.8.8

* Fix incorrect HEVC main profile codec id (video-dev#5438)

* fix: move `types` condition to the front (video-dev#5439)

* chore(deps): update dependency wrangler to v2.17.0

* chore(deps): update typescript-eslint monorepo to v5.59.1

* chore(deps): update typescript-eslint monorepo to v5.59.2

* Fix Low-Latency part and fragment tracking (video-dev#5423)

* Fix Low-Latency part and fragment tracking regression introduced in video-dev#5102

* Fix issues with reuse of player instance when loading additional assets
Fixes video-dev#5425

* Reset SourceBuffers in `loadSource()` when the asset URL has changed, or buffer-controller setup has begun

* Remove old parts from the fragment tracker on frag buffered

* Remove old parts from the fragment tracker on frag buffered

* Reset eme-controller key format promise on manifest loading

* chore(deps): update dependency lint-staged to v13.2.2

* Always use MediaSource returned by utils module (video-dev#5448)

* chore(deps): update dependency @microsoft/api-documenter to v7.22.0

* chore(deps): update dependency @microsoft/api-documenter to v7.22.4

* chore(deps): update babel monorepo to v7.21.5

* chore(deps): update dependency @microsoft/api-extractor to v7.34.5

* chore(deps): update dependency @babel/core to v7.21.8

* chore(deps): update dependency @microsoft/api-extractor to v7.34.6

* chore(deps): update dependency @microsoft/api-extractor to v7.34.8

* chore(deps): update dependency @types/chai to v4.3.5

* chore(deps): update dependency rollup to v3.21.1

* chore(deps): update dependency rollup to v3.21.5

* chore(deps): update dependency eventemitter3 to v5.0.1

* fix: partial audiovideo fragments not being treated as partial (video-dev#5460)

Fragments which contain both audio and video also need to be checked if
they are partial. We check for them individually, but there are cases
when only the one flag is set.

* Fix AV desync regression in v1.4.0 when mp4 audio track timestamps start before video track timestamps (video-dev#5471)

Fixes video-dev#5452

* chore(deps): update dependency wrangler to v2.18.0

* chore(deps): update dependency chromedriver to v112.0.1

* chore(deps): update dependency wrangler to v2.20.0

* Allow live level loading to recover from net::ERR_NETWORK_IO_SUSPENDED errors (video-dev#5473)

* Remove startLoad() as recovery method from API.md doc (video-dev#5478)

video-dev#5476

* Fix first fragment ejection tracking (video-dev#5480)

Fixes video-dev#5482

* Provide light ESM dist file (video-dev#5486)

* Playlist loading errors are fatal after all levels and retries exhausted (video-dev#5498)

Fixes video-dev#5488

* Adjust parsed TS AVC samples when start PTS overlaps with last DTS (video-dev#5500)

Resolves video-dev#5477

* Fix TS probing false positives by requiring 2-3 packet start bytes to be matched or more if first byte does not match sync word (video-dev#5503)

Fixes video-dev#5501

* Use input timescale when normalizing metadata cue timestamps (video-dev#5505)

Fixes video-dev#5504

* chore: change package.json

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Troy <troybensonsa@gmail.com>
Co-authored-by: Chocobozzz <chocobozzz@cpy.re>

* 1.4.6

---------

Co-authored-by: Tom Jenkinson <tjenkinson@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: hlsjs-ci <40664919+hlsjs-ci@users.noreply.github.com>
Co-authored-by: Wesley Luyten <me@wesleyluyten.com>
Co-authored-by: Billy Chiu <billychiu98@gmail.com>
Co-authored-by: Rob Walch <robwalch@users.noreply.github.com>
Co-authored-by: Agajan J <agajan.tm@gmail.com>
Co-authored-by: Sta Zhu <zhusidayoyo@hotmail.com>
Co-authored-by: Mateusz Burzyński <mateuszburzynski@gmail.com>
Co-authored-by: Troy <troybensonsa@gmail.com>
Co-authored-by: Chocobozzz <chocobozzz@cpy.re>
Co-authored-by: yajin2021 <83813017+yajin2021@users.noreply.github.com>
Co-authored-by: Hongfei Huang <hongfei.huang@endeavorstreaming.com>
Co-authored-by: Hongfei Huang <83795629+hongfeih-es@users.noreply.github.com>
Co-authored-by: yajin2021 <gene.jin@endeavorstreaming.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants