我正在做一个小项目,该项目涉及让用户在播放视频时跳到的时间。
我正在使用 API 的 javascript 部分来播放视频、暂停等,但我似乎无法理解如何获取用户跳到的时间。我知道我可以自己 seekTo ......但是当用户这样做时似乎没有相应的事件
我试图找到当用户跳到某个时间时触发的事件......
从 YT API 我看到他们没有这样的事件(在 javascript 中......我不想创建自己的基于 HTML5 和/或 AS3 的自定义播放器)。
我正在做一个小项目,该项目涉及让用户在播放视频时跳到的时间。
我正在使用 API 的 javascript 部分来播放视频、暂停等,但我似乎无法理解如何获取用户跳到的时间。我知道我可以自己 seekTo ......但是当用户这样做时似乎没有相应的事件
我试图找到当用户跳到某个时间时触发的事件......
从 YT API 我看到他们没有这样的事件(在 javascript 中......我不想创建自己的基于 HTML5 和/或 AS3 的自定义播放器)。
似乎没有真正的方法可以做到,但也许你可以“拦截”它并理解它,它不会花费很长时间:
在此页面中,您可以看到 api 可用的所有功能。您可以通过 2 种方式进行操作:
这是经过测试的代码示例 + JSFIDDLE
<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<body>
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>
<script>
var doing = -1;
var timenow=0;
var timeold=0;
var flag=0;
// 2. This code loads the IFrame Player API code asynchronously.
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
// 3. This function creates an <iframe> (and YouTube player)
// after the API code downloads.
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// 4. The API will call this function when the video player is ready.
function onPlayerReady(event) {
event.target.playVideo();
}
// 5. The API calls this function when the player's state changes.
// The function indicates that when playing a video (state=1),
// the player should play for six seconds and then stop.
var done = false;
function onPlayerStateChange(event) {
if(flag==1){
flag=0;
timenow=timeold;
}else{
if((doing==-1)&&(event['data']==1)){//start play
doing=1;
}
if((doing==1)&&(event['data']==2)){//from play to pause
timeold=player.getCurrentTime();
timeold=timeold;
doing=2;
console.log('go pause at:'+timeold);
}
if((doing==2)&&(event['data']==1)){//from pause to play
timenow=player.getCurrentTime();
console.log('go play at:'+timenow);
if(timenow>timeold){
alert('are you kidding me?! You switched from '+timeold+' to '+timenow+'!');
player.seekTo(timeold);
flag=1;
}else{
timeold=timenow;
}
}
if(event['data']==5 || event['data']<1){//stopped or ended
doing=-1;
timeold=0;
timenew=0;
}
}
}
function stopVideo() {
player.stopVideo();
}
</script>
</body>
</html>