4

新来的,对任何有 HTML5 视频和/或 VideoJS 播放器经验的人有疑问(如有必要,我也愿意使用不同的播放器)。

我有一个视频,其中包括一个介绍部分和一个我想循环播放的部分。我这样做是为了防止在加载它的第二部分时出现“黑点”。

所以我的问题是,我想让第二部分无缝循环,但似乎不能完全正确地完成它。在它再次开始播放之前似乎有一秒钟左右的延迟。我让我的视频编辑器将循环点设置为正好 36 秒,并使用以下代码寻找 36 秒并在结束后播放。

myPlayer.addEvent("ended", function () {
  myPlayer.currentTime(36);
  myPlayer.play();
});

这最终将视频摆动回第一帧,然后跳到 36 秒,然后播放。我将尝试为视频的最后一秒设置一个侦听器并执行搜索,但我仍然担心搜索后的瞬间延迟。

任何帮助将不胜感激!

亚历克斯

更新:我已经设法通过编辑 video.js 的源来消除它回到第一帧的位,以删除在“结束”事件被触发时运行的默认函数(基本上是这样的:“pause() ; currentTime(0); pause();" )

视频现在将直接进入我需要的 36 秒标记,但问题是它仍然将视频注册为已结束并在 36 秒标记处再次播放之前停止它,从而在循环中产生轻微延迟。我试图弄清楚如何让它监听视频即将结束的第二秒并触发 seek (currentTime) 函数,而不是“结束”事件监听器。

4

1 回答 1

1

尝试将视频分成两部分:介绍和循环部分。为每个元素制作一个<video>元素并将它们放置在同一个位置,隐藏第二个视频。在介绍上设置一个"ended"事件以换出显示并开始第二个视频。然后,您可以loop在第二个视频元素上设置属性。

只要您preload至少具有循环视频的属性,就可以让两个视频无缝地一起播放,这应该没有问题。

如果这不起作用,请尝试使用相同的循环视频制作两个视频元素。当一个正在播放时,您可以隐藏另一个并将其设置currentTime回零,因此当没有人在看时,任何搜索延迟都会发生。(希望浏览器足够智能,可以缓存视频文件,并且只从网络加载一次,但您可能想尝试一下。)

(不幸的是,这些都不适用于 ipad,因为移动 safari 不支持一个网页上的多个媒体元素。)

于 2013-01-09T06:39:19.717 回答