携帯ムービーを取り扱う上で避けて通れないのが、このAMR。第3世代携帯でスタンダードな音声フォーマットってわけで、AMRを制するものが携帯ムービーを制するんじゃないの!(実際そんなことない)
mencoderでは標準で取り扱えそうに見えるんだけど、やっぱそこはアレ。ffmpegから一発でバチコーンって全部やるのが男のロマン、略してオマンなのだよ。紫煙くゆらせてJAZZでも聴きながら、余裕ぶっこいて片付けてやりましょう。俺は徹夜でやったけどな。 ...orz
とは言え、よく分からなかったんで検索してみました。以下、参考にしたページ。
Ume Room サーバ構築奮闘記
渋谷セルリアンタワーで働く社長のブログ 続・3gp-flv
ここで両者こぞってlame mp3をインストールしてるので、真似して入れてみる。ffmpegでmp3使うために必要らしい。もう、必死でコピペですよ。
# tar xvfz lame-3.96.1.tar.gz # cd lame-3.96.1 # ./configure # make && make install
ここからが本番。ffmpegでAMRのCodecを利用する準備。3gppがリリースしてる音声コーデックをDLして、libavcodecに突っ込んであげる。あ、くれぐれも優しくね。
# wget http://www.3gpp.org/ftp/Specs/2004-03/Rel-5/26_series/26204-520.zip # mkdir /usr/local/src/ffmpeg-0.4.9pre1/libavcodec/amrwb_float # unzip 26204-520.zip # unzip 26204-520_ANSI_C_source_code.zip # mv c-code/* /usr/local/src/ffmpeg-0.4.9pre1/libavcodec/amrwb_float
# wget http://www.3gpp.org/ftp/Specs/2004-03/Rel-5/26_series/26073-530.zip # mkdir /usr/local/src/ffmpeg-0.4.9pre1/libavcodec/amr # unzip 26073-530.zip # unzip 26073-530_ANSI_C_source_code.zip # mv c-code/* /usr/local/src/ffmpeg-0.4.9pre1/libavcodec/amr
# wget http://www.3gpp.org/ftp/Specs/2004-03/Rel-5/26_series/26104-540.zip # mkdir /usr/local/src/ffmpeg-0.4.9pre1/libavcodec/amr_float # unzip 26104-540.zip # unzip 26104-540_ANSI_C_source_code.zip # mv c-code/* /usr/local/src/ffmpeg-0.4.9pre1/libavcodec/amr_float
続けて、libavcodec/amr/makefileを修正。(68行目あたり)
# 上はコメントアウトにする # CFLAGS = -Wall -pedantic-errors -I. $(CFLAGS_$(MODE)) -D$(VAD) CFLAGS = -Wall -I. $(CFLAGS_$(MODE)) -D$(VAD) -DMMS_IO
あとは、インストールなんで、そこは機械にまかせて高みの見物といきましょう。串団子とか食べてお茶でも飲んでりゃ、気付くとできあがってます。素敵。
# ./configure --enable-amr_nb --enable-amr_wb --enable-mp3lame # make && make install
configureしたときに、何か "NOTICE" とか言っちゃって「構って欲しい」オーラ全開になるんですが、それは上記で既にやっているのでシカトです。甘やかしてはならぬ。細かいことを気にしてはならぬ。それが男子の厨房。(なんだそれ)
# ffmpeg -y -i 05-05-15_15-12.3gp -r 29.97 -vcodec flv -acodec mp3 3gp.flv
これを実行したところ、ffmpegのヤツ、マシンの中心で「Segmentation fault(セグメンテーション違反です。)」とか叫ぶんです。でも、細かいことは気にしない。見なかったことにする。だって、ちゃんとファイルできてるし。そんで再生したら、映像も音も出てるしバッチリだよー。素敵。
と思ったら、なんかflvの再生速度が遅い…。声がみんなジャイアント馬場になってる。それはそれで面白いんだけどさ…。次に立ちはだかる難題amcとともに、今後の課題としときまふ。ううう。
このエントリーのトラックバックURL
- masato at 2006年3月 2日 18:55
なんかコメントだとうまく貼り付けれないので
http://bz2.jp/misc/ffmpeg-0.4.9-pre1.patch
に置きました
ちょうど同じ問題にぶつかって、修正できたみたいなので報告します。
次のパッチをあてるとセグらずに実行できました。
diff -uNr ffmpeg-0.4.9-pre1-org/libavcodec/utils.c ffmpeg-0.4.9-pre1/libavcodec/utils.c
--- ffmpeg-0.4.9-pre1-org/libavcodec/utils.c 2006-03-02 17:52:33.000000000 +0900
+++ ffmpeg-0.4.9-pre1/libavcodec/utils.c 2006-03-02 18:40:12.000000000 +0900
@@ -520,6 +520,10 @@
{
int ret;
+ if (buf_size codec->decode(avctx, samples, frame_size_ptr,
buf, buf_size);