Pages

2012年4月1日日曜日

MPMoviePlayerViewControllerでプログラムが出力する動画を再生する

MPMoviewPlayerViewControllerでサーバ上の動画を再生する際には注意が必要です。

静的なファイルを直接URLで指定するような場合には特に何も気にする必要はありませんが、JavaやPHPのようにサーバ上のプログラムから動画データを出力するような場合には普通に出力させてもちゃんと再生されません。

というのも、どうやら、MPMoviePlayerViewControllerは指定されたURLに対してバイトレンジを指定してリクエストを送っているようです。
Range: bytes=0-5011
のように。

ここからは推測も入っていますが…

最初のリクエストで
Range: bytes=0-1
を送って、レスポンスヘッダに
Accept-Rages: bytes
が含まれているかをチェックして、バイトレンジのアクセスが許可されていなければ即再生を止めプレイヤーを終了してしまいます。

ですから、プログラムから動画を出力する場合には、リクエストレンジを取得して適切なレスポンスを返す必要があります。確認した限りでは結構頻繁にリクエスト送っています。同時に複数のセッションを張っている可能性もあります。

PHPなら、$_SERVER['HTTP_RANGE']でとれます。

0 コメント:

コメントを投稿