IFramePlayerAPIでかんたんYoubuePlayer
IFramePlayerAPIとは!?
IFramePlayerAPIを利用する事で、YoutubePlayerを簡単に実装する事ができます。
今回はこのライブラリでYoutubeを再生して遊んでみます。
プロジェクトを用意する
次の様にプロジェクトを作ります。
MyProject01/
├ index.html (プログラムを起動するファイルです)
├ custom.css (CSSを記述するファイルです)
├ main.js (メインのプログラムを記述するファイルです)
HTMLファイルを用意する
では、作っていきましょう。
用意したHTMLファイルには次のコードを記述します。
(ライブラリの読み込みは、JavaScript側で実装します)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- Stylesheet -->
<link href="./custom.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="my_player"></div>
<!-- JavaScript -->
<script src="./main.js"></script>
</body>
</html>
CSSファイルを用意する
次はCSSファイルです。
こちらは特に説明することはありませんね。
/* custom.css */
body{
width: 100%; height: 100%;
margin: 0px; padding: 0px;
background-color: silver;
}
JavaScriptファイルを用意する
メインの処理です。
JavaScriptファイルには次のコードを記述します。(今回の完成コードです)
console.log("Hello Youtube!!");
// 1, ライブラリの読み込み
window.onload = function(){
console.log("onload!!");
// Ready
const tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api";
const firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
// 2, プレイヤーの準備
function onYouTubeIframeAPIReady(){
console.log("onYouTubeIframeAPIReady!!");
// Player
const player = new YT.Player("my_player", {
width: "480",
height: "320",
videoId: "xjI5qbUB47k";// 会津ほまれ
events:{
"onReady": onPlayerReady,
"onStateChange": onPlayerStateChange
}
});
}
// 3, プレイヤーの操作
function onPlayerReady(event){
console.log("onPlayerReady!!");
console.log(event);
event.target.setPlaybackQuality("small");// Quality
event.target.playVideo(); // Play
}
// 4, プレイヤーのイベント各種
function onPlayerStateChange(event){
console.log("onPlayerStateChange:" + event.data);
if(event.data == YT.PlayerState.PLAYING) console.log("PLAYING!!");
if(event.data == YT.PlayerState.PAUSED) console.log("PAUSED!!");
if(event.data == YT.PlayerState.ENDED) console.log("ENDED!!");
}
コードの解説
上記のコードについて、次の順番で解説を進めます。
- ライブラリの読み込み
- プレイヤーの準備
- プレイヤーの操作
- プレイヤーのイベント各種
1,ライブラリの読み込み
"window.onload()"の部分では、"IFramePlayerAPI"ライブラリを読み込むタグを生成し、HTMLに埋め込んでいます。
console.log("Hello Youtube!!");
// 1, ライブラリの読み込み
window.onload = function(){
console.log("onload!!");
// Ready
const tag = document.createElement("script");
tag.src = "https://www.youtube.com/iframe_api";
const firstScriptTag = document.getElementsByTagName("script")[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
}
// 省略
2,プレイヤーの準備
ライブラリの読み込みが完了すると、"onYouTubeIframeAPIReady()"が実行されます。
このタイミングでプレイヤーの準備をします。
// 省略
// 2, プレイヤーの準備
function onYouTubeIframeAPIReady(){
console.log("onYouTubeIframeAPIReady!!");
// Player
const player = new YT.Player("my_player", {
width: "480",
height: "320",
videoId: "xjI5qbUB47k";// 会津ほまれ
events:{
"onReady": onPlayerReady,
"onStateChange": onPlayerStateChange
}
});
}
// 省略
第一引数には、プレイヤーを表示するIDを、
第二引数には、プレイヤーの幅や高さ、動画ID等を指定します。
パラメータ | 用途 |
---|---|
width, height | 動画の幅、高さ |
videoID | Youtube動画の再生ID |
onReady | プレイヤーの準備ができた時に実行される |
onStateChange | プレイヤーの状態が変化した時に実行される |
ここで言う"videoID"とは、youtubeでの再生時、"v=xxx"に記述されているIDとなります。
https://www.youtube.com/watch?v=xjI5qbUB47k
3,プレイヤーの操作
プレイヤーの準備ができたタイミングで、"onPlayerReady()"が実行されます。
ここでプレイヤーの操作を行う事が可能です。
// 省略
// 3, プレイヤーの操作
function onPlayerReady(event){
console.log("onPlayerReady!!");
console.log(event);
event.target.setPlaybackQuality("small");// Quality
event.target.playVideo(); // Play
}
// 省略
"event.target"には、プレイヤーオブジェクトが格納されています。
このオブジェクトに対して、様々な命令を実行させる事が可能です。
主な命令 | 用途 |
---|---|
playVideo() | 動画を再生します |
pauseVideo() | 動画を停止します |
stopVideo() | 動画を停止してキャンセルします |
mute() | ミュートにします |
unMute() | ミュートを解除します |
setVolume(num) | 0~100の範囲で音量を指定 |
4,プレイヤーのイベント各種
"onPlayerStateChange()"で渡される"event.data"を確認する事で、
プレイヤーの状態を判断する事ができます。
// 省略
// 4, プレイヤーのイベント各種
function onPlayerStateChange(event){
console.log("onPlayerStateChange:" + event.data);
if(event.data == YT.PlayerState.PLAYING) console.log("PLAYING!!");
if(event.data == YT.PlayerState.PAUSED) console.log("PAUSED!!");
if(event.data == YT.PlayerState.ENDED) console.log("ENDED!!");
}
主なイベント | 用途 |
---|---|
PLAYING | 動画の再生 |
PAUSED | 動画の停止 |
ENDED | 動画の終了 |
これだけでYoutubePlayerが実装できます。(やりました!!)
最後に
今回はYoutubePlayerを作って遊んでみました。
コードも簡単なので、ぜひ挑戦してみてくださいね。
ここまで読んでいただき有難うございました。
Discussion