【问题标题】:Youtube video api in JavaScriptJavaScript 中的 Youtube 视频 API
【发布时间】:2014-10-02 06:14:46
【问题描述】:

我在 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; 
    }
} 

你能解决这个问题吗?

【问题讨论】:

  • 因为您观看了 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; }
  • @martialdidit 我已添加代码请检查它请帮助我

标签: javascript youtube-api youtube-javascript-api


【解决方案1】:

如果您只希望用户观看视频的时间,则需要使用计数器。 我还简化了您的代码。

函数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 秒

有一个live example已更新

完整代码:

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();
}

【讨论】:

  • 您好,我只想要总视频观看时间。就像视频的总时间是 50 秒并且用户从 0 秒开始观看到 10 秒然后在用户将视频从 10 秒快进到 20 秒然后继续结束视频所以总观看时间是 40 因为用户已经从 10 秒跳到20 秒。现在我希望你现在明白我需要什么。
  • @user3232409 我更新了我的答案(代码,现场示例......)一个好问题! :)
  • @user3232409 至少,您可以接受未来观众的答案。
猜你喜欢
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2015-12-01
  • 2012-07-02
  • 2017-04-26
  • 1970-01-01
相关资源
最近更新 更多