我想制作从预定义列表中随机选择的嵌入式YouTube视频,当它结束时,播放来自同一列表的其他随机视频,依此类推。
使用YouTube播放列表和脚本来制作列表来播放视频而不是按给定顺序播放相对容易,但我有两个问题:
因此,我尝试使用PHP创建一个在服务器端加载的预定义列表。我对这种编程知之甚少,所以我根据我之前在网上找到的一些东西做了一些测试,但我无法按照自己的意愿去做。
首先,我做了一个.php文件,从字符串中随机选择一个YouTube ID(该方法可以改进,但这可能超出了问题的范围)
<?php
$input = array("kfchvCyHms", "UiyDmqO59QE", "PkVbF9DmtSw");
echo $input[array_rand($input)];
然后在主页面中,我加载文件中给出的给定YouTube ID并尝试与生成的播放器混合:
//JQuery is loaded in the head.
<div id="player"></div>
<script src="http://www.youtube.com/player_api"></script>
<script>
//This creates a variable out of the page content (a single YouTube ID in this case)
var ching
$.get("testytid.php", function( my_var ) {
ching=my_var;
}, 'html');
// create youtube player
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'tAg5vLb3ZEs', //the default "videoId" should be random too, but I can't get that to work.
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
}
function playNewVideo(id){
player.loadVideoById(ching); //loads the random ID given by the .php file
event.target.playVideo();
playNewVideo(ID)
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
playNewVideo();
}
}
</script>
它不起作用,因为:
关于如何改进这一点的任何想法?
答案 0 :(得分:0)
我添加了一些针对更新/更改的评论。这假设youtube设置正常,jQuery&gt; = 3.0 .done
function GetNextVideoFromServer() {
$.ajax({
url : "testytid.php",
cache : false
})
.done(function (data) {
console.log(data); // you might want to check this first. the data returned should just be a single id.
playNewVideo(data); // call the play function
});
}
// create youtube player
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height : '390',
width : '640',
videoId : 'tAg5vLb3ZEs', //the default "videoId" should be random too, but I can't get that to work.
events : {
'onReady' : onPlayerReady,
'onStateChange' : onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
}
function playNewVideo(id) {
player.loadVideoById(id); //loads the random ID given by the .php file
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if (event.data === 0) {
GetNextVideoFromServer();
}
}