YouTube API播放列表随机播放不起作用?

时间:2013-04-07 19:45:45

标签: javascript youtube-api

我一直在尝试设置我的youtube api以随机播放我的播放列表,但订单始终是相同的......

以下是我从中获取代码的链接 https://developers.google.com/youtube/iframe_api_reference#setShuffle

我称呼它是对的吗?

这是我的代码

<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: '390',
      width: '640',
      events: {
        'onReady': onPlayerReady
      }

    });
  }



  function onPlayerReady(event) {
    player.loadPlaylist({'listType': 'playlist', 'list': 'PLF776D41D8211F340','index': '0','startSeconds': '0','suggestedQuality': 'hd720'});
    player.setShuffle({'shufflePlaylist' : 1});

  }

</script>

我已经尝试将shufflePlaylist设置为&#39; true&#39;,我已经尝试了cueplaylist而不是loadplaylist,我甚至尝试将shufflePlaylist放入加载播放列表......没有任何东西被洗牌。

我已经调查了这个,我发现这是API的一个问题,但那是2年前,有没有解决这个问题的方法?

以下是我尝试过但没有工作

player.setShuffle(1);
        player.setShuffle('1');
        player.setShuffle(true);
        player.setShuffle('true');
        player.setShuffle({'shufflePlaylist' : true});
        player.setShuffle({'shufflePlaylist' : 1});
        player.setShuffle({'shufflePlaylist' : 'true'});
        player.setShuffle({'shufflePlaylist' : '1'});

我也尝试过这里的复制和示例.... https://developers.google.com/youtube/youtube_player_demo

在您加载播放列表并单击按钮后,Shuffle将在此处运行。

4 个答案:

答案 0 :(得分:2)

这是一个尚未修复的已知错误 - 请参阅此post

然而,解决方法是将随机数传递给playVideoAt,如下所示:

var getRandom = function(min, max) {
  return Math.random() * (max - min) + min;
};

var playRandomTrack = function() {
  num = getRandom(0, 99);
  player.playVideoAt(num);  
};

答案 1 :(得分:1)

我找到了解决方案。您必须在第一个视频开始后加载player.setShuffle(true)

 function onPlayerReady(event) {
    event.target.playVideo();
    setTimeout(setShuffleFunction, 1000);           
  }
  function setShuffleFunction(){
    player.setShuffle(true);
  }

我的online music tv website

上的演示

答案 2 :(得分:0)

或多或少与伊万相同的解决方案。适合我!

function onPlayerReady(event) {
    event.target.mute();
    setTimeout( function() { 
        event.target.setShuffle(true); 
        event.target.setLoop(true);
    }, 2000);
}

如果你直接启动它,它绝对不会起作用(我注意到,令我沮丧)。

答案 3 :(得分:0)

尝试以下操作:

function onPlayerStateChange(event) {
    if(event.data === 0) {
        player.setShuffle(true);
        player.playVideo();
    }
}