アプリケーション例のこのコード ウォークスルーでは、PHP および Media Write API を使用して、動画をメディア ライブラリに PHP ページを使ってアップロードする方法について学びます。動画は HTML フォームで送信されます。続いて PHP スクリプトがフォームを処理して動画を Brightcove にアップロードします。
このトピックで説明されているコードに従って、動画のアップロードや必要に応じてアプリケーション例の変更ができる、独自のアプリケーションを構築することができます。
サンプルは 2 つのファイルで構成されています。開始する前にこれらの 2つのファイルをダウンロードします。
注:このサンプル コードは、PHP MAPI Wrapper プロジェクトによって異なります。その PHP SDK については、http://opensource.brightcove.com/project/PHP-MAPI-Wrapper/ を参照してください。[作成 - 動画] でもアップロードの例をみることができます。
さらに、次の前提条件を満たしていることを確認してください。
このトピックでは、次の点について学習します。
スクリプトの使用を始めるには、最初にアカウントに有効なトークンを提供する必要があります。次のコードのブロックは、以下に定義されている Brightcove クラスの新規インスタンスを作成します。トークンへのアクセス方法は、Media API トークンを管理するを参照してください。
// Brightcove クラスをインスタンス化
$bc = new Brightcove(
'[[READ_TOKEN]]',
'[[WRITE_TOKEN]]'
);
PHP を使用すれば、フォームで送信した変数やファイルへのアクセスが容易になります。このスクリプトの最初の部分では、フォームの送信内容をパースし、ユーザが指定したファイルを処理します。
// フォームの値を使用して新規動画 DTO のデータを設定 $metaData = array( 'name' => $_POST['bcName'], 'shortDescription' => $_POST['bcShortDescription'] ); // ファイルの名前を元のファイル名に変更(「a445ertd3」などの一時的な名前の代わりに) $file = $_FILES['bcVideo']; rename($file['tmp_name'], '/tmp/' . $file['name']); $file = '/tmp/' . $file['name'];
動画およびファイル自体についてのメタデータを収集したので、createVideo メソッドを呼び出して、ファイルへの参照およびそのメタデータを当該メソッドに渡すことができます。
// ファイルを Brightcove に送信 echo $bc->createVideo($file, $metaData);
Brightcove クラスは、このアプリケーションでの力仕事を行います。Brightcove クラスは、以下を担当します。
Brightcove クラスについては、コードの以下のタスクを参照してください。
class Brightcove {
public $token_read = '';
public $token_write = '';
public $read_url = 'http://api.brightcove.co.jp/services/library?';
public $write_url = 'http://api.brightcove.co.jp/services/post';
public function __construct($token_read, $token_write = NULL ) {
$this->token_read = $token_read;
$this->token_write = $token_write;
}
public function createVideo($file = NULL, $meta) {
$request = array();
$post = array();
$params = array();
$video = array();
foreach($meta as $key => $value) {
$video[$key] = $value;
}
$params['token'] = $this->token_write;
$params['video'] = $video;
$post['method'] = 'create_video';
$post['params'] = $params;
$request['json'] = json_encode($post);
if($file) {
$request['file'] = '@' . $file;
}
// CURL ライブラリを活用して HTTP 要求を処理
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $this->write_url);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_VERBOSE, TRUE );
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 300);
curl_setopt($curl, CURLOPT_TIMEOUT, 300);
$response = curl_exec($curl);
curl_close($curl);
// 応答は JSON で転送され、PHP オブジェクトにデコードされる
$json = json_decode($response);
// 要求エラー コードをチェックし、要求が 213 エラーを返した場合は createVideo
// を再呼び出しする。213 エラーが発生するのは、
// 同時書き込み要求の許可数を超えた場合
if(isset($json->error)) {
if($json->error->code == 213) {
return $this->createVideo($file, $meta);
} else {
return FALSE;
}
} else {
return $response;
}
}
}
PHP スクリプトの定義が完了したので、シンプルな HTML フォームで使用できます。動作サンプルを参照してください。
このサンプルは、スクリプトの POST アクションを定義しています。また、フォームにはアップロードする動画の名前と説明を指定するための入力フィールドが 2 つ表示され、3 番目のフィールドではファイル システム上の動画ファイルを参照できます。
<form method="post" action="uploadVideo.php" enctype="multipart/form-data"> <input type="hidden" name="MAX_FILE_SIZE" value="16777000" /> タイトル: <input type="text" name="bcName" /><br /> 簡単な説明文: <textarea name="bcShortDescription"></textarea><br /> ファイル: <input type="file" name="bcVideo" /><br /> <input type="submit" /> </form>
フォームの送信ボタンにより、フォームの入力内容が PHP スクリプトに渡されます。スクリプトでは、これまで見てきたとおり、入力内容をパースし、組み立てて、createVideo メソッドを呼び出します。