実験室

Youtube APIでビデオを再生

自分でアップしたビデオ3つをサムネイルクリックで再生。

Getting Startedの物を丸ごとコピーしただけ。

サンプル

    コード

    <script>
      var videoIDs = ['lzlYzTLaSHY','QiEi9f-f16Q','t-4w8GQPZSc'];
    
      $('<script>')
        .attr('src', 'https://www.youtube.com/iframe_api')
        .appendTo($('script')[0]);
      // 2. This code loads the IFrame Player API code asynchronously.
    //  var tag = document.createElement('script');
    
    //  tag.src = "https://www.youtube.com/iframe_api";
    //  var firstScriptTag = document.getElementsByTagName('script')[0];
    //  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
    
      // 3. This function creates an <iframe> (and YouTube player)
      //    after the API code downloads.
      var player;
      function onYouTubeIframeAPIReady() {
    	  // show thumbnails
    	  $(function(){
    	  	// get thumbnail
    	  	var getVideoThumbnail = function(vid) {
    	 	  return "http://i1.ytimg.com/vi/"+vid+"/mqdefault.jpg";
    		};
    
    	  	var $parent = $('#thumbnails');
    	  	videoIDs.forEach(function(item, idx){
    	  	  var $li = $('<li>');
    	  	  $li.appendTo($parent);
    	  	  $('<img>')
    	  	  	.attr('src', getVideoThumbnail(item))
    	  	  	.appendTo($li)
    	  	  	.data('vid', item)
    	  	  	.on('click', thumbnailClick);
    	  	});
        });
      }
    
      function thumbnailClick(event) {
      	var vid = $(this).data('vid');
      	if( player ){
      	  player.loadVideoById({videoId:vid});
      	}else{	
    	  player = new YT.Player('player', {
            height: '390',
            width: '640',
            videoId: vid,
            events: {
              'onReady': onPlayerReady,
    //          'onStateChange': onPlayerStateChange
            }
          });
    	}
      }
    
      // 4. The API will call this function when the video player is ready.
      function onPlayerReady(event) {
        event.target.playVideo();
      }
    
      // 5. The API calls this function when the player's state changes.
      //    The function indicates that when playing a video (state=1),
      //    the player should play for six seconds and then stop.
      var done = false;
      function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
          setTimeout(stopVideo, 6000);
          done = true;
        }
      }
      function stopVideo() {
        player.stopVideo();
      }
    }</script>