如何保持同步视频元素,尤其是在 (html5/javascript) 中的 pause/play 事件之后
How to keep synchronized video element especially after pause/play event in (html5/javascript)
我尝试在 html5 网页项目中使三个元素完全同步。为了确保不会因视频下载而发生偏移,我将属性 preload="auto" 放到视频元素中。
我的脚本如下:
var run = document.getElementById("run"); //run is a button element
var vid = document.getElementById("video1"); // the first video element
function PlayVideo() {
if (vid.paused) {
vid.play();
run.textContent = "||";
} else {
vid.pause();
run.textContent = ">";
}
} // The PlayVideo() function is called onclick on the run button
$('#video1').on('play', ambiance = function(){
document.getElementById("video2").play();
document.getElementById("video3").play();
});
$('#video1').on('pause', ambiance = function(){
document.getElementById("video2").pause();
document.getElementById("video3").pause();
});
在等待几秒钟以完全加载视频文件后使用这段脚本时,运行 按钮正确播放第一个视频,其他两个开始同步。但是当我第二次按下 运行 按钮时,只有第一个视频停止,另外两个视频在 2 或 3 秒内继续播放(两者都同步但不与第一个视频同步)。
你能帮帮我吗?
是否有其他方式(更优雅)来播放同步视频?
最后一个要素:三个视频的来源是一样的。 (每个元素播放相同的视频)。
谢谢
尝试这样的事情:
var videos = document.querySelectorAll('video');
function playAll() {
[].forEach.call(videos, function(video) {
video.play()
});
}
function pauseAll() {
[].forEach.call(videos, function(video) {
video.pause()
});
}
// this keeps everything synchronized
[].forEach.call(videos, function(video) {
video.addEventListener('play', playAll, false);
video.addEventListener('pause', pauseAll, false);
});
请记住,可能仍然会有轻微的偏移(如果你有声音,它听起来会失真)
我尝试在 html5 网页项目中使三个元素完全同步。为了确保不会因视频下载而发生偏移,我将属性 preload="auto" 放到视频元素中。
我的脚本如下:
var run = document.getElementById("run"); //run is a button element
var vid = document.getElementById("video1"); // the first video element
function PlayVideo() {
if (vid.paused) {
vid.play();
run.textContent = "||";
} else {
vid.pause();
run.textContent = ">";
}
} // The PlayVideo() function is called onclick on the run button
$('#video1').on('play', ambiance = function(){
document.getElementById("video2").play();
document.getElementById("video3").play();
});
$('#video1').on('pause', ambiance = function(){
document.getElementById("video2").pause();
document.getElementById("video3").pause();
});
在等待几秒钟以完全加载视频文件后使用这段脚本时,运行 按钮正确播放第一个视频,其他两个开始同步。但是当我第二次按下 运行 按钮时,只有第一个视频停止,另外两个视频在 2 或 3 秒内继续播放(两者都同步但不与第一个视频同步)。
你能帮帮我吗? 是否有其他方式(更优雅)来播放同步视频?
最后一个要素:三个视频的来源是一样的。 (每个元素播放相同的视频)。
谢谢
尝试这样的事情:
var videos = document.querySelectorAll('video');
function playAll() {
[].forEach.call(videos, function(video) {
video.play()
});
}
function pauseAll() {
[].forEach.call(videos, function(video) {
video.pause()
});
}
// this keeps everything synchronized
[].forEach.call(videos, function(video) {
video.addEventListener('play', playAll, false);
video.addEventListener('pause', pauseAll, false);
});
请记住,可能仍然会有轻微的偏移(如果你有声音,它听起来会失真)