我经常使用Chromecast来寻找一个很好的封闭字幕的解决方案(在我的项目中,我们已经使用了TTML和分段WEBVtt --两者都不能正常工作),我很惊讶地发现,我最后一个聪明的想法,手动将“新VTTCue()”添加到textTrack-元素中是不受支持的。
我在这里读过很多问题的答案,答案是“自己动手”,就像这个Does Chromecast support TTML?一样。
您只需编写一个Javascript解析器来解析ttml文件,并使用addTextTrack()等方法将线索添加到javascript中的视频元素中。
好吧,它确实说https://github.com/googlecast/CastClosedCaptioning-chrome这里支持TTML,但没关系。
因此,在没能做到--谷歌的答案( 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组合器。
发布于 2014-08-05 16:58:22
由于Chrome的变化,即将更新的Chromecast将需要对正在关闭字幕的接收应用程序进行代码更改。
Media库已经修复了更改,因此使用MPL的接收器不会受到API更改的影响。
不使用MPL的开发人员如果支持封闭字幕,则需要更改接收方代码。
在Chrome M37中,TextTrackCue仍然存在,但不能直接实例化。相反,需要实例化VTTCue。
为了处理此差异,建议您的接收方使用以下JavaScript填充:
window['VTTCue'] = window['VTTCue'] || window['TextTrackCue'];这确保始终定义VTTCue。一旦多边形填充就绪,需要更新创建提示的代码,以创建VTTCue对象而不是TextTrackCue。
发布于 2014-08-05 06:53:44
Chromecast不支持VTTCue,所以必须使用TextTrackCue构造函数。也就是说。
//...
cueData.forEach(function(cue){
track.addCue(new TextTrackCue(cue.start, cue.end, cue.text))
});
//...https://stackoverflow.com/questions/23119601
复制相似问题