よく使うのは動画の再生完了時のイベントたとえば動画を完全に最後まで再生しているのかなどを調べようとするとJSで制御する必要が出てきます。
こういう事はGoogleのYouTube Player APIを使うことで可能になります。
APIのplayer.getPlayerState()というメソッドが動画のステイタスを番号で知らせます。
番号の意味は下記のようになっています。
-1 : 未開始
0 : 終了
1 : 再生中
2 : 一時停止
3 : バッファリング中
5 : 頭出し済み
いろいろありますが、私が使っているのは再生終了時に発生するイベントだけです。
サンプルコードは下記の様になります。
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player("'.$codeuri.'", {
autoplay: 0,
loop: 0,
mute: 1,
playlist: "'.$codeuri.'",
height: "' . $ifH . '",
width: "' . $ifW . '",
videoId: "'.$codeuri.'",
controls: 1,
events: {
"onStateChange": onPlayerStateChange
}
});
}
function onPlayerStateChange(e){
if(player.getPlayerState() == 0 ){
/*再生が終了した時点での処理
例えばgtagに再生動画の情報を送るなど
下記はもう一度再生させるコード
*/
e.target.playVideo();
}
}
上記のコードにe.target.playVideo();を記述してもう一度再生させる位ならloopを設定すればよさどうですが、loopを設定すると終了イベントが発生しません。
そのためあえて一回のみ再生する設定にし、終了イベントが発生した時点で必要な処理をしたあと、再度再生させるようにしています。
もちろん、再生をストップするstopVideo()を使うのも自由です。
動画が再生完了した時にイベントを発生させるデモ:https://labo.studio-happyvalley.com/movie/api/
YouTube Player API解説:https://developers.google.com/youtube/iframe_api_reference?hl=ja
YouTube 総合解説:https://developers.google.com/youtube?hl=ja