让 YouTube API 在第一个视频结束时自动开始播放另一个视频
Make YouTube api automatically start another video when first video ended
我需要为我的网站制作一个视频页面,其中包含来自youtube的视频(https://www.youtube.com/watch?v=bWPMSSsVdPk(,在此视频结束后,我需要自动显示第二个视频(https://www.youtube.com/watch?v=0afZj1G0BIE(和带有类content
的div
这是我到目前为止的代码:
<style>
.content {
display: none;
}
</style>
<div class="content">
<button>Show this button after first video ends</button>
</div>
<div id="player"></div>
<script src="http://www.youtube.com/player_api"></script>
<script>
// create youtube player
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'bWPMSSsVdPk',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
alert('done');
}
}
</script>
我已经找到了解决方案,但似乎第二个视频的声音也与第一个视频同时播放......
<style>
.second-video {
display: none;
}
</style>
<div class="video-site">
<div class="first-video">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<div id="player"></div>
</div>
<div class="second-video">
<div id="player2"></div>
</div>
</div>
<script src="http://www.youtube.com/player_api"></script>
<script>
// create youtube player
var player;
var player2;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: 'qCDxEif_9js',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
player2 = new YT.Player('player2', {
height: '390',
width: '640',
videoId: '43jHG-yH9Gc',
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
event.target.playVideo();
$('.close').click(function(){
$('.first-video').hide(3000);
$('.second-video').fadeIn();
});
}
// when video ends
function onPlayerStateChange(event) {
if(event.data === 0) {
$('.first-video').hide(3000);
$('.second-video').fadeIn();
}
}
</script>
没有
直接的方法可以使用Youtube iframe Player API具有的可用参数集来做到这一点。但是你可以尝试这样做。
- 创建要以相同顺序连续播放的视频的播放列表。
- 在 REST API 调用中,将 listType 参数设置为播放列表。
检索该特定播放列表的播放列表 ID。
http://www.youtube.com/embed?listType=playlist&list=PLPLAYLISTID
最后,将自动播放参数设置为 1,以便播放列表中的视频自动播放。
function onPlayerStateChange(event) {
if(event.data === 0) {
event.target.loadVideoById("0afZj1G0BIE");
}
}
这将在您第一个视频之后立即播放您的下一个视频。但是,这也调用了playVideo((,这对于在Apple移动设备上观看的任何人来说都是一个问题。考虑改用cueVideoById((。
相关文章:
- 如何开始预加载同一视频的多个部分/章节
- 如何从某个时间开始预加载HTML5视频
- 如何使用videojs开始播放视频时不显示字幕
- 当我尝试恢复JWPlayer视频时,它从一开始就开始了
- 视频通过javascript被隐藏,但已经开始播放(自动播放模式),即使是's不可见
- 知道何时从UIWebView中开始播放YouTube视频
- 背景视频是由ScrollMagic一开始的最后一个场景触发的
- 控制 HTML5 视频中的开始位置和播放时长
- HTML5 视频 - 开始播放后无法加载资源错误
- 优酷嵌入式视频开始/停止事件
- 是否有JS功能可以使Brightcove智能播放器视频开始播放
- iframe youtube视频开始播放后背景变暗
- 在页面上的其他几个图像下载完成后,HTML视频开始下载
- 在播放YouTube播放列表时,当新视频开始时触发事件
- video .js在视频开始前使用currentTime删除海报
- 检测移动Safari何时因为第二个视频开始而停止播放视频
- 如何在嵌入式vimeo视频开始播放时触发事件
- 当YouTube视频开始播放时,如何停止Flexslider
- 视频开始时添加class或id
- 如何捕捉Youtube视频开始使用JavaScript API