ffmpeg と mencoder のインストール (まとめ)

先日のエントリー、「ffmpegとmencoderをインストールしてみる」「ffmpegでAMRを取り扱ってやる」から数日、携帯動画のフォーマット変換をいろいろと実験してみた。が、うまくいかないことばっかし。んで、CODECを追加したり、再インストールしたりしまくったので、ここでもう一度まとめ直し。

詳細は前回までのエントリーを参照ってことで、今回は大まかにメモっていくでごわす。押忍。

今回の主目的は携帯動画のフォーマット変換なんだけど、ついでに色々できるよう、余計なものもいくつかインストールしてみる。liba52とか。

用意したのは以下のとおり。すべてオープンソースで、ネットに転がってますんで好き勝手 wget しましょう。ちなみに、LGPLとGPL入り混じりなので、気にする人は各自調べてくださいまし。

  • lame-3.96.1.tar.gz
  • ffmpeg-0.4.9-pre1.tar.gz
  • 26204-520.zip (amrwb_float用)
  • 26104-540.zip (amr_float用)
  • 26073-530.zip (amr用)
  • faad2-15092004.tar.gz
  • faac-18102004.tar.gz
  • MPlayer-1.0pre7.tar.bz2
  • all-20050412.tar.bz2 (mplayerのcodec類)

まず、lame mp3 をインストール。

# tar xvfz lame-3.96.1.tar.gz
# cd lame-3.96.1
# ./configure
# make && make install

続いて、ffmpeg 関係。

# tar xvfz ffmpeg-0.4.9-pre1.tar.gz

# mkdir /usr/local/src/ffmpeg-0.4.9-pre1/libavcodec/amrwb_float # unzip 26204-520.zip # unzip 26204-520_ANSI_C_source_code.zip # mv c-code/* /usr/local/src/ffmpeg-0.4.9-pre1/libavcodec/amrwb_float
# mkdir /usr/local/src/ffmpeg-0.4.9-pre1/libavcodec/amr # unzip 26073-530.zip # unzip 26073-530_ANSI_C_source_code.zip # mv c-code/* /usr/local/src/ffmpeg-0.4.9-pre1/libavcodec/amr
# mkdir /usr/local/src/ffmpeg-0.4.9-pre1/libavcodec/amr_float # unzip 26104-540.zip # unzip 26104-540_ANSI_C_source_code.zip # mv c-code/* /usr/local/src/ffmpeg-0.4.9-pre1/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

AC3とかAACへの対応として、liba52とかfaad2とかfaacとか入れてみる。

# tar xvfz a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4
# ./configure
# make
# make install

# mkdir faad2 # tar xvfz faad2-15092004.tar.gz # sh bootstrap # ./configure # make # make install
# tar xvfz faac-18102004.tar.gz # sh bootstrap # ./configure # make # make install

そして、ffmpegのインストール。

# ./configure --enable-amr_nb --enable-amr_wb --enable-amr_nb-fixed \
--enable-mp3lame --enable-faad --enable-faac --enable-a52 --enable-gpl
# make
# make install

実際に作業しているとき、このffmpegのmakeでエラーが出て、ハマった。amr.cが未定義の関数を参照しているって怒られる。原因がいまいち分からないので、一度amr周辺のもんを全部消して、configureもオプション指定なしでmake。その後、make clean してから同じ手順を踏んだら、うまくいった。何か手順を間違えたのか、依存性の何かがあるのかは謎。教えてエロい人!

続いては、mencoder(MPlayer) 関係のインストール。

# tar -jxvf all-20050412.tar.bz2
# mkdir /usr/lib/win32
# mv all-20050412/* /usr/lib/win32/

# tar -jxvf MPlayer-1.0pre7.tar.bz2 # cd MPlayer-1.0pre7 # ./configure --confdir=/etc/mplayer --disable-gui --language=ja \ --with-win32libdir=/usr/lib/win32 --enable-qtx --enable-external-faad \ --enable-win32 --enable-libavcodec --disable-libavformat \ --enable-amr_nb --enable-amr_nb-fixed --enable-amr_wb --enable-mp3lib # make # make install

と、ここでエラー。

make[1]: *** No rule to make target `amrwb_float/dec_acelp.c',
needed by `amrwb_float/dec_acelp.o'.  Stop.
make[1]: Leaving directory `/usr/local/src/MPlayer-1.0pre7/libavcodec'
make: *** [libavcodec/libavcodec.a] エラー 2

仕方ないので、強引な技を展開。先ほど、ffmpeg の libavcodec の下に作成した amr 関連のディレクトリを、MPlayer の libavcodec に cp -fr してみた。すると、上手くいくじゃないか。おお。

これで一件落着かと思い、ffmpeg と mencoder をコマンドラインで叩いたら、また何かエラーとか吐いちゃって面倒くさい。

ffmpeg: error while loading shared libraries: libmp3lame.so.0:
ffmpeg: error while loading shared libraries: libfaac.so.0:
mencoder: error while loading shared libraries: libfaad.so.0:

これまた強引に、シンボリックリンクを張ってあげた。

# ln -s /usr/local/lib/libfaad.so.0 /usr/lib
# ln -s /usr/local/lib/libfaac.so.0 /usr/lib
# ln -s /usr/local/lib/libmp3lame.so.0 /usr/lib

これでバッチリ。うまくいかない場合は、configure 時のオプション指定を間違って make している可能性があるので、make clean して再度やり直したりすると、できるかもしれないです。ひたすら configure → make してると、その必死さがマシンに伝わって、うまくいくもんです。ヒドイ話だな、これ。

以上、お疲れさまでした。

このエントリーのトラックバックURL
http://www.deftrash.com/admin/mt4/mt-tb.cgi/232