我正在运行以下代码,它在每个视频结束时更改html5视频的源,以便它不断播放一个视频接着另一个视频。第一个视频播放完后,它会播放第二个视频,然后是第三个视频,最终从头开始,形成无限循环。它还选择了一个随机起点,但这对我的问题不重要。
在下面的代码中,您只会找到两个视频源,但最终代码将使用大约十个左右。
我的问题是,在一个视频结束和下一个视频开始之间有一个小暂停。我已经将视频标签的背景颜色设置为红色,以便您可以看到每个视频播放之间的红色闪烁。
我猜这可以通过预加载javascript代码中指定的所有视频来解决。因此,当播放当前视频时,我想实现仅预加载javascript代码中指定的列表中的下一个视频。因此,当播放第5个视频时,它应该预加载第6个视频等。
或者这不是可以通过有效的缓冲/预加载来解决的问题吗?我也乐意听取任何其他建议。
在下面的代码中,您只会找到两个视频源,但最终代码将使用大约十个左右。
我的问题是,在一个视频结束和下一个视频开始之间有一个小暂停。我已经将视频标签的背景颜色设置为红色,以便您可以看到每个视频播放之间的红色闪烁。
我猜这可以通过预加载javascript代码中指定的所有视频来解决。因此,当播放当前视频时,我想实现仅预加载javascript代码中指定的列表中的下一个视频。因此,当播放第5个视频时,它应该预加载第6个视频等。
或者这不是可以通过有效的缓冲/预加载来解决的问题吗?我也乐意听取任何其他建议。
var vidElement = document.getElementById('video');
var vidSources = [
"http://www.w3schools.com/html/mov_bbb.mp4",
"http://www.w3schools.com/html/movie.mp4"
];
var activeVideo = Math.floor((Math.random() * vidSources.length));
vidElement.src = vidSources[activeVideo];
vidElement.addEventListener('ended', function(e) {
// update the active video index
activeVideo = (++activeVideo) % vidSources.length;
if(activeVideo === vidSources.length){
activeVideo = 0;
}
// update the video source and play
vidElement.src = vidSources[activeVideo];
vidElement.play();
});
video { background-color: red }
<video src="http://www.w3schools.com/html/mov_bbb.mp4" id="video" autoplay muted playsinline></video>
<p>(each video is just ~ 10 seconds)</p>