如何为每个视频设置videojs currentTime

How to set videojs currentTime for each video

对于客户,我需要制作一个包含 3 个视频的功能性视频播放列表。我已经让他们分开玩了,但现在我需要制作一个自定义的跳过按钮。我尝试了几件事,但我不断收到控制台错误 "el.currentTime is not a function"、"this.currentTime is not a function"。

我试图在其他形式上找到一些解决方案,但实际上每个人都在制作带有 id 的视频播放器。我想阻止这种情况以保持我的代码灵活。

$('video').each(function (i, el) {
    var p = $(el).parent();

        $('.forward-btn', p).click(function () {
            console.log("this video is skipped 5 seconds in" + el);
            el.currentTime(el.currentTime() + 10);
        });

    });
});

你 运行 这里遇到的问题是你实际上并没有在这些播放器上初始化 Videojs,所以你没有使用对 Videojs 实例的引用,只是一个 video 标签。

您可以在使用这些方法之前将 video 标记引用传递给 videojs 构造函数,或者改用本机 HTML5 currentTime attribute setter。

// If you want to use the Videojs methods:
$('video').each(function (i, el) {
  var vjsEl = videojs(el);
  // ...
});

// Or, you can keep things as is and just use the `currentTime` attribute directly
console.log("this video is skipped 5 seconds in" + el);
el.currentTime = el.currentTime + 10; // notice this isn't a function.

如果您采用 Videojs 构造函数路线,还请记住,您需要确保在从 DOM 中删除视频标签之前清理播放器 (dispose)。

为了以防万一您还没有遇到它,这里有一个维护良好的 videojs-playlist 插件。您需要牢记使用多个 video 标签 + 像这样的 Videojs 实例对性能的影响(特别是对于大型播放列表),因此至少您可能想看看它们的实现.