最近、『TBSラジオ ジェーン・スー 相談は踊る』をYouTubeで再生させながら眠ると、熟睡できることが判明した僕がお届けします。
今回のテーマは、YouTube Player APIです。
YouTube APIの公式ドキュメントには、一度にひとつの動画プレーヤーを埋め込む方法しか記載されていないため、今回は複数の動画プレーヤーを設置する方法をご紹介したいと思います。
YouTube APIは、大きく分けて2つあります。
SWFを埋め込み、ユーザーが使用しているFlashプレーヤーで動画を再生します。
ユーザーの環境を判別し、Flashをサポートしていないモバイルデバイスの際は、FlashプレーヤーではなくHTML5プレーヤーで動画を再生します。
以下のscriptタグを配置します。
これを忘れると"YTがないよ!"とエラーで叱られますのでご注意を。
<script src="https://www.youtube.com/iframe_api"></script>
以下の要領で空divを配置していきます。
<div id="player_aaaaaa" ></div> <div id="player_bbbbbb" ></div> <div id="player_cccccc" ></div>
動画のIDは、YouTubeのURLの末尾にありますね。
youtube.com/watch?v=abcdefghijk
という、「v=」の後に入っている文字列です。
var videoIdArray = ['aaaaaa', 'bbbbbb', 'cccccc'];
こんな感じで配列に納めます。
後に生成したプレーヤーの再生を制御するために、YT.Playerオブジェクトを格納するオブジェクトを用意します。
var ytplayers = {};
配列をfor in文で回して、その要素分の動画プレーヤーを設置します。
生成したプレーヤーオブジェクトは、先ほど準備したytplayersオブジェクトに納めます。こうすることで、ytplayers内の各プレーヤーにアクセスでき、再生の制御が可能になります。
// プレーヤーのロードを実行 loadPlayer(videoIdArray); // YT.Playerを生成する関数 function loadPlayer(ids) { // 引数で受け取った配列をfor in文でまわす for (var i in ids) { var videoId = ids[i], playerId = "player_" + videoId; playerId = new YT.Player( playerId, { // 最初の引数に挿入したいHTML要素のidを指定する width: "880", height: "495", videoId: videoId } ); // YT.Playerオブジェクトを格納する ytplayers[videoId] = playerId; } }
以下がコードの全体像です。
// 埋め込みたい動画のIDを入れた配列を準備する var videoIdArray = ['aaaaaa', 'bbbbbb', 'cccccc']; // YT.Playerオブジェクトを格納するオブジェクト作る var ytplayers = {}; // プレーヤーのロードを実行 loadPlayer(videoIdArray); // YT.Playerを生成する関数 function loadPlayer(ids) { // 引数で受け取った配列をfor in文でまわす for (var i in ids) { var videoId = ids[i], playerId = "player_" + videoId; playerId = new YT.Player( playerId, { // 最初の引数に挿入したいHTML要素のidを指定する width: "880", height: "495", videoId: videoId } ); // YT.Playerオブジェクトを格納する ytplayers[videoId] = playerId; } }
今回は導入方法の応用をご紹介しましたが、次回は「再生オプション」や、プレーヤーのステータス変更時に呼ばれる関数などを解説してみたいと考えています。
数年前に一時期だけ存在したYouTubeプレーヤーの画質劣化機能、「VHSモード」のオプション設定についても、現在調査中でございます。お楽しみに!