你的问题是
\n
实际读取文本文件时显示的字符
\\n
字符。
这些字符不会被VTTCUE分析器识别为新行,因此需要在第三个参数中替换这些字符。
VTTCUE
构造函数到实际新行,
\n
.
const txt_uri = URL.createObjectURL(new Blob([String.raw`1 --> 13
"Golden dreams\nand great heartache"`], {type: 'text/plain'}));
var video_player = document.querySelectorAll('[video-player]')[0];
track_english = video_player.addTextTrack("captions", undefined, "en");
track_english.mode = "showing";
subtitles_xhr(function(buffer) {
var file = buffer;
file = file.split('\n');
for (var x = 0; x < file.length; x += 2) {
let startTime = file[x].split(" --> ")[0],
endTime = file[x].split(" --> ")[1],
content = file[x + 1]
.replace(/\\n/g, '\n');
track_english.addCue(
new VTTCue(startTime, endTime, content)
);
}
});
function subtitles_xhr(cb) {
var xhr = new XMLHttpRequest;
xhr.open('GET', txt_uri);
xhr.onload = function() {
cb(xhr.response);
};
xhr.send();
}
video{max-height:100vh}
<video video-player src="https://upload.wikimedia.org/wikipedia/commons/transcoded/a/a4/BBH_gravitational_lensing_of_gw150914.webm/BBH_gravitational_lensing_of_gw150914.webm.480p.webm" autoplay controls></video>