2014-10-02 227 views
0

我已經使用在JavaScript的Youtube視頻API

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

你能解決這個問題嗎?

+0

因爲您觀看視頻的10秒。沒有代碼,很難幫你 – mpgn 2014-10-02 08:16:01

+0

函數onytplayerStateChange(event){ //alert ("Status=>"+event.data); 如果(事件數據== 1) { 如果(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; } } 如果(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; } – user3232409 2014-10-02 08:20:41

+0

@martialdidit我已經添加了驗證碼,請檢查一下,請幫助我 – user3232409 2014-10-02 08:21:41

回答

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秒,4秒在2:03

enter image description here

有一個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(); 
} 
+0

你好,我只需要總視頻觀看時間。就像如果視頻的總時間是50秒並且用戶從0秒到10秒開始觀看,則在用戶將視頻從10秒快速前進到20秒之後,繼續結束視頻,因此總觀看時間是40,因爲用戶已經從10秒跳到20秒。現在我希望現在你明白我需要什麼。 – user3232409 2014-10-02 10:10:37

+0

@ user3232409我更新了我的答案(代碼,現場示例...)一個很好的問題! :)至少, – mpgn 2014-10-02 14:56:42

+0

@ user3232409,您可以接受未來觀衆的答案。 – mpgn 2014-10-05 09:14:24