携帯動画最新情報 2009/09

このところしばらく Java をお休みしていて、いろいろなことをやっていた。
携帯3キャリアの動画だが最近 Softbank でも300KB超のファイルがダウンロードできるようになったらしいので、それ含めて3キャリアでどこまで可能なのかを検証してみる。(メモですが)

結論

DoCoMo は 10MB 対応機では問題なく行けた。
更に Softbank 用のヘッダがあっても読み飛ばすらしく、Softbank 用の(300KB)ダウンロードも使えた。

Softbank は対応機であれば 10MB までいけるとのことだったが、そのフォーマットが分からず(H.264/AVC で mpeg4 なのは分かっているが)、ヘッダのフォーマットは異なる可能性があるので、それが合わなかったと思われる。
300KB までであれば問題なく再生できる。

au は 1.5MB対応機では問題なく行けた。


まず動画ソースの取得

mimms というのが mms プロトコルでも持ってこれるっぽいので、それをインストールする。
mimms には Python 2.5 以降と libmms が必要だが、yum では2.4までしかサポートされていないので python 2.6 もインストール。
http://www.python.org/ftp/python/2.6.2/Python-2.6.2.tgz
持ってきて
# ./configure [--prefix=/usr/local]←かかなくてもdefaultが /usr/local
# make
# make install

これで /usr/local/bin/python で 2.6 が
python で前から入っていた 2.4 が動く。

libmms はもとより yum で管理されていないので、別途インストール。
http://downloads.sourceforge.net/project/libmms/libmms/0.4/libmms-0.4.tar.gz?use_mirror=jaist
から持ってきて
# ./configure
# make && make install

ライブラリをインストールしたので、一旦 ldconfig する。
# ldconfig


# mimms --help
すると、めでたく help がでてくる。


DoCoMo の細かいこと

300KB以内であれば SoftBank 用に作成したもの(3gp)がそのまま再生できることを確認。
機種の制限までであれば動画を大きくしても問題ないと思われます。
但し10Mの配信ではないので、これは500KBまでだと思われます。

参考:「FFmpegで変換した3GPP動画をNTTドコモiモーションのストリーミング再生に対応させる (for Linux) 」http://labs.unoh.net/2007/11/ffmpeg3gppntti_for_linux.html
これで10Mの配信を行えます。

MP4Box のインストールには気をつけたい。
まず glut というライブラリが必要になるので、それをインストールする。
# gunzip -d -c glut-3.7.tar.gz | tar xf -
# cd glut-3.7
# xmkmf
# make Makefiles
# make includes
# make depend
# cd lib/glut
# make
# cp libglut.a /usr/local/lib

これで下記 make lib 中にエラーが出ることがなくなります。
/usr/bin/ld: cannot find -lglut
collect2: ld はステータス 1 で終了しました
make[1]: *** [libgpac.so] エラー 1
make[1]: ディレクトリ `/usr/local/src/gpac/src' から出ます
make: *** [lib] エラー 2

gpac のインストール
$ yum install zlib-devel
$ yum install libX11-devel
$ yum install libXt-devel
$ tar zxvf gpac-0.4.4.tar.gz
$ cd gpac
$ chmod 544 configure
$ ./configure --disable-wx
$ make lib
$ make apps
$ make install

これで3gpのファイルフォーマットをDoCoMoに合う形にすることができる。
$ ffmpeg -y -i input.wmv -vcodec mpeg4 -s 240x180 -r 12 -b 190 -acodec aac -ac 1 -ar 16000 -ab 48 output1.3gp
$ MP4Box -add output1.3gp -brand mmp4:1 -new output2.3gp

これで10MBまでの配信が可能である。


au の細かいこと

ダウンロード用の OBJECT タグがあれば、3gpp2 として変換したものが使える。
サイズは1.5Mまで大丈夫。


Softbank の細かいこと

Softbank は300KB(笑)の制限があるため、ダウンロード方式では300KBまでしか配信できない。
Softbank の「ハイスペック動画機能」により10MBのサイズの動画がQVGAで配信できるが、これは mpeg4(QVGA H.264/AVC) によって配信される。
以下はテストを行うための環境作りである。

H264 のエンコーディングを有効にするためには、ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ から x264-snapshot-20090927-2245.tar.bz2 を落としてきてインストールして、さらに ffmpeg のインストール時に以下のオプションを指定しておかなければならない。
./configure --enable-x264 --enable-pthreads --enable-gpl

これも駄目だった。 H264 というのは指定できるが、
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
というエラーになってしまう。

x264 のインストール時に yasm が無かったので、もう一度 yasm をインストールして試してみる。
# tar zxvf yasm-0.8.0.tar.gz
# cd yasm-0.8.0
# ./configure
# make && make install

# cd ../x264-snapshot-20090927-2245
# ./configure
# make && make install

# cd ../ffmpeg-checkout-2009-09-24
# ./configure --enable-pthreads --enable-libx264 --enable-gpl
# make && make install

これも同様に駄目だった。H264 というのは指定できるが、
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
というエラーになってしまう。

http://flowplayer.org/tutorials/ffmpeg.html のサンプルで、libfaac というオーディオコーディックを使っているので、libfaac をインストールしてみる。
faac は標準の acc とはまた違ったエンコーディングを提供してくれるらしい。
http://www.audiocoding.com/downloads.html から faac-1.28.tar.bz2 をダウンロード。
# bzip2 -dc faac-1.28.tar.bz2
# cd faac-1.28
# ./configure
# make && make install

# cd ../ffmpeg-checkout-2009-09-24
# ./configure --enable-pthreads --enable-libx264 --enable-gpl --enable-libfaac --enable-nonfree
# make && make install

これも
Error while opening encoder for output stream #0.0 - maybe incorrect parameters such as bit_rate, rate, width or height
というエラーになってしまった。

WEBにある様々なサンプルで試したが同じで、そもそも「ハイスペック動画機能」の動画が出力できるのかも書いてなかった。
携帯簡単変換君でも駄目だし、もしかすると「ハイスペック動画機能」用の出力は専用のソフトでなければできないのかも。
もちろん cpid は正規のものをつけています。
どなたか知ってるかたがいらっしゃいましたらコメントお願いします。