YouTube APIで複数動画

ちょこっとやったやつのメモ

HTML

<button class="js-player-start" data-movie="0">再生</button>
<button class="js-player-stop" data-movie="0">停止</button>
<div id="player_0"></div>

<button class="js-player-start" data-movie="1">再生</button>
<button class="js-player-stop" data-movie="1">停止</button>
<div id="player_1"></div>

JavaScriptjQuery

var tag = document.createElement('script')
tag.src = "//www.youtube.com/iframe_api"
var firstScriptTag = document.getElementsByTagName('script')[0]
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag)

// make player array
var players = new Array()

function onYouTubeIframeAPIReady() {
  players[0] = new YT.Player('player_0', {
    height: '100%',
    width: '100%',
    videoId: 'IqKz0SfHaqI'
  })
  players[1] = new YT.Player('player_1', {
    height: '100%',
    width: '100%',
    videoId: '-bNMq1Nxn5o'
  })
}

$(function () {
  // 再生
  $('.js-player-start').on('click', function(){
    const target = $(this).attr('data-movie')
    players[target].playVideo()
  })
  // 停止
  $('.js-player-stop').on('click', function(){
    const target = $(this).attr('data-movie')
    players[target].stopVideo()
  })
})

横幅をレスポンシブにするには、

  ...
    height: '100%',
    width: '100%',
  ...

とすればよい

YouTube Data API の概要
https://developers.google.com/youtube/v3/getting-started?hl=ja