有没有办法播放一个接一个的YouTube视频,或者更好的是,一个接一个地播放一系列视频,中间没有中断?我不确定如何使用youtube API执行此操作,但我知道它可以以某种方式完成。
答案 0 :(得分:1)
这很简单。我假设你有一系列想要播放的视频ID。在你的onStageChange函数中,监听视频结束状态,一旦发生这种情况,从数组中选择下一个视频并开始播放。要播放下一个视频,您需要调用loadVideoById函数,然后调用playVideo()。希望这有帮助。
正如@rupps所说,你的视频是否会在没有任何休息的情况下一个接一个地运行取决于互联网速度等因素。您无法事先缓冲播放列表中的所有视频。
访问此帖子以查看示例 - Play a 2nd youtube video after first one has finished playing
答案 1 :(得分:0)
最简单的方法是使用Youtube API方法指定播放列表(查看文档)。更难的方法是自己播放视频,收听Video End事件,然后播放下一个视频。
关于没有休息,这取决于很多事情:
如果视频没有广告,并且您对所获得的休息不满意,您可能会尝试在前一个视频结束前5秒提示下一个视频,然后当您收到视频结束事件时,只需发送播放下一个视频。为此,您必须自己对视频进行排序。
答案 2 :(得分:0)
我有一系列想要播放的视频ID。在onStageChange函数中,在视频结束状态下,从数组中选择下一个视频并开始播放。在所有阵列视频结束时,它将从最初的视频开始。
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var videoId = ['gCFpK_z0Y1o', '2XXzYCfBiAg', 'H-N2SynCSEs', '6PDBRoRFYvo'];
var player; currentVideoId = 0;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
playerVars: {
autoplay: 1,
// loop: 1,
// rel: 0,
// showinfo: 0,
// autohide: 0,
// modestbranding: 1,
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady(event) {
event.target.loadVideoById(videoId[currentVideoId]);
}
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.ENDED) {
currentVideoId++;
if (currentVideoId < videoId.length) {
player.loadVideoById(videoId[currentVideoId]);
} else {
currentVideoId = 0;
event.target.loadVideoById(videoId[currentVideoId]);
}
}
}