Javascript 制作从列表服务器端随机播放视频的YouTube视频播放器
我想制作一个从预定义列表中随机选择的嵌入式YouTube视频,当它结束时,播放同一列表中的另一个随机视频,以此类推 使用YouTube播放列表和脚本制作列表来洗牌视频,而不是按照给定的顺序播放,这样做相对容易,但我有两个问题:Javascript 制作从列表服务器端随机播放视频的YouTube视频播放器,javascript,php,jquery,ajax,youtube,Javascript,Php,Jquery,Ajax,Youtube,我想制作一个从预定义列表中随机选择的嵌入式YouTube视频,当它结束时,播放同一列表中的另一个随机视频,以此类推 使用YouTube播放列表和脚本制作列表来洗牌视频,而不是按照给定的顺序播放,这样做相对容易,但我有两个问题: 据我所知,目前嵌入的YouTube播放列表只能包含200个视频,即使实际限制似乎是5000个 更重要的是,即使我真的使用YouTube播放列表来定义列表,我也不想将其暴露到使用的最终版本(即使只在代码中显示),因为我想在人们观看视频时保留“惊喜”因素 因此,我尝试创建
- 据我所知,目前嵌入的YouTube播放列表只能包含200个视频,即使实际限制似乎是5000个
- 更重要的是,即使我真的使用YouTube播放列表来定义列表,我也不想将其暴露到使用的最终版本(即使只在代码中显示),因为我想在人们观看视频时保留“惊喜”因素
我添加了一些针对更新/更改的注释。这假设youtube设置正在运行,并且jQuery>=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();
}
}
下一个视频的随机选择是在客户端还是服务器上进行的?是在服务器上进行的。
//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>
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();
}
}