数多くの動画フォーマット、コーデックに幅広く対応したアプリケーションといえばffmpegがやはり一番有名だと思います。事実、ffmpegベースのアプリケーションも多く出回っていて、mplyer, 携帯動画変換君なんかは有名だと思います。
キャリア共通仕様
そんなffmpegですが、Linuxで1からビルドを行おうとすると、結構ハマるポイントが多いです。またバージョンによってビルド方法が異なったり、1つ違うことを行おうとするとコーデックやライブラリが不足したりし、なかなかうまくいかないことが多かったりします。そこで、今回は「3G携帯の動画を扱う」ことに特化したffmpegのビルド方法をまとめてみたいと思います。3G携帯と一口にいってもキャリアごとに利用できるフォーマットやコーデックも差異があるのですが、次のポイントを抑えれば各キャリアの(ほぼ)すべての端末に対応した動画ファイルを扱うことができます。ポイントは
- サイズ : 176 x 144
- フォーマット : 3gp/3gpp2
- 動画 : Mpeg4
- 音声 : AAC / AMR
と、なります。DoCoMoとSoftbankは特に問題ないのですが、厄介なのはauです。
auはクセがある
auは「低画質モード」「高画質モード」の2種類の動画を扱うことができ、それぞれで利用できるフォーマット、Codecが異なります。
低画質モード
- フォーマット : amc
- 動画 : Mpeg4
- 音声 : mp3 / Qcelp
高画質モード
- フォーマット : 3gpp2
- 動画 : Mpeg4
- 音声 : AAC / AMR
問題はここでのQcelpです。2007年8月末現在、ffmpegは正式にはQcelpに対応していません。「正式に」と言うのはユーザ間レベルでは対応したような人の声も出ているようですが、それでも本家コミュニティでは対応する気も無いようですし、ちょっと手を出すのも面倒そうです。なので、auは高画質モードに限定してあげると、各キャリアほぼ同じ条件にそろえることができます。
作業環境
今回も例のごとくFedora5でいじってみます。基本的にFedora6, 7やCentOSでもそんなに変わらないと思います。必要そうなコマンドもあわせて掲載しているので他のディストリビューションでも何とか参考にはなるかと思います。
目標
各キャリアに対応した、、と謳っても、それでは目標もあやふやなので、とりあえず各キャリアで撮影した動画ファイルから「音声部分」のみを切り取ってみたいと思います。つまりは
ffmpeg -i [in].3gp [out].wav
で、問題なくwavとして切り出すことができるように目指します。
また、同時にwavと静止画(jpeg)から各キャリアに3gpフォーマットの動画ファイルを作成できることも目指します。言い換えれば、動画ファイルの解析と作成、というわけですね。
指針
流れとしては
- 必要コマンド、ツールのインストール(ビルド環境整備)
- 必要コーデックのインストール
- オプションに注意してffmpegをビルド
と、なります。環境によっては、1は読み飛ばしていただいても構わないと思います。
必要コマンド、ツールのインストール
Fedoraも素の状態では開発に必要なコマンドもあまり入っていませんので、yumで入れておきます。次のものは最低限必要です。
- yum -y install dos2unix
- yum -y install automake*
- yum -y install libtool*
- yum -y install install gcc-c++
- yum install compat-gcc-32(Fedora6以前)
yum install compat-gcc-34(Fedora7~) // 2007/11/23追記
faacのインストール
faacはAACでエンコードを行うときに必要なライブラリです。
wget http://ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2(2007/9/6修正)
wget http://nchc.dl.sourceforge.net/sourceforge/faac/faac-1.25.tar.gz- cd faac
- dos2unix Makefile.am bootstrap configure.in
- ./bootstrap
- ./configure --prefix=/usr
- make
- make install
- /sbin/ldconfig
faadのインストール
faadはAACでデコードを行うときに必要なライブラリです。
- mkdir faad
- cd faad
- wget http://darusuna.sakura.ne.jp/src/faad2-15092004.tar.gz
- tar xzfp faad*.tar.gz
- sh bootstrap
- ./configure CC=gcc32(Fedora6以前)
./configure CC=gcc34(Fedora7以降) // 2007/11/23追記 - make
- make install
- /sbin/ldconfig
amrnbのインストール
amrはamrnbとamrwbの2種類あります。どっちがどう違うのか、、は分からないのですがとりあえず両方インストールしておきましょう。
- wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.0.tar.bz2
- tar xvjf amrnb-7.0.0.0.tar.bz2
- cd amrnb-7.0.0.0
- ./configure
- make
- make install
amrwbのインストール
- wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.2.tar.bz2
- tar xvjf amrwb-7.0.0.2.tar.bz2
- cd amrwb-7.0.0.2
- ./configure
- make
- male install
ffmpegのビルド
最新のソースコードでないとビルドできません。また少し古いソースだとconfigureの仕方も異なっているので注意しましょう。snapshotからソースを取得するのがベターです。
- wget http://ffmpeg.mplayerhq.hu/ffmpeg-checkout-snapshot.tar.bz2
- tar jxf ffmpeg-checkout-snapshot.tar.bz2
- cd ffmpeg-checkout-2007-*
- ./configure --cc=gcc32 --enable-gpl --enable-libfaac --enable-libfaad --enable-libamr_wb --enable-libamr_nb(Fedora6 以前)
./configure --cc=gcc34 --enable-gpl --enable-libfaac --enable-libfaad --enable-libamr_wb --enable-libamr_nb(Fedora7 以降) // 2007/11/23追記 - make
- make install
LD_LIBRARY_PATHの設定
このままだと、まだamr系のライブラリファイルが正常にロードできずにffmpegの起動に失敗してしまいます。なので、ldconfigでライブラリを再読み込みしてあげます。
- su
- cd /etc/ld.so.conf.d
- vi ffmpeg.conf
/usr/local/lib
の1行だけ書かれたファイルffmpeg.confを作成
- /sbin/ldconfig
これで完成です!
3gpファイルから音声を抜き出す
次の例では、3gpファイル「foo.3gp」から音声を抜き出して「bar.wav」で保存しています。
ffmpeg -y -i foo.3gp bar.wav
-yオプションは、出力時に同一名のファイルがあった場合に強制上書きするオプションです。無くても構いません。
wav + 静止画から動画を作成
カラオケのように(?)背景画像と音声から動画を作成することもできます。次の例ではfoo.jpgをループ再生してbar.wavと合成し、hoge.3gpを作成します。注意点として、foo.jpgは「176 x 144」のサイズでないと、DoCoMo以外のキャリア端末では再生できません。
ffmpeg -y -f image2 -loop -shortest -i foo.jpg -i bar.wav -acodec libamr_nb -ab 4.75k -vcodec mpeg4 -f 3gp hoge.3gp
ちなみに3gpファイルをWebサーバに設置する場合は、MIME Typeの設定を行っておく必要もあります。httpd.confや.htaccessに次の1行を追加しておきます。
AddType video/3gpp .3gp
これで、Webサーバ上に設置した3gpファイルに携帯からアクセスすると、端末独自のPlayerが起動し、ファイルを再生できると思います。
まとめ
ffmpegのビルドはかなり面倒です。慣れるとどうってことないのですが、コーデックの追加方法もバージョンによって異なる場合もあり、完璧な方法を見つけるまでかなり苦労しました。。こんな場合だとうまくいかないよ!などありましたらコメントやTBで教えていただければと思います。
- Newer: あなたの音感は何点?-ケータイ鼻歌音感ゲーム「はなワザ」
- Older: PHP+Smartyで3G携帯サイトを効率的に構築する
Google Adsense
Social bookmark comment : 0
No comment.
Comment : 0
Trackback : 2
- TrackBack URL for this entry
- http://blog.katsuma.tv/mt-tb.cgi/87
- Listed below are links to weblogs that reference
- 3G携帯の動画を扱うためのffmpegのビルド方法 from blog.katsuma.tv
- 3G携帯の動画を扱うためのffmpegのビルド方法@ubuntu from blog.gakkie.com 2007-09-12 (水) 00:35
- 友人のカツマくんが3G携帯用動画をゴニョゴニョしたいらしく、 ffmpegを自分でビルドしていました。 というわけで真似してみました。 なんで自分でビルド...
- あなたの音感は何点?-ケータイ鼻歌音感ゲーム「はなワザ」 from blog.katsuma.tv 2007-09-14 (金) 03:27
- 本日、ハナ歌音感ゲームサイトの「はなワザ」をオープンしました。 最近、携帯電話...
2007/09/03 (Mon)