陆续加载许多YouTube视频

时间:2018-12-25 23:06:11

标签: api youtube

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相同

0 个答案:

没有答案