Open PopoSensei opened 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
const text = cue.text;
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.
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
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
Chrome media internals output
No response