2009年04月22日

64bit版Linuxでのffmpegの環境構築(for CentOS5.3)

■ffmpegのインストール。

2通りのインストール方法を記録。用途に合わせてどちらかを実行する。

@yumからインストール

デフォルトでは、ffmpegはyumにてインストールできない。

よって、DAG(rpmforge) の yum repository 追加を行う。

DAGのインストール

# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.fc3.rf.i386.rpm (32bit)
# wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.fc3.rf.x86_64.rpm (64bit)

# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm

これで、rpmforgeのリポジトリを参照するので、ffmpegがyumでインストールができるようになる。

署名のインストール

# wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt

# rpm -import RPM-GPG-KEY.dag.txt

ffmpegインストール

# yum --enablerepo=rpmforge install ffmpeg

ライブラリの依存関係も勝手に行ってくれるので簡単。


Aソースからインストール

ライブラリなどの依存関係が大変だが、より多くのフォーマットに対応させたい場合などはこちらでやる。

・前準備

・DAGのインストール
@を参照

・yasmのインストール
# yum install yasm

・GITのインストール

# wget http://kernel.org/pub/software/scm/git/git-1.6.2.tar.gz (バージョン要確認)
# tar zxvf git-1.6.2.tar.gz
# cd git-1.6.2 && ./configure && make && make install

****************************************
■make時エラー

cache.h:16:18: error: zlib.h: そのようなファイルやディレクトリはありません

zlibをインストールする。

# yum install zlib
# yum install zlib-devel

****************************************

※ /usr/local/bin にインストールされる。

※yumでのインストールでもよいはずなのだが、うまく動作しなかったのでソールからインストールした。
(# yum install git)


・ソースからのインストール (2009/03/12現在でのバージョン)

・faad2のインストール
# wget http://downloads.sourceforge.net/faac/faad2-2.6.1.tar.gz
# tar xvfz faad2-2.6.1.tar.gz
# cd faad2 && ./bootstrap && ./configure && make && make install


・liba52のインストール
# wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
# tar xvfz a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4 && ./configure && make && make install


・libdiracのインストール
# wget http://downloads.sourceforge.net/dirac/dirac-0.10.0.tar.gz
# tar xvfz dirac-0.10.0.tar.gz
# cd dirac-0.10.0 && ./configure && make && make install


・faac2のインストール
# wget http://downloads.sourceforge.net/faac/faac-1.26.tar.gz
# tar xvfz faac-1.26.tar.gz
# cd faac && ./bootstrap && ./configure && make && make install


・libgsmのインストール
# wget http://kbs.cs.tu-berlin.de/~jutta/gsm/gsm-1.0.13.tar.gz
# tar xvfz gsm-1.0.13.tar.gz

64bit環境の場合、Makefileの編集が必要。

# cd gsm-1.0-pl13
# vi Makefile

CFLAGS = $(CCFLAGS) $(SASR) $(DEBUG) $(MULHACK) $(FAST) $(LTP_CUT) \
$(WAV49) $(CCINC) -I$(INC) -fPIC

※CFLAGSに-fPICを追加する。

# make
# cp lib/libgsm.a /usr/local/lib/
# cp inc/gsm.h /usr/local/include/


・libamrnbのインストール
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.2.tar.bz2
# tar xvfj amrnb-7.0.0.2.tar.bz2
# cd amrnb-7.0.0.2 && ./configure && make && make install


・libamrwbのインストール
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.3.tar.bz2
# tar xvfj amrwb-7.0.0.3.tar.bz2
# cd amrwb-7.0.0.3 && ./configure && make && make install


・libmp3lameのインストール
# wget http://downloads.sourceforge.net/lame/lame-3.97.tar.gz
# tar xzf lame-3.97.tar.gz
# cd lame-3.97 && ./configure && make && make install


・libx264のインストール (gitで取得)
# /usr/local/bin/git clone git://git.videolan.org/x264.git x264
# cd x264 && ./configure --enable-pthread --enable-shared --disable-asm && make && make install


・libnutのインストール (svnで取得)
# svn co svn://svn.mplayerhq.hu/nut/src/trunk libnut

64bit環境の場合、config.makの編集が必要。

# cd libnut
# vi config.mak

CFLAGS += -fPIC 適当な位置に追加する。

# make && make install


・liboggのインストール
# wget http://downloads.xiph.org/releases/ogg/libogg-1.1.3.tar.gz
# tar xvf libogg-1.1.3.tar.gz
# cd libogg-1.1.3 && ./configure && make && make install


・libtheoraのインストール (svnで取得)
# svn co http://svn.xiph.org/trunk/theora theora
# cd theora && ./autogen.sh && ./configure && make && make install


・libvorbisのインストール
# wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.2.0.tar.gz
# tar xvfz libvorbis-1.2.0.tar.gz
# cd libvorbis-1.2.0 && ./configure && make && make install


・libxvidのインストール
# wget http://downloads.xvid.org/downloads/xvidcore-1.2.1.tar.gz
# tar xvf xvidcore-1.2.1.tar.gz
# cd xvidcore-1.2.1/build/generic && ./bootstrap.sh && ./configure --disable-assembly && make && make install


********************************************************************

・環境変数の登録

ffmpegのインストール前にいくつか登録しておく。

d.so.confで指定しているライブラリのパスをLD_LIBRARY_PATHやLIBRARY_PATHに入れる。

# export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
# export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
# export CPATH=/usr/local/include:$CPATH

もしくは、

# vi /etc/bashrc

export LD_LIBRARY_PATH=/usr/local/lib ←追加

# source /etc/bashrc

PHPで取り扱うには/etc/ld.so.confにも追加 (通常しなくて良いと思われる)

# vi /etc/ld.so.conf

include ld.so.conf.d/*.conf
/usr/local/lib ←追加

# ldconfig

********************************************************************


・ffmpegのインストール (svnで取得:リビジョン18654)
# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
# cd ffmpeg
# PKG_CONFIG_PATH=/usr/local/lib/pkgconfig \
CFLAGS="-fPIC -m64" \
sh configure --enable-shared \
--enable-gpl \
--enable-nonfree \
--enable-postproc \
--enable-avfilter \
--enable-avfilter-lavf \
--enable-pthreads \
--enable-libamr-nb \
--enable-libamr-wb \
--enable-libdirac \
--enable-libfaac \
--enable-libfaad \
--enable-libfaadbin \
--enable-libgsm \
--enable-libmp3lame \
--enable-libnut \
--enable-libtheora \
--enable-libvorbis \
--enable-libx264 \
--enable-libxvid \
--enable-decoder=libx264 \
--enable-encoder=libx264

※ 64bitなので、一応 CFLAGS="-fPIC -m64" をつける。

# make && make install


********************************************************************
■./configureオプション参考
http://htffmpegx.seesaa.net/article/9194572.html

********************************************************************

********************************************************************
■make 時のエラー

libavcodec/libavcodec.so: undefined reference to `GP3Decoder_Interface_Decode'
libavcodec/libavcodec.so: undefined reference to `VADxEncoder_Interface_init'
libavcodec/libavcodec.so: undefined reference to `GP3VADxEncoder_Interface_Encode'
collect2: ld はステータス 1 で終了しました
make: *** [ffmpeg_g] エラー 1

このエラーは、libamr関連で起きる。

・上記説明の環境変数の登録を再度確認。
・yumにて、既にlibamr関連が入ってないか確認。


/usr/bin/ld: /usr/local/lib/libnut.a(muxer.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libnut.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libavformat/libavformat.so.52] Error 1

このエラーは、libnut関連。

・config.makにCFLAGS += -fPICの追加をしてインストールしているか確認

********************************************************************


・ffmpegのインストール後

現状ではamr系のライブラリファイルが正常にロードできずに、ffmpegの起動に失敗してしまう。
ldconfigでライブラリを再読み込みが必要。ffmpeg.confを作成して処理を行う。

# cd /etc/ld.so.conf.d
# vi ffmpeg.conf

/usr/local/lib ← 追加。

# ldconfig


・動作確認

# /usr/local/bin/ffmpeg -formats

(省略)
DEA libamr_nb
DEA libamr_wb
EA libfaac
D A libfaad
(省略)

上記のようになっていればOK

後は、実際にファイル変換処理をしてテストしてみよう。

使用例:# /usr/local/bin/ffmpeg -y -i ○○.3gp -ar 44100 ○○.flv



************************************************
参考サイト

http://mick.blog16.jp/index.php/2008/02/10/ffmpega_centosa_la_a_a_fa_ra_3gpa_flva_u
http://www.momo-i.org/?ffmpegでストリーミング配信
http://d.hatena.ne.jp/h_kenan/20081215/1229324592
http://www.mathomfactory.com/contents/ffmpeg.htm
http://homepage3.nifty.com/sysaho/ffmpeg.html

************************************************


posted by hana at 15:57| Comment(1) | TrackBack(0) | Linux関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
ステキなブログですね。シーサーのランキングサイトから飛んできました。旅は人の心を豊かにさせますね。今年の旅行の予定は決まりましたか?FC2で旅行関係のブログを書いてます。
http://tavivitoblog62.zz.tc/fc2com
★相互リンクを張りませんか?
リンク仲間と共にアフィリやアクセスアップにも力を注いでます。ブログジャンルは問いません。よろしくお願いします。こちらにメール下さい。
plazarakutenhotelman@livedoor.com
(URLとブログ名を明記して下さい)
ではまた来ます。応援ポチ凸完了!
Posted by 旅行好きのためのブログ at 2009年04月23日 04:37
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。