youtube API - setShuffle don not work



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

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

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

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

问题是,如果您在 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) .

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

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

如果你直接启动它,它肯定不会起作用(我已经注意到了,让我感到沮丧)。

相关内容

  • 没有找到相关文章

最新更新