玩了很多 Chromecast 以找到一个很好的隐藏式字幕解决方案(在我的项目中,我们已经使用 TTML 和分段 WEBVtt - 两者都不能“按原样”工作)我非常惊讶地发现我的最后一个好主意,不支持手动将“new VTTCue()”添加到 textTrack 元素。
我在这里阅读了很多问题的答案,其中的答案类似于“自己动手”,比如这个Chromecast 支持 TTML 吗?.
您可以简单地编写一个 Javascript 解析器来解析 [ttml] 文件,并使用 addTextTrack() 等方法在 javascript 中将提示添加到您的视频元素
好吧,它确实说这里支持 TTML https://github.com/googlecast/CastClosedCaptioning-chrome但没关系。
因此,未能通过谷歌搜索答案(VTTCue 的替代代码)我求助于专业人士 - 我如何添加不支持 VTTCue 的提示?
我真正真正认为(希望)会起作用:
loadTTML().done(function(ttml){
var cueData = extractCueDataFromTTML(ttml);
var vid = document.querySelector('video');
vid.addTextTrack("subtitles", "sample");
var track = vid.textTracks[0];
cueData.forEach(function(cue){
track.addCue(new VTTCue(cue.start, cue.end, cue.text))
});
})
注意:这是为了避免将 TTML 写入 WEBVtt 转换器或分段 WEBVtt 组合器