获取当前的YouTube视频时间

时间:2011-08-07 00:56:29

标签: javascript youtube

我正在编写一个浏览器插件,需要找到一种方法来获取使用JavaScript在YouTube上播放YouTube视频的当前时间。我一直在玩Chrome JavaScript控制台,但没有运气。

Chrome API似乎仅适用于嵌入式视频播放器,而不适用于在youtube.com上播放的视频。我查看的一个选项是在视频的共享部分,它们是“start at:”时间的输入框,其中包含视频的当前时间。我试过在这个输入框上使用.value和.text,它们都返回undefined?有没有人有任何想法?

7 个答案:

答案 0 :(得分:43)

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

请参阅the api

答案 1 :(得分:11)

取决于你想要的东西

player.getCurrentTime():Number
  

返回自视频开始播放以来经过的时间(以秒为单位)。

player.getDuration():Number
  

返回当前播放视频的持续时间(以秒为单位)。注意   getDuration()将返回0,直到加载视频的元数据为止,   通常在视频开始播放后发生。

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

答案 2 :(得分:6)

最后我发现如何让它在iOS(以及Android)上运行 实际上,如果在移动浏览器上运行,整个youtube js api都会被打破。

YouTube IFrame API中所述的使用new YT.Player 创建播放器解决了问题。

请注意:仅在<iframe>占位符中创建<div>适用于移动浏览器。如果您尝试在<iframe>调用中使用现有的new YT.Player,如IFrame API中所述,则无效。

创建播放器后,可以使用player.getCurrentTime()player.getDuration()创建player个实例。

注意:我没有运气这个方法用于获得的球员 player = document.getElementById(...)(来自@JosephMarikle回答) 只有已创建的player实例才能在移动浏览器中使用。

有用的链接:

答案 3 :(得分:1)

仅供参考,YouTube播放器有一个新的iframe API: https://developers.google.com/youtube/iframe_api_reference

答案 4 :(得分:1)

在2020年,这项工作有效:

player.playerInfo.currentTime

完整代码: see it live on codepen

答案 5 :(得分:0)

在特定时间停止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 :(得分:0)

您可以在youtube.com上使用Html5 Video API

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

注意:由于Iframe是隔离的,因此无法在Youtube Iframe API上使用。您无法访问Youtube IFrame的上下文。