2013-04-07 64 views
4

我一直在试图建立自己的YouTube API来打乱我的播放列表,但是顺序是一样的所有的时间...YouTube API播放列表shuffle无法正常工作?

这里就是我从 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为“true”,我已经试过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

的洗牌在这里工作后ü加载播放列表,并点击一个按钮。

回答

2

这是一个已知的bug有待固定 - 看到这个post

一个解决不过是一个随机数传递给playVideoAt,如下:

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

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

我找到了解决办法。你必须加载player.setShuffle(true)仅仅是第一视频开始播放后:

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

演示我online music tv website

0

或多或少相同的溶液,作为伊万的。适合我!

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

如果你直接启动它,它肯定不会工作(我注意到,对我的沮丧)。