2014-10-02 3 views
0

Я использовал видео API YouTube в JavaScriptYoutube видео апи в JavaScript

И играть паузу и остановить события я использовал

Теперь я получил общее текущее время, общая наблюдал время, но моя главная проблема заключается в следующем:

Посмотрите видеоролик в течение нескольких секунд и ускорьтесь вперед, затем просмотрите еще несколько секунд и посмотрите, во сколько он записывается .... Если я смотрю видео в течение 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

+0

function 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

+0

@martialdidit Я добавил код, пожалуйста, проверьте его, пожалуйста, помогите мне – user3232409

ответ

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

+0

@ user3232409 Я обновил свой ответ (код, живой пример ...) Хороший вопрос! :) – mpgn

+0

@ user3232409 По крайней мере, вы можете принять ответ для будущих зрителей. – mpgn

Смежные вопросы