Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中的Youtube视频api_Javascript_Youtube Api_Youtube Javascript Api - Fatal编程技术网

JavaScript中的Youtube视频api

JavaScript中的Youtube视频api,javascript,youtube-api,youtube-javascript-api,Javascript,Youtube Api,Youtube Javascript Api,我在JavaScript中使用了YouTube视频API 播放我用过的暂停和停止事件 现在我得到了总的当前时间,总的观看时间, 但我的主要问题是: 观看一段视频几秒钟并快进,然后再观看几秒钟,看看它记录的时间。。。。如果我看一段视频5秒钟,然后快进到第10分钟,再看5秒钟,我实际看视频的时间是10秒钟,而不是10分钟 这是我的密码: function onytplayerStateChange(event) { //alert("Status=>"+event.data);

我在JavaScript中使用了YouTube视频API

播放我用过的暂停和停止事件

现在我得到了总的当前时间,总的观看时间, 但我的主要问题是:

观看一段视频几秒钟并快进,然后再观看几秒钟,看看它记录的时间。。。。如果我看一段视频5秒钟,然后快进到第10分钟,再看5秒钟,我实际看视频的时间是10秒钟,而不是10分钟

这是我的密码:

function onytplayerStateChange(event) 
{ 
    //alert("Status=>"+event.data); 
    if(event. data == 1) { 
        if(Math.floor(event.target.A.currentTime) == 0) { 
            previous_track_time = current_track_time = 0; 
            total_track_time = event.target.A.duration; 
        } else { 
            previous_track_time = current_track_time; 
            current_track_time = event.target.A.currentTime; 
        } 
    } 
    if(event.data == 2) 
    { 
        current_track_time = event.target.A.currentTime; 
        total_track_time =(event.target.A.duration-(current_track_time-previous_track_time)); 
        previous_track_time = current_track_time; 
    }
} 

你能解决这个问题吗?

如果你只想让用户观看视频,你需要使用计数器。 我还简化了代码

函数onPlayerStateChange:

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING) {
        //player play
        timer = setInterval(
          function() {
            seconds++;
            console.log("you watch: "+ seconds +" seconds of the video");
          }, 1000
        );
    } else {
      //player pause
      clearInterval(timer);
    }
}
输出:我只看到了视频的8秒,前4秒和2:03时的4秒

有一个更新的

完整代码:

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: 'l-gQLqv9f4o',
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}

// 4. The API will call this function when the video player is ready.
var seconds = 0;
var timer;
function onPlayerReady(event) {
    event.target.playVideo();

}

function onPlayerStateChange(event) {
    if (event.data == YT.PlayerState.PLAYING) {
        //player play
        timer = setInterval(
          function() {
            seconds++;
            console.log("you watch: "+ seconds +" seconds of the video");
          }, 1000
        );
    } else {
      //player pause
      clearInterval(timer);
    }
}

function stopVideo() {
    player.stopVideo();
}
var tag=document.createElement('script');
tag.src=”https://www.youtube.com/iframe_api";
var firstScriptTag=document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(标记,firstScriptTag);
// 3. 此函数用于创建(和YouTube播放器)
//API代码下载后。
var播放器;
函数onyoutubeiframeapiredy(){
player=新的YT.player('player'{
高度:“390”,
宽度:“640”,
videoId:'l-gQLqv9f4o',
活动:{
“onReady”:onPlayerReady,
“onStateChange”:onPlayerStateChange
}
});
}
// 4. 当视频播放器准备就绪时,API将调用此函数。
var秒=0;
无功定时器;
函数onPlayerReady(事件){
event.target.playVideo();
}
函数onPlayerStateChange(事件){
if(event.data==YT.PlayerState.PLAYING){
//玩家游戏
定时器=设置间隔(
函数(){
秒++;
log(“你看:+秒+视频秒”);
}, 1000
);
}否则{
//播放器暂停
清除间隔(计时器);
}
}
函数stopVideo(){
player.stopVideo();
}

因为你看了10秒钟的视频。如果没有代码,就很难帮助您运行onytplayerStateChange(event){//alert(“Status=>”+event.data);if(event.data==1){if(Math.floor(event.target.A.currentTime)==0){previous_track_time=current_track_time=0;total_track_time=event.target.A.duration;}{previous_track_time=current_track_time;current_track_time=event.target.A.currentTime;}if(event.data==2){current_track_time=event.target.A.currentTime;total_track_time=(event.target.A.duration-(current_track_time-previous_track_time);previous_track_time=current_track_time;}@martialdidit我添加了代码请检查请帮助我你好,我只想要总的视频观看时间。例如,如果视频是总时间是50秒,用户从0秒开始观看到10秒,然后在用户快进视频后从10秒到20秒,然后继续结束视频,所以总观看时间是40秒,因为用户从10秒跳过秒到20秒。现在我希望你明白我需要什么。@user3232409我更新了我的答案(代码,实例…)一个好问题!:)@user3232409至少,你可以接受未来观众的答案。