video-dev / video-dev/hls.js

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

Open
#5,337 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug
Dominant language
TypeScript
Stars
16.9k
Forks
2.8k
Avg merge
1d 12h
Merged PRs (30d)
27

Description

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

Contributor guide

Open the contributing guide

First steps

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

Research direction

Reproduce the issue in the Hls.js demo app with the supplied stream and inspect the text-track output for empty lines and U+00A0 characters. Review pull request #3431 and the subtitle/text-track processing path it changed. Done means the track preserves the source line breaks and relevant non-breaking spaces without regressing duplicate segmented VTT handling.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript, typescript
Domain
audio-video-rtc
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.