youtube API - setShuffle不能正常工作

时间:2012-10-16 13:41:12

标签: api youtube youtube-api playlist

我在我的网站中添加了此脚本以重现视频播放列表。

<script type="text/javascript" src="swfobject.js"></script>  
<div id="ytapiplayer">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<script type="text/javascript">
var params = { allowScriptAccess: 'always',
allowFullScreen: 'true' };
var atts = { id: 'myytplayer' };
swfobject.embedSWF("https://www.youtube.com/v/videoseries?listType=playlist&list=PLBA9E733B5C8314DE&autoplay=1&modestbranding=1&enablejsapi=1&playerapiid=ytplayer&version=3", "ytapiplayer", "640", "360", "8", null, null, params, atts);
function onYouTubePlayerReady(myytplayer) {
        ytSwfPlayer = document.getElementById( 'myytplayer' );
        ytSwfPlayer.setShuffle(1);
}
</script>

setShuffle功能不起作用!!! 你可以建议我一个解决方案吗?

3 个答案:

答案 0 :(得分:4)

这似乎是播放器中的错​​误。我已向团队报告此错误。将来,您可以在https://code.google.com/p/gdata-issues/issues/entry?template=YouTube%20(Defect%20Report)

报告错误

作为一种解决方法,你可以使用JS api来自己洗牌。视频结束后,您可以拨打playVideoAt并传递一个随机数。

答案 1 :(得分:1)

问题在于,如果您在Youtube播放器中加载了播放列表队列,则下一首曲目将在当前播放曲目结束时自动开始。

所以你应该绑定跟踪结束事件(event.data = 0),然后让youtube播放器做两件事:

  1. 停止播放
  2. 通过调用playVideoAt方法播放具有随机索引的新曲目。
  3. 避免多次重复相同曲目的简单解决方案是将播放的idx存储在列表中。然后,你应该有一个函数,比如shuffle,它生成一个介于0和队列长度之间的随机整数:

    function getRandomId() {
        var random_id = 0
        while(played_idx.indexOf(random_id) != -1) {
          random_id = Math.floor(Math.random * playlist.length)
        }
        return random_id
    }
    

    然后,只需致电playVideoAt(random_id)

答案 2 :(得分:1)

我注意到如果稍后启动命令,setShuffle会起作用。像这样:

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

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