|
動画の再生方式には, ストリーミングとダウンロード の 2種類あります。
・ストリーミング
動画を受信しながら再生する
端末に保存不可能
・ダウンロード
動画を完全に受信した後, 再生
端末に保存可能
キャリア毎のファイル容量は以下の範囲です(機種ごとに違います)。
・DoCoMo
ストリーミング 2MB ~ 10MB
ダウンロード 300KB ~ 10MB
・au
ショートストリーミング 140KB
ダウンロード 512KB ~ 1.5MB
ストリーミング 1.5MB
・SoftBank
ストリーミング -
ダウロード 200KB ~ 300KB
1つのファイルをどのキャリアにも対応させようとすると, ダウンロード方式で 200KB以下で作らないといけないことになりますね。
DoCoMo にはプログレッシブダウンロードというストリーミングとダウンロードのいいとこ取りをした方式があり, 受信しながら再生し端末に保存できます。
au のショートストリーミングは名前はストリーミングですが, 再生されるのは動画を完全に受信した後。
単純に端末に保存できないだけ。
au のストリーミングは QVGAサイズには対応していないようです。
W44S では Q-CIFサイズでストリーミング再生できることを確認しました。
でもなぜか au 技術情報: EZムービーページにはストリーミング再生については触れられてないんですよね…。
SoftBank は基本的にはストリーミング再生できません。ダウンロードのみ。
SD(Separated Delivery)方式を使えば擬似ストリーミング再生可能(※1)ですが, かなりややこしい方式且つ公式サイトにしか対応してません。
MIMEタイプは以下。
・動画
video/3gpp (DoCoMo, SoftBank)
video/3gpp2 (au)
・着うた
audio/3gpp (DoCoMo, SoftBank)
audio/3gpp2 (au)
動画/着うたを配信するタグですが, DoCoMo/au は objectタグで, SoftBank は単に aタグでリンクします。
著作権保護(転送禁止)設定は, DoCoMo/au はツールを使って設定, SoftBank は相変わらずお馴染みの x-jphone-copyrightヘッダで。
また, DoCoMo/au に関しては, 動画/着うたファイルへのリクエストに Rangeヘッダが付加されます。
——————————————————————
Range: bytes=1-1023
——————————————————————
このヘッダを受けた場合は, 206 Partial Content のステータスを返さなければなりません。
通常は Apache が勝手に処理してくれるので意識する必要はないのですが, 自前のスクリプトでメディアファイルのデータを出力する場合は Rangeヘッダを適切に処理する必要があります。
具体的には以下の様に Content-Rangeヘッダをつけて要求された範囲のデータのみ出力すれば OK です。
===============================================
header(‘HTTP/1.1 206 Partial Content’);
header(‘Content-Range: bytes ‘ . $from . ‘-’ . $to . ‘/’ . filesize($file));
header(‘Content-Type: ‘ . $mime);
header(‘Content-Length: ‘ . ($to – $from + 1));
header(‘Accept-Ranges: bytes’);
===============================================
…しかし, 動画/着うたの仕様は画像に輪をかけて複雑ですな(´∀`;)
相変わらずキャリア毎に仕様違うし, 携帯の世界の仕様はカオス過ぎ。
それが携帯サイト構築ノウハウになって強みになるんでしょうが, いい加減統一して欲しい。
※1 再生回数を1回に制限をかけてダウンロードさせることでストリーミングっぽいことを実現する
参考
・NTTドコモ – MP4対応iモーション
・KDDI au:技術情報 – EZムービー
|