VineSeed の ffmpeg で 3gp を扱ってみる

携帯電話の音声や動画の規格って、取説にもかかれていないのねん。なので、 mp4 コンテナを作るとき、 ffmpeg のパラメーターは試行錯誤そのものです。

VineSeed で手軽に 3gp を扱えるようにしてみました。

とは言っても、 AMR のライブラリがいつまでサポートされるのかよく分からないので、 self-build 化まで考えていません。そこまで 3gp に興味がないです。

mp4 で以下にハイクオリティーでエンコードできるかには興味があるんですけどね。

ffmpeg に --enable-libamr-nb --enable-libamr-wb --enable-nonfree を対応させる

まず、 AMR Codecs as Shared Libraries http://www.penguin.cz/~utx/amr から amrwb, amrnb のソースをダウンロードしてきます。そして、以下の nosrc.rpm を使ってビルドし、インストールします。

ダウンロード: amrwb-7.0.0.3-2vl5mp.nosrc.rpm on so-net

ダウンロード: amrnb-7.0.0.2-2vl5mp.nosrc.rpm on so-net

つぎに、 self-build-ffmpeg のソースを apt-get で取ってきて、以下の手順で ffmpeg をリビルドします。

$ apt-get source self-build-ffmpeg 
$ rpmbuild -ba --define _with_amr:1 ~/rpm/SOURCES/ffmpeg.spec

最後に生成された ffmpegrpm をインストールします。

3gp -> flv -> mp4 へ変換してみる

試しに 3gp を flv や mp4 などへ変換してみます。

$ ffmpeg -y -i hoge.3gp -ar 44100 hoge.flv
$ ffmpeg -y -i hoge.flv -sameq -vcodec libx264 -acodec libfaac -f mp4 hoge.mp4

(ffmpeg-mh だと、)
$ ffmpeg-mh -y -i hoge.flv -vcodec xvid -bitexact -fixaspect -s 320x240 \
    -r 14.985 -b 190 -acodec aac -ac 2 -ar 16000 -ab 32 -f mp4 hoge.mp4