0

I have the following code which will play different videos from youtube. I want to know how can I switch to the next video once the previews one is ended?

function onYouTubeIframeAPIReady() {
  player = new YT.Player('player', {
    height: '250',
    width: '436',
    videoId: 'ID HERE',
    events: {
      'onReady': onPlayerReady,
      'onStateChange': function(e) {
                if (e.data == 0) {
                }
            }
    }
  });

}
var item = document.getElementsByClassName('item');
function setLinks(){

  for (var i = 0; i < item.length; i++) {
    item[i].ind = i;
    addEvent('mouseover', item[i], itemHandler);
    addEvent('mouseout', item[i], itemHandler);
    addEvent('click', item[i], itemHandler);
        console.log('click')
  }
}


function itemHandler(e){
  var n = e.target.ind;
  switch(e.type) {

    case 'click':
        switch(n) {
          case 0:
            counters("pause");
            TweenMax.to(youtubeVideo,1,{opacity:0, ease:Power1.easeInOut });
            setTimeout(function(){player.loadVideoById("ID HERE")}, 1000, console.log('click'));
            TweenMax.to(youtubeVideo,1,{opacity:1, delay: 1, ease:Power1.easeInOut });
            counters("play");
            break;
          case 1:
            counters("pause");
            TweenMax.to(youtubeVideo,1,{opacity:0, ease:Power1.easeInOut });
            setTimeout(function(){player.loadVideoById("ID HERE")}, 1000, console.log('click'));
            TweenMax.to(youtubeVideo,1,{opacity:1, delay: 1, ease:Power1.easeInOut });
            counters("play");
            break;
          case 2:
            counters("pause");
            TweenMax.to(youtubeVideo,1,{opacity:0, ease:Power1.easeInOut });
            setTimeout(function(){player.loadVideoById("ID HERE")}, 1000, console.log('click'));
            TweenMax.to(youtubeVideo,1,{opacity:1, delay: 1, ease:Power1.easeInOut });
            counters("play");
            break;
          case 3:
            counters("pause");
            TweenMax.to(youtubeVideo,1,{opacity:0, ease:Power1.easeInOut });
            setTimeout(function(){player.loadVideoById("ID HERE")}, 1000, console.log('click'));
            TweenMax.to(youtubeVideo,1,{opacity:1, delay: 1, ease:Power1.easeInOut });
            counters("play");
            break;
        }

    break;
  }
}

function startYoutube(){
  TweenMax.to(youtubeVideo,0.5,{opacity:1, ease:Power1.easeInOut });
  setLinks();
  youtubeVideo.style.display = "block";
  player.playVideo();
  counters("play");

}

function onPlayerReady() {
  function updateTime() {
    var oldTime = videotime;
    if(player && player.getCurrentTime) {
      videotime = player.getCurrentTime();
    }
    if(videotime !== oldTime) {
      onProgress(videotime);
    }
  }
  timeupdater = setInterval(updateTime, 100);
}

// when the time changes, this will be called.
onProgressTrue = false;
function onProgress(currentTime) {
 var d = player.getDuration();
   if(Math.round(currentTime) == Math.round(d/2) && !onProgressTrue) {
    onProgressTrue = true;
    counters("midpoint"); 
     console.log("the video reached halfway!");
   }
}

So how I have the 'player.getDuration()' but after that I don't know how can I tell it to go on the next 'case'.

Markus Hayner
  • 2,869
  • 2
  • 28
  • 60
  • Does this help your case? [http://stackoverflow.com/questions/7853904/how-to-detect-when-a-youtube-video-finishes-playing](http://stackoverflow.com/questions/7853904/how-to-detect-when-a-youtube-video-finishes-playing) – Jelmer Mar 09 '16 at 14:03
  • Not really, because I know how to target when the video finish. I want to know how to go to the next video ID after that – Markus Hayner Mar 09 '16 at 14:14
  • 1
    You can find everything you need in [API description](https://developers.google.com/youtube/iframe_api_reference#Operations). Sounds like you need to call player.[loadVideoById](https://developers.google.com/youtube/iframe_api_reference#loadVideoById) when e.data == 0 (YT.PlayerState.ENDED). Either you can just pass list of videos to player.[loadPlaylist](https://developers.google.com/youtube/iframe_api_reference#loadPlaylist) – Evgeny Soynov Mar 09 '16 at 14:16

0 Answers0