Chromecast字幕支持

时间:2014-04-16 20:33:33

标签: chromecast closed-captions ttml webvtt

玩了很多Chromecast,找到一个很好的解决隐藏式字幕的方法(在我的项目中,我们已经使用了TTML和分段的WEBVtt - 两者都不起作用“就是这样”)我非常沮丧地发现我最后的亮点想法,不支持手动将“new VTTCue()”添加到textTrack-element。

我已经在这里阅读了很多问题的答案,答案就像这样的“自己动手”Does Chromecast support TTML?

  

你可以简单地编写一个Javascript解析器来解析[ttml]文件并将提示添加到你的视频中   javascript中的元素使用addTextTrack()等方法

嗯,确实说这里支持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组合器

2 个答案:

答案 0 :(得分:1)

由于Chrome的更改,即将推出的Chromecast更新需要对正在执行隐藏字幕的接收方应用进行代码更改。

媒体播放器库已修复此更改,因此使用MPL的接收器不会受到API更改的影响。

未使用MPL的开发人员如果支持隐藏式字幕,则需要更改其接收器代码。

在Chrome M37中,TextTrackCue仍然存在,但无法直接实例化。相反,VTTCue需要实例化。

为了处理差异,建议您为接收器使用以下JavaScript polyfill:

window['VTTCue'] = window['VTTCue'] || window['TextTrackCue'];

这确保始终定义VTTCue。填充完成后,需要更新创建提示的代码以创建VTTCue对象而不是TextTrackCue。

答案 1 :(得分:0)

Chromecast不支持VTTCue,因此您必须使用的是TextTrackCue构造函数。 即。

//...
cueData.forEach(function(cue){
    track.addCue(new TextTrackCue(cue.start, cue.end, cue.text))
});
//...