【问题标题】:Getting the cues from a VTT chapters track with Video.js使用 Video.js 从 VTT 章节轨道中获取线索
【发布时间】:2017-04-23 11:10:15
【问题描述】:

我想从我的 Video.js 对象中加载的章节文件中获取提示。我已经找到了获取曲目的方法,但我需要它的 id 才能访问它。

player.textTracks().getTrackById(<trackID>);

我发现 id 在 Video.js 5.14.0 库中的定义位置:

// video.js/dist/video.js (line 19195)
var trackProps = {
  id: options.id || 'vjs_track_' + Guid.newGUID(),
  kind: options.kind || '',
  label: options.label || '',
  language: options.language || ''
};

看来您可以通过将对象传递给函数来定义自己的id

// video.js/dist/video.js (line 19178)
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

我按如下方式加载章节轨道:

<track kind="chapters" src="chapters.vtt" srclang="en" default>

我了解到您可以动态添加曲目文件,但您必须重新加载 Video.js 对象。

【问题讨论】:

    标签: javascript video.js webvtt cue-points


    【解决方案1】:

    您可以获取所有曲目,然后获取chapters 类型的曲目:

    player.on('loadedmetadata', function () {
        var tracks = player.textTracks(),
                chapterTrack;
    
        for (var i=0; tracks.length > i; i++) {
            if ('chapters' === tracks[i].kind) {
                chapterTrack = tracks[i];
            }
        }
    
        console.log(chapterTrack.cues);
    });
    

    https://github.com/videojs/video.js/blob/master/docs/guides/text-tracks.md#working-with-text-tracks

    【讨论】:

    • 感谢您的回答。 textTracks 对象在使用console.log(vvplayer.textTracks()); 时,即使我可以从控制台的tracks_ 属性中看到我的曲目,也不会返回任何曲目项目。这个属性现在可能是私有的。
    • 刚刚使用 video.js 5.14.0 和 5.14.1 进行了测试。此方法对我有用,但是,当调用 video.js 就绪回调时,文本轨道似乎并不总是准备就绪,因此我必须将代码包装在 loadedmetadata 事件的侦听器中,这使它可靠地工作至少对我来说。用那个更新了答案。
    • 非常感谢您的测试和高质量的答案,我希望我有一个调试工具,可以提供有关异步调用的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    相关资源
    最近更新 更多