【发布时间】:2013-11-22 16:03:21
【问题描述】:
我在同一页面上嵌入了两个相同的 YouTube 视频。我希望它们保持同步,这是我的要求/注意事项:
- 两个视频必须同时开始
- 当用户播放/暂停视频时,其他视频也会执行相同的操作
- 这很容易通过 API 实现
- 当一个视频缓冲另一个视频时停止等待,并在它们都准备好时开始
- 我只需要一个视频的音频
- 同步精度不必精确到毫秒级,只要可靠即可
- 一个视频将用作背景视频
- 此视频会略微模糊(使用 CSS3 模糊),因此质量不是很重要
我尝试使用 YouTube JS API 来监听播放器状态变化并尝试使两个视频保持同步,但它并不像我希望的那样可靠。我将在下面发布部分代码。
需要注意的是,一个视频会显得比另一个大,因此 YouTube 可能会为此提供更高质量的视频。
因为我使用的是 CSS3 blur,我只能使用最近的 Webkit 浏览器,所以单独使用这些(而不是 FF/IE)的解决方案不是问题。
我的问题是这样的,对于上述要求,有没有办法让这两个视频保持同步?我确实考虑过是否可以使用 canvas API 来“重绘”视频,但经过研究发现这是不可能的。
buffering = false;
var buffer_control = function(buffering_video, sibling_video, state) {
switch ( state ) {
case 1: // play
if ( buffering === true ) {
console.error('restarting after buffer');
// pause both videos, we want to make sure they are both at the same time
buffering_video.pauseVideo();
sibling_video.pauseVideo();
// get the current time of the video being buffered...
var current_time = buffering_video.getCurrentTime();
// ... and pull the sibling video back to that time
sibling_video.seekTo(current_time, true);
// finally, play both videos
buffering_video.playVideo();
sibling_video.playVideo();
// unset the buffering flag
buffering = false;
}
break;
case 3: // buffering
console.error('buffering');
// set the buffering flag
buffering = true;
// pause the sibling video
sibling_video.pauseVideo();
break;
}
}
【问题讨论】:
-
要同步这么多运动部件并保持足够同步以免分散用户的注意力,这听起来确实是一项艰巨的任务......愚蠢的问题,为什么?
-
也许是这样,我正在尝试突破界限:D。一个视频将是模糊的(CSS3 模糊),全尺寸背景视频,另一个是屏幕中间的普通视频......我正在做的项目有点混乱。事实上,如果它稍微不同步(但确实如此),这不会是一个大问题。
-
你用的是哪个api版本?
-
@AbhishekHingnikar 我正在加载脚本
<script src="http://www.youtube.com/player_api"></script>,所以我猜它是最新版本。 -
也许你可以尝试一些数学函数,比如:get time of video1 |获取video2的时间|true|false video1 time>video2 time|video1 - video2
标签: javascript video youtube youtube-api sync