【发布时间】:2012-12-18 14:42:04
【问题描述】:
有没有办法使用 Youtube API 将视频播放到视频中的某个点然后暂停?
【问题讨论】:
标签: javascript api youtube-javascript-api
有没有办法使用 Youtube API 将视频播放到视频中的某个点然后暂停?
【问题讨论】:
标签: javascript api youtube-javascript-api
我已经修改了YouTube Player API Reference for iframe Embeds 中的代码以在一定秒数后暂停播放。
代码通过等待onPlayerStateChange 事件来工作。当事件触发时,它会检查该事件是否为PLAYING 事件。如果是,它会计算从当前时间(getCurrentTime() 方法)到所需暂停点(硬编码为stopPlayAt 变量)的剩余时间。它设置一个 Javascript 计时器来等待该差异,然后向 API 传递一个命令来暂停视频。
【讨论】:
YT.PlayerState.BUFFERING,请参阅onStateChange 的文档)。当播放器状态更改为除播放之外的任何内容时,我对其进行编码的方式将清除停止计时器。当状态变回YT.PlayerState.PLAYING 时,计时器将重新启动,并根据当前播放位置计算出新的超时时间。
您可以使用 Object 语法中的命令cueVideoById 来实现。
请看这里:https://developers.google.com/youtube/iframe_api_reference#cueVideoById
这就是开始这样的视频的方式。
//Minimal Example
player.cueVideoById({videoId:String, endSeconds:Number});
player.playVideo();
编辑:上面的示例停止了视频。如果您想暂停它,JavaScript 代码需要更多操作。
具体来说,你必须轮询合适的时间。
function checkTime() {
if ( player.getCurrentTime() == finishTime )
player.pauseVideo()
else
setInterval(checkTime, 500);
}
checkTime();
或者在JS中跟踪时间:
var duration = finishTime - player.getCurrentTime();
player.playVideo()
setInterval("player.pauseVideo();", duration*1000);
【讨论】: