我在我的网站中添加了这个脚本来重现视频播放列表。
<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播放器做两件事:
- 停止播放
- 通过调用
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);
}
如果你直接启动它,它肯定不会起作用(我已经注意到了,让我感到沮丧)。