Media 書き込み API:PHP の例-動画をアップロードする

Product
Video Cloud
対象となる役割
開発者
バージョン
Brightcove 5
モジュール
Media API
エディション
Pro, Enterprise

アプリケーション例のこのコード ウォークスルーでは、PHP および Media Write API を使用して、動画をメディア ライブラリに PHP ページを使ってアップロードする方法について学びます。動画は HTML フォームで送信されます。続いて PHP スクリプトがフォームを処理して動画を Brightcove にアップロードします。

このトピックで説明されているコードに従って、動画のアップロードや必要に応じてアプリケーション例の変更ができる、独自のアプリケーションを構築することができます。

事前確認事項

サンプルは 2 つのファイルで構成されています。開始する前にこれらの 2つのファイルをダウンロードします。

  • uploadvideo.phpをダウンロード:フォームを処理し動画をアップロードする PHP スクリプト。
  • uploadVideoForm.htmlをダウンロード:ユーザーが動画の名前、説明、タグ、およびパスを指定するフォームを表示します。フォームの送信ボタンで、入力内容が PHP スクリプトに渡されます。

注:このサンプル コードは、PHP MAPI Wrapper プロジェクトによって異なります。その PHP SDK については、http://opensource.brightcove.com/project/PHP-MAPI-Wrapper/ を参照してください。[作成 - 動画] でもアップロードの例をみることができます。

さらに、次の前提条件を満たしていることを確認してください。

  • 読者は PHP、JSON、および cURL に習熟している必要があります。
  • アップロードする動画ファイルが 2 GB の最大ファイル アップロード サイズ限度を超えないようにしてください。

このトピックでは、次の点について学習します。

トークンを提供する

スクリプトの使用を始めるには、最初にアカウントに有効なトークンを提供する必要があります。次のコードのブロックは、以下に定義されている 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 クラスは、以下を担当します。

  • 要求を行うのに必要な適切な変数を収集する
  • HTTP 要求を処理する
  • 必要に応じて要求を適切にリトライできる

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;
		}
	}
}

HTML フォームを使用してアップロードする

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 メソッドを呼び出します。

タグ
サンプル