Подтвердить что ты не робот

Получение текущего времени видео YouTube

Я пишу плагин для браузера и должен найти способ получить текущее время воспроизведения YouTube на YouTube с помощью JavaScript. Я играю в консоли Chrome JavaScript и не имел никакой удачи.

Похоже, что хром API работает только со встроенными видеоплеерами, а не с видео, которое воспроизводится на youtube.com. Один из вариантов, который я рассмотрел, - это раздел разделов видео, который является полем ввода для времени "start at:", которое содержит текущее время видео. Я попытался использовать .value и .text в этом поле ввода, и оба они возвращают undefined? У кого-нибудь есть идеи?

4b9b3361

Ответ 1

ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();

Смотрите api

Ответ 2

Зависит от того, что вы хотите

player.getCurrentTime():Number

Возвращает прошедшее время в секундах с момента начала воспроизведения видео.

player.getDuration():Number

Возвращает продолжительность в секундах воспроизводимого в данный момент видео. Заметка что getDuration() вернет 0 до загрузки метаданных видео, который обычно происходит сразу после начала воспроизведения видео.

http://code.google.com/apis/youtube/js_api_reference.html

Ответ 3

Наконец-то я нашел, как заставить его работать на iOS (и на Android тоже).
На самом деле, весь YouTube API был сломан для меня, если запустить на мобильном браузере.

Проблема решена путем создания плеера с использованием new YT.Player как описано в YouTube IFrame API.

Обратите внимание: в настоящий момент для мобильных браузеров работает только создание метки <iframe> из <div>. Если вы попытаетесь использовать существующий <iframe> в new YT.Player вызове new YT.Player, как упомянуто в IFrame API, это не будет работать.

После создания игрока можно использовать player.getCurrentTime() или player.getDuration() с созданным экземпляром player.

Примечание: мне не повезло, вызывая этот метод на игроке, полученном с
player = document.getElementById(...) (из ответа @JosephMarikle).
В мобильных браузерах работал только созданный экземпляр player.


Полезные ссылки:

Ответ 5

Остановить в определенное время YouTube видео и показать окно уведомления в GWD

<script>
  var yid = document.getElementById("gwd-youtube_1");
  var idBox = document.getElementById("box1");
pausing_function = function(event) { 

    var aa = setInterval(function() {

        if (yid.getCurrentTime() > 8.0 && yid.getCurrentTime() < 8.1) {
            yid.pause(yid);
            idBox.style.opacity = 1;
            console.log(yid.getCurrentTime() + "playing")

             clearInterval(aa);
            yid.removeEventListener("playing", pausing_function);

        }

    }, 100)
}

 yid.addEventListener("playing", pausing_function);

  var pausing_function_1 = function() {      
       if (yid.getCurrentTime() > 8.1) {
        console.log(yid.getCurrentTime() + "pause")


        // remove the event listener after you paused the playback
        yid.removeEventListener("playing", pausing_function);
      }
    };    
  </script>

воспроизвести видео и скрыть уведомление

 <script type="text/javascript" gwd-events="handlers">
    window.gwd = window.gwd || {};
    gwd.pauseVideo = function(event) {
      var idBox = document.getElementById("box1");
      idBox.style.opacity = 0;
    };
  </script>
  <script type="text/javascript" gwd-events="registration">
    // Support code for event handling in Google Web Designer
     // This script block is auto-generated. Please do not edit!
    gwd.actions.events.registerEventHandlers = function(event) {
      gwd.actions.events.addHandler('gwd-youtube_1', 'playing', gwd.pauseVideo, false);
    };
    gwd.actions.events.deregisterEventHandlers = function(event) {
      gwd.actions.events.removeHandler('gwd-youtube_1', 'playing', gwd.pauseVideo, false);
    };
    document.addEventListener("DOMContentLoaded", gwd.actions.events.registerEventHandlers);
    document.addEventListener("unload", gwd.actions.events.deregisterEventHandlers);
  </script>

Ответ 6

Вы можете использовать Html5 Video API на youtube.com

var htmlVideoPlayer = document.getElementsByTagName('video')[0];
htmlVideoPlayer.currentTime

Примечание: он не будет работать на API Iframe Youtube, потому что Iframes изолированы. Вы не можете получить доступ к контексту IFrame Youtube.