1

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

<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 功能不起作用!!!你能建议我一个解决方案吗?

4

3 回答 3

4

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

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

于 2012-10-17T17:41:11.713 回答
1

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

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

  1. 别玩了
  2. playVideoAt通过调用方法播放具有随机索引的新曲目。

避免多次重复相同曲目的简单解决方案是将播放的 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).

于 2014-02-27T14:52:07.517 回答
1

我注意到如果您稍后启动该命令,setShuffle 确实有效。像这样的东西:

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

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

于 2016-02-05T17:13:02.233 回答