【问题标题】:Chromecast subtitle supportChromecast 字幕支持
【发布时间】:2014-05-31 22:12:53
【问题描述】:

在 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 组合器

【问题讨论】:

    标签: chromecast closed-captions ttml webvtt


    【解决方案1】:

    Chromecast 不支持 VTTCue,所以您必须使用 TextTrackCue 构造函数。 即

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

    【讨论】:

      【解决方案2】:

      由于 Chrome 的变化,即将对 Chromecast 进行的更新将需要对正在执行隐藏式字幕的接收器应用程序进行代码更改。

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

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

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

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

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

      这可确保始终定义 VTTCue。一旦 polyfill 就位,需要更新创建提示的代码以创建 VTTCue 对象而不是 TextTrackCue。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-22
        • 1970-01-01
        • 2017-01-23
        • 2013-11-03
        • 1970-01-01
        • 2020-02-03
        • 2015-03-16
        相关资源
        最近更新 更多