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, что означает КОНЕЦ, что очень странно, поскольку видео даже не загружено / не начало воспроизводиться (нет события 1).
проблема в том, что video2 фактически пропускается, так как затем загружается video3.Video4, несмотря на то, что получает -1 (не запущен) и 0 (завершен), начинает играть, поскольку он последний
Проблема, как я вижу, состоит в том, что 0 запускается слишком рано для видео 2 и 4.
На данном этапе скорость воспроизведения, начало и конец являются экспериментальными.
Как заставить все видео воспроизводиться нормально?Я пробовал loadvideobyId, и он такой же, как cuevideobyid