为什么 YouTube JavaScript 播放器 API 打开一个与我的代码不同的 URL,并且只播放播放列表的第一个视频?

Why YouTube JavaScript Player API open a different URL than the one in my code, and just play the first video of a playlist?

这是我的第一个post,希望我遵守所有规则。

我想在我的网站页面上发布: 随机播放/静音/自动播放 youtube 播放列表。

我使用了 AS3 方法,带有 SWFObject。

以下代码一切正常,但几周后,播放器没有检测到我的播放列表,只播放了第一个视频。

在代码中,URL 是: https://www.youtube.com/v/HuIGf4IJzdM&list=PLo-QIlIZx6myBxEysxrWoE-f58-psKGji

但是当我打开该页面的页面时,它会打开以下内容link: https://www.youtube.com/v/HuIGf4IJzdM&list=o-QIlIZx6myBxEysxrWoE-f58-psKGji

这是代码,如果我没记错的话,可以先行正常工作:

<script src="https://www.google.com/jsapi"></script>
<script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<div id="ytapiplayer">You need Flash player 8+ and JavaScript enabled to view this video.</div>
<script type="text/javascript">
google.load("swfobject", "2.2");
function onYouTubePlayerReady(playerId) {
ytplayer = document.getElementById("myytplayer");
ytplayer.playVideo();
ytplayer.setShuffle(true);
ytplayer.mute();
}
var params = {allowScriptAccess: "always" , allowFullScreen : "true"};
var atts = { id: "myytplayer" };

swfobject.embedSWF("https://www.youtube.com/v/HuIGf4IJzdM&list=PLo-QIlIZx6myBxEysxrWoE-f58-psKGji&index=0&feature=plpp_play_all?enablejsapi=1&playerapiid=ytplayer&allowFullScreen=true&version=3&loop=1&autohide=1",
"ytapiplayer", "50%", "50%", "10", null, null, params, atts)
</script>

如果有人能帮我找到解决这个问题的方法,非常感谢!!

...the player doesn't detect my playlist and just play the first video.

Youtube 已转向更新的 iFrame API,并且允许播放列表。

尝试粘贴以下示例代码 here(单击“查看结果”)

<!DOCTYPE html>
<html>
<body>

<iframe width="700" height="400"
src="https://www.youtube.com/embed/HuIGf4IJzdM?list=PLo-QIlIZx6myBxEysxrWoE-f58-psKGji">
</iframe>

</body>
</html>

看看它在 <iframe> 标签中的表现如何?不是 SWF,不是 JS,只是使用 iFrame。您必须在您的网站代码中添加一个类似的标签(删除并替换您显示的 script 代码)。

注释:

  • 另请注意 iFrame url 以 https://www.youtube.com/embed/ 这给了你 HTML5 播放器 这意味着它也可以在移动设备上使用。网站访问者使用电话或 平板可以看。这是您所有网站的最佳工作选择 访客。
  • 如果你真的想在 iFrame 中使用 Flash,那么将开头改为 https://www.youtube.com/v/ 这为您提供了 SWF 播放器 意味着它将需要 Flash Player 插件(在移动设备上不可用)。 使用手机或平板电脑访问您网站的人无法观看 (他们得到一个空白的白框或类似“插件不 可用”)。

我终于找到了一种使其与 iframe 一起工作的替代方法。

这是代码:

<div id="player"></div>

<script>

  var tag = document.createElement('script');

  tag.src = "https://www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '100%',
      width: '100%',
      events: {
        'onReady': onPlayerReady
      }

    });
  }

  function onPlayerReady(event) {

    event.target.loadPlaylist({'listType': 'playlist',
                               'list': 'PLo-QIlIZx6myBxEysxrWoE-f58-psKGji',
                               'index': '0'
                              });
      event.target.mute();
      event.target.setLoop(true);
    setTimeout( function() { 
        event.target.setShuffle(true); 
    }, 2000);
      }
</script>

感谢您的帮助:-)