Youtube api在实际播放时触发了Ended事件...
我正在尝试从许多youtube视频中加载一些片段。
// create youtube player
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('player', {
height: '390',
width: '640',
videoId: videoids[0],
playerVars: {
autoplay: 0, // Don't autoplay the initial video
start:'3150',
end:'3155',
rel: 0, // Don’t show related videos
theme: "light", // Use a light player instead of a dark one
controls: 1, // Show player controls
showinfo: 0, // Don’t show title or loader
modestbranding: 1 // No You Tube logo on control bar
},
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
// autoplay video
function onPlayerReady(event) {
console.log('onPlayerReady');
console.log(event);
event.target.setPlaybackRate(0.5);
event.target.playVideo();
}
function onPlayerStateChange(event) {
console.log('onPlayerStateChange='+event.data);
if(event.data == 0) {
i++;
console.log('i=');
console.log(i);
if (i<videoids.length)
{
//event.target.stopVideo();
player.cueVideoById({'videoId': videoids[i],
'startSeconds': 6,
'endSeconds': 12});
event.target.setPlaybackRate(0.5);
event.target.playVideo();
}
}
}
问题在于“ if(event.data == 0)”行。实际上,问题不在于这条线,而是youtube触发/触发事件的方式。
由于我拥有consoloe.log,因此在加载另一个4个youtube视频之后获得以下结果。
onPlayerReady
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=3
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=1
ytcue.js?pk9ioi:59 onPlayerStateChange=0
ytcue.js?pk9ioi:62 i=
ytcue.js?pk9ioi:63 1
ytcue.js?pk9ioi:69 L2UCRNldC3s
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=0
ytcue.js?pk9ioi:62 i=
ytcue.js?pk9ioi:63 2
ytcue.js?pk9ioi:69 kbYgWfuF1zg
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=3
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=3
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=3
ytcue.js?pk9ioi:59 onPlayerStateChange=1
ytcue.js?pk9ioi:59 onPlayerStateChange=0
ytcue.js?pk9ioi:62 i=
ytcue.js?pk9ioi:63 3
ytcue.js?pk9ioi:69 -A5ArNZ6uDE
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=0
ytcue.js?pk9ioi:62 i=
ytcue.js?pk9ioi:63 4
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=3
ytcue.js?pk9ioi:59 onPlayerStateChange=-1
ytcue.js?pk9ioi:59 onPlayerStateChange=1
ytcue.js?pk9ioi:59 onPlayerStateChange=0
ytcue.js?pk9ioi:62 i=
ytcue.js?pk9ioi:63 5
这意味着对于加载的第二个和第四个视频,触发的事件是-1和0。
我在Chrome中添加了一个断点(我正在Chrome和Win10上进行测试),实际上对于第二个视频,电影开始播放并且触发的事件为0,这表示ENDED,这很奇怪,因为甚至没有加载视频/尚未开始播放(没有事件1)。
问题在于,由于随后加载了video3,因此实际上跳过了video2。 Video4尽管最后一个是-1(未启动)和0(结束),但仍可以播放
我看到的问题是,视频2和4的0触发得太早了。
此阶段的播放速率以及开始和结束都是实验性的。
如何使所有视频正常播放? 我尝试了loadvideobyId,它与cuevideobyid相同