video-dev / hls.js

HLS.js is a JavaScript library that plays HLS in browsers with support for MSE.
https://hlsjs.video-dev.org/demo
Other
14.82k stars 2.57k forks source link

TextTrack empty lines with line breaks and empty string and after that those lines are filtered away #5337

Open PopoSensei opened 1 year ago

PopoSensei commented 1 year ago

What version of Hls.js are you using?

v1.2.1 but replicated in v1.3.5 with demo app

What browser (including version) are you using?

Firefox (111.0) but same on any browser

What OS (including version) are you using?

MacOS

Test stream

https://yleawsmpodamdipv4test.akamaized.net/vod/world/ea175c7e7bad47f4ad1a96b4a27e3a5f/44636c96374c4c4e8bd56fe556d9a988/6d29015fd5ac4dcdb37e73184595fba0/index.m3u8?hdnts=exp=1710321512~acl=/vod/world/ea175c7e7bad47f4ad1a96b4a27e3a5f/44636c96374c4c4e8bd56fe556d9a988/*~hmac=06e6c3373e5599045ad07e43003a82bc40dc0964126d8428c500c1cbb146b313

Configuration

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

Additional player setup steps

No response

Checklist

Steps to reproduce

Using the stream link in the demo application we can see, that there is line breaks described in the text file that don't show up.

Expected behaviour

I understand that this might be expected behaviour and tagged as no fix.

We need line breaks to control subtitle location in some cases where the original data is in SRT format. Since in SRT there is no line height or position attributes. Our program creators use line breaks combined with unicode caracter "U+00A0" to control the vertical location of subtitles, and therefore I would need them in our end application.

So HLS.js should provide text tracks as they were. Imo this library shouldn't fix origin data issues. Those should be fixed at the source or at the end application, but if there is a way that doesn't trim unicode characters like U+00A0, then for our purposes this would be enough.

What actually happened?

HLS.js trims line breaks with "U+00A0" from the text tracks. This happens because of this fix to duplicate segmented VTT lines https://github.com/video-dev/hls.js/pull/3431

Console output

Using Hls.js config: 
Object { debug: true, enableWorker: true, lowLatencyMode: true, backBufferLength: 90 }
main.js:341:10
[log] > Debug logs enabled for "Hls instance" logger.ts:74:21
[log] > stopLoad hls.ts:371:4
[log] > loadSource:https://yleawsmpodamdipv4test.akamaized.net/vod/world/ea175c7e7bad47f4ad1a96b4a27e3a5f/44636c96374c4c4e8bd56fe556d9a988/6d29015fd5ac4dcdb37e73184595fba0/index.m3u8?hdnts=exp=1710321512~acl=/vod/world/ea175c7e7bad47f4ad1a96b4a27e3a5f/44636c96374c4c4e8bd56fe556d9a988/*~hmac=06e6c3373e5599045ad07e43003a82bc40dc0964126d8428c500c1cbb146b313 hls.ts:339:4
[log] > [stream-controller]: Trigger BUFFER_RESET stream-controller.ts:550:9
[log] > attachMedia hls.ts:310:4
[log] > [buffer-controller]: Media source opened buffer-controller.ts:791:4
[log] > [subtitle-stream-controller]: STOPPED->IDLE base-stream-controller.ts:1505:11
[log] > [level-controller]: manifest loaded, 5 level(s) found, first bitrate: 886535 level-controller.ts:191:15
[log] > 1 bufferCodec event(s) expected buffer-controller.ts:142:4
[log] > startLoad(-1) hls.ts:361:4
[log] > [level-controller]: switching to level 2 from -1 level-controller.ts:272:9
[log] > [subtitle-track-controller]: Updating subtitle tracks, 1 track(s) found in "subtitles" group-id subtitle-track-controller.ts:220:11
[log] > [subtitle-track-controller]: Switching to subtitle track 0 subtitle-track-controller.ts:371:9
[log] > [level-controller]: Attempt loading level index 2 with URL-id 0 https://yleawsmpodamdipv4test.akamaized.net/vod/world/ea175c…985b6d8e514c5e/0e665bb16f3f484881d0aa799e6a098a/index_1.m3u8 level-controller.ts:584:11
[log] > [stream-controller]: STOPPED->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-track-controller]: Loading subtitle playlist for id 0 subtitle-track-controller.ts:293:11
[log] > [subtitle-stream-controller]: IDLE->STOPPED base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: STOPPED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Level 2 loaded [0,31], cc [0, 0] duration:190.16 stream-controller.ts:615:9
[log] > [buffer-controller]: Updating Media Source duration to 190.160 buffer-controller.ts:683:6
[log] > [stream-controller]: Loading fragment 0 cc: 0 of [0-31] level: 2, target: 0 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-track-controller]: subtitle track 0 loaded [0-31] subtitle-track-controller.ts:173:9
[log] > [subtitle-stream-controller]: Loading fragment 0 cc: 0 of [0-31] track: 0, target: 0 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > demuxing in webworker transmuxer-interface.ts:68:6
[log] > [transmuxer-interface, main]: Starting new transmux session for sn: 0 p: -1 level: 2 id: 1
        discontinuity: true
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 0
        initSegmentChange: true transmuxer-interface.ts:201:6
[log] > [stream-controller]: Loaded fragment 0 of level 2 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: Loaded fragment 0 of level 0 base-stream-controller.ts:371:15
[log] > Debug logs enabled for "main" 35d09df0-032f-4219-be41-196641da62d0:633:22
[log] > [mp4-remuxer]: ISGenerated flag reset transmuxer-interface.ts:349:36
[log] > [mp4-remuxer]: initPTS & initDTS reset transmuxer-interface.ts:349:36
[log] > [mp4-remuxer]: reset next timestamp transmuxer-interface.ts:349:36
[log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3 transmuxer-interface.ts:349:36
[log] > parsed codec:mp4a.40.2, rate:48000, channels:2 transmuxer-interface.ts:349:36
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.2] stream-controller.ts:1243:11
[log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.4D401F/avc1.4d401f] stream-controller.ts:1254:11
[log] > [buffer-controller]: creating sourceBuffer(audio/mp4;codecs=mp4a.40.2) buffer-controller.ts:752:8
[log] > [buffer-controller]: creating sourceBuffer(video/mp4;codecs=avc1.4D401F) buffer-controller.ts:752:8
[log] > [audio-stream-controller]: InitPTS for cc: 0 found from main: 180000 audio-stream-controller.ts:118:11
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 0 of level 2 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 0 of level 2 (frag:[0.000-6.080] > buffer:[0.073-6.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [level-controller]: switching to level 4 from 2 level-controller.ts:272:9
[log] > [level-controller]: Attempt loading level index 4 with URL-id 0 https://yleawsmpodamdipv4test.akamaized.net/vod/world/ea175c…985b6d8e514c5e/0e665bb16f3f484881d0aa799e6a098a/index_5.m3u8 level-controller.ts:584:11
[log] > [stream-controller]: IDLE->WAITING_LEVEL base-stream-controller.ts:1505:11
[log] > [stream-controller]: Level 4 loaded [0,31], cc [0, 0] duration:190.16 stream-controller.ts:615:9
[log] > [stream-controller]: WAITING_LEVEL->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 1 cc: 0 of [0-31] level: 4, target: 6.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [transmuxer-interface, main]: Starting new transmux session for sn: 1 p: -1 level: 4 id: 1
        discontinuity: false
        trackSwitch: true
        contiguous: false
        accurateTimeOffset: true
        timeOffset: 6
        initSegmentChange: false transmuxer-interface.ts:201:6
[log] > [stream-controller]: Loaded fragment 1 of level 4 base-stream-controller.ts:371:15
[log] > [mp4-remuxer]: ISGenerated flag reset transmuxer-interface.ts:349:36
[log] > [mp4-remuxer]: initPTS & initDTS reset transmuxer-interface.ts:349:36
[log] > [mp4-remuxer]: reset next timestamp transmuxer-interface.ts:349:36
[log] > manifest codec:mp4a.40.2, ADTS type:2, samplingIndex:3 transmuxer-interface.ts:349:36
[log] > parsed codec:mp4a.40.2, rate:48000, channels:2 transmuxer-interface.ts:349:36
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Init audio buffer, container:audio/mp4, codecs[selected/level/parsed]=[mp4a.40.2/mp4a.40.2/mp4a.40.2] stream-controller.ts:1243:11
[log] > [stream-controller]: Init video buffer, container:video/mp4, codecs[level/parsed]=[avc1.640028/avc1.640028] stream-controller.ts:1254:11
[log] > [transmuxer.ts]: Flushed fragment 1 of level 4 transmuxer-interface.ts:349:36
[log] > [subtitle-stream-controller]: Loading fragment 1 cc: 0 of [0-31] track: 0, target: 6 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 1 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 1 of level 4 (frag:[6.073-12.075] > buffer:[0.073-12.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 2 cc: 0 of [0-31] level: 4, target: 12.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 2 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 2 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 2 of level 4 (frag:[12.073-18.091] > buffer:[0.073-18.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 3 cc: 0 of [0-31] level: 4, target: 18.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 2 cc: 0 of [0-31] track: 0, target: 12 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 3 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 3 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 3 of level 4 (frag:[18.073-24.085] > buffer:[0.073-24.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 4 cc: 0 of [0-31] level: 4, target: 24.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 2 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 4 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 4 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 4 of level 4 (frag:[24.073-30.080] > buffer:[0.073-30.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 5 cc: 0 of [0-31] level: 4, target: 30.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 5 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 5 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 5 of level 4 (frag:[30.073-36.075] > buffer:[0.073-36.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 6 cc: 0 of [0-31] level: 4, target: 36.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 6 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 6 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 6 of level 4 (frag:[36.073-42.091] > buffer:[0.073-42.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 7 cc: 0 of [0-31] level: 4, target: 42.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 3 cc: 0 of [0-31] track: 0, target: 18 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 3 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 7 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 7 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 7 of level 4 (frag:[42.073-48.085] > buffer:[0.073-48.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 8 cc: 0 of [0-31] level: 4, target: 48.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 8 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 8 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 8 of level 4 (frag:[48.073-54.080] > buffer:[0.073-54.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 9 cc: 0 of [0-31] level: 4, target: 54.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 9 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 9 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 9 of level 4 (frag:[54.073-60.075] > buffer:[0.073-60.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 10 cc: 0 of [0-31] level: 4, target: 60.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 10 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 10 of level 4 transmuxer-interface.ts:349:36
[log] > [subtitle-stream-controller]: Loading fragment 4 cc: 0 of [0-31] track: 0, target: 24 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 10 of level 4 (frag:[60.073-66.091] > buffer:[0.073-66.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 11 cc: 0 of [0-31] level: 4, target: 66.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 4 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 11 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 11 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 11 of level 4 (frag:[66.073-72.085] > buffer:[0.073-72.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 12 cc: 0 of [0-31] level: 4, target: 72.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 12 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 12 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 12 of level 4 (frag:[72.073-78.080] > buffer:[0.073-78.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 13 cc: 0 of [0-31] level: 4, target: 78.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 5 cc: 0 of [0-31] track: 0, target: 30 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 5 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 13 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 13 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 13 of level 4 (frag:[78.073-84.075] > buffer:[0.073-84.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 14 cc: 0 of [0-31] level: 4, target: 84.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 14 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 14 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 14 of level 4 (frag:[84.073-90.091] > buffer:[0.073-90.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 15 cc: 0 of [0-31] level: 4, target: 90.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 15 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 15 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 15 of level 4 (frag:[90.073-96.085] > buffer:[0.073-96.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 16 cc: 0 of [0-31] level: 4, target: 96.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 16 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 16 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 16 of level 4 (frag:[96.073-102.080] > buffer:[0.073-102.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 17 cc: 0 of [0-31] level: 4, target: 102.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 6 cc: 0 of [0-31] track: 0, target: 36 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 6 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 17 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 17 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 17 of level 4 (frag:[102.073-108.075] > buffer:[0.073-108.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 18 cc: 0 of [0-31] level: 4, target: 108.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 18 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 18 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 18 of level 4 (frag:[108.073-114.091] > buffer:[0.073-114.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 19 cc: 0 of [0-31] level: 4, target: 114.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 19 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 19 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 19 of level 4 (frag:[114.073-120.085] > buffer:[0.073-120.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 20 cc: 0 of [0-31] level: 4, target: 120.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 7 cc: 0 of [0-31] track: 0, target: 42 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 20 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 20 of level 4 transmuxer-interface.ts:349:36
[log] > [subtitle-stream-controller]: Loaded fragment 7 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 20 of level 4 (frag:[120.073-126.080] > buffer:[0.073-126.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 21 cc: 0 of [0-31] level: 4, target: 126.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 21 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 21 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 21 of level 4 (frag:[126.073-132.075] > buffer:[0.073-132.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 22 cc: 0 of [0-31] level: 4, target: 132.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 22 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 22 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 22 of level 4 (frag:[132.073-138.091] > buffer:[0.073-138.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 23 cc: 0 of [0-31] level: 4, target: 138.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 23 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 23 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 23 of level 4 (frag:[138.073-144.085] > buffer:[0.073-144.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 24 cc: 0 of [0-31] level: 4, target: 144.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 8 cc: 0 of [0-31] track: 0, target: 48 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 8 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 24 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 24 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 24 of level 4 (frag:[144.073-150.080] > buffer:[0.073-150.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 25 cc: 0 of [0-31] level: 4, target: 150.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 25 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 25 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 25 of level 4 (frag:[150.073-156.075] > buffer:[0.073-156.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 26 cc: 0 of [0-31] level: 4, target: 156.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 26 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 26 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 26 of level 4 (frag:[156.073-162.091] > buffer:[0.073-162.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 9 cc: 0 of [0-31] track: 0, target: 54 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 9 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 10 cc: 0 of [0-31] track: 0, target: 60 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 10 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 11 cc: 0 of [0-31] track: 0, target: 66 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 11 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 12 cc: 0 of [0-31] track: 0, target: 72 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 12 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 13 cc: 0 of [0-31] track: 0, target: 78 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 13 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 14 cc: 0 of [0-31] track: 0, target: 84 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 14 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 15 cc: 0 of [0-31] track: 0, target: 90 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 15 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 16 cc: 0 of [0-31] track: 0, target: 96 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 16 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 17 cc: 0 of [0-31] track: 0, target: 102 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 17 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 18 cc: 0 of [0-31] track: 0, target: 108 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 18 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 19 cc: 0 of [0-31] track: 0, target: 114 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 19 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 20 cc: 0 of [0-31] track: 0, target: 120 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 20 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loading fragment 27 cc: 0 of [0-31] level: 4, target: 162.073 base-stream-controller.ts:660:9
[log] > [stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [stream-controller]: Loaded fragment 27 of level 4 base-stream-controller.ts:371:15
[log] > [stream-controller]: FRAG_LOADING->PARSING base-stream-controller.ts:1505:11
[log] > [transmuxer.ts]: Flushed fragment 27 of level 4 transmuxer-interface.ts:349:36
[log] > [stream-controller]: PARSING->PARSED base-stream-controller.ts:1505:11
[log] > [stream-controller]: Buffered main sn: 27 of level 4 (frag:[162.073-168.085] > buffer:[0.073-168.073]) base-stream-controller.ts:504:9
[log] > [stream-controller]: PARSED->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 21 cc: 0 of [0-31] track: 0, target: 126 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 21 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 22 cc: 0 of [0-31] track: 0, target: 132 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 22 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 23 cc: 0 of [0-31] track: 0, target: 138 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 23 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 24 cc: 0 of [0-31] track: 0, target: 144 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 24 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 25 cc: 0 of [0-31] track: 0, target: 150 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 25 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 26 cc: 0 of [0-31] track: 0, target: 156 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 26 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 27 cc: 0 of [0-31] track: 0, target: 162 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 27 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loading fragment 28 cc: 0 of [0-31] track: 0, target: 168 base-stream-controller.ts:660:9
[log] > [subtitle-stream-controller]: IDLE->FRAG_LOADING base-stream-controller.ts:1505:11
[log] > [subtitle-stream-controller]: Loaded fragment 28 of level 0 base-stream-controller.ts:371:15
[log] > [subtitle-stream-controller]: FRAG_LOADING->IDLE base-stream-controller.ts:1505:11

Chrome media internals output

No response

mtoczko commented 1 year ago

Hi @PopoSensei The code snippet should interest you, removing it should solve your problem. https://github.com/video-dev/hls.js/blob/3e959c289f3ff436d6e9d5573391aa4f37e35202/src/utils/webvtt-parser.ts#L106

https://github.com/video-dev/hls.js/blob/3e959c289f3ff436d6e9d5573391aa4f37e35202/src/utils/webvtt-parser.ts#L153

 const text = cue.text; 
robwalch commented 1 year ago

And what if trim was only performed on the id (duplicates with different ws at the end would be removed, but the displayed subs would include the ws):

    //trim trailing webvtt block whitespaces
    const text = cue.text;

    // Fix encoding of special characters
    cue.text = decodeURIComponent(encodeURIComponent(text));

    // If the cue was not assigned an id from the VTT file (line above the content), create one.
    if (!cue.id) {
      cue.id = generateCueId(cue.startTime, cue.endTime, text.trim());
    }

If this is acceptable, please submit a PR and cc @OrenMe, the author #3431.