Javascript 监控youtube视频播放时间
我在HTML页面的iframe中有一个youtube视频。 我想在youtube视频播放达到5秒时触发一些事件 我正在使用youtube api的Javascript 监控youtube视频播放时间,javascript,jquery,youtube,youtube-api,youtube-javascript-api,Javascript,Jquery,Youtube,Youtube Api,Youtube Javascript Api,我在HTML页面的iframe中有一个youtube视频。 我想在youtube视频播放达到5秒时触发一些事件 我正在使用youtube api的player.getCurrentTime()方法 HTML代码: <div><iframe id="frameID" width="640" height="390" frameborder="0" title="YouTube video player" type="text/html" src="http://www.youtu
player.getCurrentTime()
方法
HTML代码:
<div><iframe id="frameID" width="640" height="390" frameborder="0" title="YouTube video player" type="text/html" src="http://www.youtube.com/embed/u1zgFlCw8Aw?enablejsapi=1"></iframe></div>
目前,如果视频播放达到5秒,我将显示警报框
上面的代码工作正常,但问题是,在这里,我检查每秒钟后的当前时间,直到5秒(如果视频在5秒之前暂停,甚至更多)。这增加了开销。我想要的是,某种方法可以在指定的时间过后调用回调方法,我不需要连续检查时间。YouTube API没有这种功能;虽然底层HTML5视频将发出“timeupdate”事件,但它根本不会通过播放器的iframe公开。但是,您的监控解决方案没有那么多开销,因此它完全可以做到。@jlmdonald谢谢您提供的信息。只是一个简单的问题-因为我是javascript新手,你能告诉我什么时候我在做
player.getCurrentTime()
,它是在调用服务器还是在客户端自己完成?这都是客户端的;“player”对象是保存YouTube视频的iframe的包装器,调用getCurrentTime()要求iframe的api报告上次发布的时间。请注意,它每秒只更新时间6或7次,因此您不希望轮询的频率超过此频率。
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('frameID', {
events: {
'onReady': onPlayerReady,
'onStateChange': stateChange
}
});
}
var playedFirstTime=0; //to check if the video is played first time
function stateChange(evt) {
if (evt.data == YT.PlayerState.PLAYING && playedFirstTime==0) {
playedFirstTime=1
timestampReached(); //if video is played first time then call the method.
}
};
function timestampReached()
{
var myVar= setInterval(function(){
if(player.getCurrentTime()>5) //checking the current time after each second
{
alert("reached");
clearInterval(myVar);
}
},1000);
}
function onPlayerReady(event) {
// timestampReached();
}