-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
miss cuechange event at id3 timed-metadata textTrack #3879
Comments
|
Hi @robwalch Test stream has ID3 timed metadata per 1 seconds. Above playlist played in Safari, Every DataCue's duration are 1 seconds. (Please watch in Safari) But played in hls.js, second or subsequent VTTCue's duration is too short (almost 1 frame). This hls.js' behavior is occured here. |
Hi @monyone, Do you have any other sample streams with ID3 metadata that I can use to work on this issue? The sample you provided is excellent. I will use it. What would also be helpful is to have another example where some segments do not contain ID3, as well as one which discontinuities. I want to confirm that the unbound cues always span to the end of the stream or the next cue, even when spanning discontinuities and segment boundaries. I confirmed this behavior in Safari 14 (DataCue endTime is set to duration or playlist end, until the previous cue becomes active at which point its endTime is updated to the start of the next cue). We can implement something similar in v1.1, some users may see this as a breaking change, but I can argue as you have put forth here that the current behavior of ending the cue at the end of the segment it is found in is incorrect. Hls.js can update cue.endTime as soon as the following cue is appended to the text track. |
Hi @robwalch Here is a another ID3 inserted VOD sample stream. It is inserted randomly, some segments do not contain ID3. I'm not able to prepare LIVE and EVENT type of ID3 sample stream. Sorry for inconvinience. If you check LIVE or EVENT ID3 sample stream, please use ffmpeg to generate it. If you generate sample stream for LIVE, please just do this.
To generate sample stream for EVENT, please just do this.
|
… type (value.key) on cue append Resolves #3879
What version of Hls.js are you using?
v1.0.2
What browser and OS (including versions) are you using?
Android Chrome, Windows chrome, Edge, firefox, MacOS chrome, Firefox, Safari
(especially Android Chrome)
Test stream:
Test stream has id3 timed metadata per 1 sec. TXXX records has sequencial number.
https://monyone.github.io/hls-sample-test-stream/id3-boundary/output.m3u8
https://hls-js.netlify.app/demo/?src=https%3A%2F%2Fmonyone.github.io%2Fhls-sample-test-stream%2Fid3-boundary%2Foutput.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
https://hls-js-dev.netlify.app/demo/?src=https%3A%2F%2Fmonyone.github.io%2Fhls-sample-test-stream%2Fid3-boundary%2Foutput.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==
for demo, write console below code to check cuechange event detection.
$('video')[0].textTracks[0].oncuechange = (event) => { const cues = event.target.activeCues; if (cues.length >= 1){ console.log(cues[cues.length - 1].value.data) }}
Configuration:
Checklist
Steps to reproduce
Expected behavior
Same as native Safari player's behavior.
Indifinite id3 (not found next id3) cue's endtime set infinite temporarily. (for example, Number.MAX_VALUE)
set indifinite cue's endtime to next id3 cue arrived.
Actual behavior
Indifinite id3 cue ended in segment boundary.
In test stream case, may not call id3 track's cue cuechange event.
(too short duration id3 cue may not call cuechange event)
Console output
The text was updated successfully, but these errors were encountered: