iOSやAndroidでYouTube Player APIのloadVideoById()が使えない時がある、その対処方法メモ

Bookmark this on Google Bookmarks
LINEで送る
Pocket

ブラウザでYouTubeの動画を見るとき、
iOSやAndroidでは、自動的に動画が再生されないようになっている。
自動再生する設定にしていても再生ボタンを押さないと再生されない。

・YouTube Player APIのloadVideoById()が使えない時
YT.Playerのインスタンスで生成したプレーヤーで、
再生ボタンが一回押されていないと、loadVideoById()が機能しない。
ずっと読み込み中の画面になってしまったりする。

また、loadVideoById()は、4回までしか使えない。
こちらも5回目からは読み込み中の画面になってしまう。

・読み込み中画面にならないようにするには
loadVideoById()を使うのは、たいてい動画を切り替えたい時なので、
再生ボタンが押されたことがある場合は、loadVideoById()を使い切り替える、
押されてない場合は、切り替えたいIdを使ってYT.Playerのインスタンスを破棄して生成し直す。
あと、loadVideoById()を使用した回数をカウントしておいて4回使ったらインスタンスを破棄して生成しなおす。

再生ボタンが押されたかどうかの判断方法は、
インスタンス生成時のeventsオプションで
再生時のイベントを設定し、
その中で、再生されたことを変数に入れたりして振り分け時に使う。

events: {
	onStateChange: function(e) {
		if(e.data == YT.PlayerState.PLAYING) {
        	hoge.videoStarted = true;
        }
    }
}