Получение текущего видео YouTube - PullRequest
29 голосов
/ 07 августа 2011

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

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

Ответы [ 6 ]

45 голосов
/ 07 августа 2011
ytplayer = document.getElementById("movie_player");
ytplayer.getCurrentTime();

См. API

11 голосов
/ 07 августа 2011

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

player.getCurrentTime():Number

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

player.getDuration():Number

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

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

6 голосов
/ 19 февраля 2016

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

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

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

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

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


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

1 голос
/ 09 сентября 2015

Просто к сведению, есть новый интерфейс iframe для проигрывателя YouTube: https://developers.google.com/youtube/iframe_api_reference

0 голосов
/ 27 июня 2019

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

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

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

0 голосов
/ 01 мая 2019

Остановить в определенное время 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...