我在我的网站中添加了此脚本以重现视频播放列表。
<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功能不起作用!!! 你可以建议我一个解决方案吗?
答案 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播放器做两件事:
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)
。
答案 2 :(得分:1)
我注意到如果稍后启动命令,setShuffle会起作用。像这样:
function onPlayerReady(event) {
event.target.mute();
setTimeout( function() {
event.target.setShuffle(true);
event.target.setLoop(true);
}, 2000);
}
如果你直接启动它,它绝对不会起作用(我注意到,令我沮丧)。