Brightcove PHP SDK を使ってみる

Brightcove では、メディアライブラリに格納されたデータを読み書きできる REST ベースの Media API が用意されてます。

この Media API は、ページに動画の一覧を動的に表示したい場合、SEO 対策用に動画の情報を文字列でページ内に埋め込みたい場合、Brightcove Studio 以外で動画をアップロードしたい場合、動画検索機能を実現したい場合など、さまざまな場面で使用可能です。

HTTP リクエストを投げて JSON 文字列または MRSS 形式で結果を受け取るだけなので、さまざまなプログラム言語で使用でき、下記のプログラム言語用に、 Brightcove の有志による SDK も用意されてます。

今回は、この中でも比較的よく使用されるであろう Brightcove PHP SDK、Echove をご紹介します。

Echove は、Brightcove Media API を使用するための機能が一つの Class ファイルに集約されてます。このため、スクラッチからのプログラムの必要がなく、短時間で、さらに美しくプログラムコードを記述できます(SDK なので当然ですが)。マニュアルやサンプルも充実しているので、サンプルやドキュメントををざっと一回眺め、あとは感覚的にプログラムしていけます。

実際にプログラムしてみるほうが分かりやすいと思いますので、SDK を使用してどうプログラムしていくか、簡単にサンプルプログラムを作ってみました。プログラムの内容としては、"fish" とタグがついた動画をページがロードされる度ランダムに選択して再生するというものです。

1. 事前準備

  • Echove を http://echove.net/ からダウンロードし、プログラムを配置するディレクトリと同じディレクトリに配置
  • echove.php を開き、「api.brightcove.com」 を 「api.brightcove.co.jp」に置き換え
  • Brightcove Studio の「アカウント設定」の「API 管理」ページから、Read API Token と WriteAPI Token 取得

2. プログラム作成(sample.php)

  • Echove SDK をインクルードし、トークンを指定してインスタンスを作成
 require('echove.php');
 $bc = new Echove('abcdefghijklmnopqrstuvwxyz...', '');
  • 次に、エラー処理用のコードを記述
 try {

 } catch(Exception $error) {
  echo $error;
  die();
 }
  • 取得データのタグ及び結果として取得するデータのカラムを指定し、API コールを実行
 $params = array(   'and_tags' => 'fish', 
                             'video_fields' => 'id'
                 );
 $videos = $bc->find('find_videos_by_tags', $params);
  • 返された結果から、ランダムにデータを選択し、公開コードを出力
 $idx = rand(0,count($videos)-1);
 echo '<script language="JavaScript" type="text/javascript" src="http://admin.brightcove.co.jp/js/BrightcoveExperiences.js"></script>';
 echo $bc->embed('video', '67395596001', $videos[$idx]->id, NULL, NULL);

3. 実際の動作を確認

実際の動作はこちらから確認できます。

  • sample.php のソースコード
 <?php
 //Echove SDK をインクルード  require('echove.php');

 //Brightcove API トークンをセット(今回は Read トークンのみ)
 $bc = new Echove('abcdefghijklmnopqrstuvwxyz...', '');]

 try {
  //取得するデータのパラメータをセット(ここでは fish というタグが付いた動画のid 一覧を取得)
  $params = array(
             'and_tags' => 'fish',
             'video_fields' => 'id');

  //API コールを実行
  $videos = $bc->find('find_videos_by_tags', $params);

  if(count($videos) > 0){

   //取得した動画から、表示する動画をランダムに選択
   $idx = rand(0,count($videos)-1);

   //動画表示に必要な JavaScript コードを出力
   echo '<script language="JavaScript" type="text/javascript" src="http://admin.brightcove.co.jp/js/BrightcoveExperiences.js"></script>';

   //プレーヤの幅、高さを設定
   $params = array(
                  'width' => 480,
                  'height' => 258);

   //公開コードを出力
   echo $bc->embed('video', '67395596001', $videos[$idx]->id, $params, NULL);

  } else {
   //該当する動画が存在しない場合にエラーメッセージを出力
   echo '現在配信可能な動画はありません';
  }
 } catch(Exception $error) {
  //エラー発生時にエラー出力する
  echo $error;
  die();
 } ?>

なお、Echove は、Brightcove のオフィシャルサポートの対象外ですが、ディスカッショングループも用意されているようですので、ご不明な点はこちらへどうぞ。