【发布时间】:2020-03-11 12:03:57
【问题描述】:
我想循环播放视频。出于某种原因,我不想在结束事件上更改视频 src。 所以我在一个循环中为每个视频创建了视频元素。我还有视频 src 和数组中的持续时间。
这是我的想法: 只有当前正在播放的视频标签可见。其他人将被隐藏。 我想使用 setTimeout 函数,而不是使用结束事件。视频的时长将是延迟参数。
但他们都一起玩。我无法让他们按顺序播放。
这是我到目前为止所做的:
videoArray = [
{"video":video1.mp4, "duration": 5},
{"video":video2.mp4, "duration": 7},
{"video":video3.mp4, "duration": 9},
{"video":video4.mp4, "duration": 10},
]
for (var j = 0; j < videoArray.length; j++){
var video = document.createElement("video");
video.src=videoArray[j];
video.id="video-"+j;
video.preload = "metadata";
video.type="video/mp4";
video.autoplay = true;
video.style.display="none";
document.body.appendChild(video);
}
for (var count = 0; count < videoArray.length; count++) {
(function(num){
setTimeout(function() {
videoArray[num].video.style.display="block";
videoArray[num].video.play();
}, 1000 * videoArray[num].duration);
videoArray[num].video.style.display="none";
})(count);
}
【问题讨论】:
-
您需要使用
timeupdate、play和pause事件侦听器,而不是尝试使用setTimeout并记住这一点:developers.google.com/web/updates/2017/06/… -
为什么要使用 setTimeout 来做
-
请记住,用户可以在 Firefox 的上下文菜单中更改视频速度。不确定其他浏览器。
-
我添加了第二个使用
setTimeout的答案。同样,我不建议采用这种方法,但它是可行的。
标签: javascript html html5-video settimeout