0

我嵌入了 youtube 视频,如下所示:

    <object height="25" width="610"><param name="movie" 
    value="http://www.youtube.com/v/GBApIkX0YN4&hl=en_US&color1=0xf4f4f4&color2=0xffffff&hd=0&fs=0&enablejsapi=1&playerapiid=ytplayer">
    </param>
    <param name="allowFullScreen" value="true">
    </param>
    <param name="allowscriptaccess" value="always">
    </param>
    <embed src="http://www.youtube.com/v/GBApIkX0YN4&hl=en_US&color1=0xf4f4f4&color2=0xffffff&hd=0&fs=0" height="25" width="610" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always">
    </embed></object>

在 youtube 示例中,他们使用以下代码查看玩家状态何时发生变化。

    function onYouTubePlayerReady(playerId) {
  ytplayer = document.getElementById("myytplayer");
  ytplayer.addEventListener("onStateChange", "onytplayerStateChange");
}

    function onytplayerStateChange(newState) {
    alert("Player's new state: " + newState);
    }

当我将它放入我的页面时,当我播放暂停视频时没有任何反应(我认为它应该发出警报,说明状态是什么。)

我想使用“GBApIkX0YN4”的javascript获取它的id,这样我就可以使用youtube api并找出视频何时结束来调用javascript函数。

  1. 有没有更简单的方法来判断视频何时结束?

  2. 如果没有,我将如何获得它的 ID?

我看到另一个人使用

    youtubeID = v.attr('src').match(/youtube\.com.*?v[\/=](\w+)/)[1];

但我不知道如何从嵌入代码中找到 url。

谢谢

4

1 回答 1

0

您应该使用Youtube Javascript API这可以通过包含在您的嵌入 URL 中启用,&enablejsapi=1这样您的 URL 将如下所示:

http://www.youtube.com/v/GBApIkX0YN4&hl=en_US&color1=0xf4f4f4&color2=0xffffff&hd=0&fs=0&enablejsapi=1

为了调用播放器 API 方法,您必须首先获取对您希望控制的播放器对象的引用。这可以通过在 or 标记上调用 getElementById() 来获取播放器对象来完成。

然后,您可以onStateChange在播放器对象上设置事件,该事件将根据视频的状态返回一个值。您需要检查值是否为 0,表示视频已结束。

从文档中:

This event is fired whenever the player's state changes. Possible values are unstarted (-1), ended (0), playing (1), paused (2), buffering (3), video cued (5). When the SWF is first loaded it will broadcast an unstarted (-1) event. When the video is cued and ready to play it will broadcast a video cued event (5).

我希望这会有所帮助。

于 2012-05-13T12:16:02.873 回答