2011年03月02日

Debian(squeeze)にffmpegをインストールしてみる

私は基本的にあまり動画を加工したりはしないので、ffmpegはずっと使っていませんでした。


以前使っていたのは、Fedora11を使っていたときなので、1年以上前です。



最近サーバのことをいろいろ調べていたら、動画サイトや動画変換サービスなどでもffmpegが使われていることを知り、また興味を持ち始めました。



今はDebian(squeeze)を使っているのですが、こっちではffmpegを使ったことはなかったので、とりあえずDebian(squeeze)にffmpegをインストールする手順についてまとめておくことにしました。




とはいっても、私はコーデックのことについて全く知らないので、参考サイト様に完全に依存した形になりますので、参考程度にしかならないと思います。



なお、今回はmp4動画とflv動画の相互変換、動画(mp4,flv)からの音声(mp3)抽出ができる程度構成でインストールしているので、他の動作については全く保証できませんのであしからず。



Debian(squeeze)のリポジトリ(main)にもffmpegのパッケージがありましたが、Debianにはいろいろな制約があるようで、mp4やmp3を扱うためのコーデックが依存関係などでインストールできなくなっているようです。


別途インストールする手段もあるのかもしれませんが、私の理解の範疇を超えているような気がしたので、この方法は早々に諦めることにして、ソースからインストールすることにしました。


なお、今回の記事を書くために以下のページを参考にさせていただきました。


(ありがとうございましたm(_ _)m)



CGI's > Vine Linux 3.2 への ffmpeg インストールメモ



http://www.cgis.biz/others/ffmpeg/



ちょっと古めのページですが、Debianでも十分に応用できました。



0.インストール準備


ソースからインストールするには、コンパイルしてビルドできる環境が必要です。


インストール作業をする前に以下のソフトウェアをaptコマンドでインストールしておきます。



gcc Gnu C コンパイラ


g++ Gnu C++ コンパイラ


make コンパイル制御ユーティリティ(makeファイルの実行に必要


automake Makefileを自動生成


autoconf configureスクリプトを自動生成


libtool 汎用ライブラリサポートスクリプト



#apt-get install gcc g++ make automake autoconf libtool


次に以下のサイトで、コーデック及びffmpegをダウンロードしておきます。


LAME(MP3 Encoder:今回は3.98.4を使用)


http://sourceforge.net/projects/lame/files/lame/



faac/faad(音声圧縮ライブラリ:今回はfaad2-2.7とfaac-1.26[facc-1.28はなぜかエラーがでる]を使用)


http://sourceforge.net/projects/faac/files/



FFmpeg(このページの下のリンクからFFmpeg0.6.1をダウンロード)


http://www.ffmpeg.org/download.html



なお、それぞれ何種類かの圧縮形式のファイルが用意されていますが、中身は同じなので好きなものをダウンロードします。(tar.gzは大抵のディストリビューションで最初からインストールされているので、これを選んでおくのが無難ですね)


以上でインストール準備は完了です。



続いて以下の手順でインストールします。


(ただし、#はルートユーザとしてログインしている状態。$は一般ユーザとしてログインしている状態を示している)



1.ダウンロードしたファイルを作業用ディレクトリに移動させ、解凍する。



・作業用ディレクトリは/tmpあたりがよいと思いますが、このディレクトリに置いたファイルはパソコンの電源を一度落とすと消去されてしまうので、ダウンロードした元のファイルを一応残しておきたい場合は解凍後に移動します。



なお、解凍コマンドは以下のいずれかです。



$tar zxvf hoge.tar.gz (tar.gz形式の場合)


$unzip hoge.zip (zip形式の場合[事前にunzipパッケージをインストール])


$tar jxvf hoge.tar.bz2 (tar.bz2形式の場合)


2.各コーデックをインストールする




・ffmpegの本体をインストールする前に関連するコーデックをインストールしておかないとコンパイルエラーがでるので、先にインストールしておきます。



コーデックのディレクトリにはconfigureスクリプトの付属しているものとconfigureスクリプトを作成するためのbootstrapapスクリプトの付属しているものの2種類があります。


比較的新しいものはconfigureスクリプトが付属しているようですが、今回は少し古いfaacコーデックを使用しているので、これだけbootstrapスクリプトが付属しているようです。


なお、bootstrapスクリプトはスクリプト内でautoconfやautomake、libtoolなどが使用されているのでこれらをインストールしていないとエラーがでて処理が中断されます。



[faadのインストール]

$cd faad2-2.7


$./configure


$make


#make install



[lameのインストール]


$cd lame-3.98.4


$./cofigure


$make


#make install



[faacのインストール]


$cd faac


$./bootstrap


$./configure


$make


#make install



・confirueスクリプトは実行環境を確認して、環境にあわせたMakefileを作成します。その後、作成されたMakefileを実行しコンパイルし、実行可能なプログラムを作成します。


そして、「make insall」を実行してMakefileに記述されたインストール用のスクリプトを実行します。


ただし、configureスクリプトをそのまま実行したときにインストールされるディレクトリは「/usr/local/」なので、ルートユーザとしてログインする(または、ルートユーザの権限をsudoで利用する)必要あります。


(PCの性能によりますが、コンパイルには少し時間がかかるので完了するまで気長に待ちます)




※ 以上はカレントディレクトリに目的のディレクトリがある場合なので、異なる位置にある場合は変更してください。




3.FFmpeg本体をインストールする



$cd ffmpeg-0.6.1


$./configure --enable-libmp3lame --enable-libfaac --enable-libfaad --enable-nonfree --enable-gpl


$make


#make install



・ここではconfigureスクリプトをオプションつきで実行しています。これはインストールしたコーデックを使用するためのフラグをMakefileに施すためです。


これによりコンパイルされるffmpegにはインストールしたコーデックを使う機能をもつようになります。




4. ldconfigコマンドを実行してライブラリの登録及びキャッシュの更新



#ldconfig

($sudo ldcofig)

・manページによると、 ldconfigコマンドは、ライブラリを使用するために必要なリンクを作成したり、ライブラリのキャッシュを更新したりするもののようで、新しいライブラリを手動でインストールしたときには実行する必要があるようです。



このとき、「/etc/ld.so.conf」に記述されたパスにあるディレクトリが検索されますが、Debian(squeeze)では「/etc/ld.so.conf」に、「/etc/ld.so.conf.d/」にある「*.conf」ファイルの内容がロードされる仕組みになっているようです。



通常、パスをこのファイルに記述する必要がありますが、確認してみたところ「/usr/local/lib」が最初から記述されているので、ldconfigコマンドを実行するだけで、更新処理ができるようになっているようです。



なお、これで認識されない場合は、参考ページにあるように「/etc/ld.so.conf」の最終行に「/usr/local/lib」を記述します。




以上でインストール作業は完了です。




使用例



【動画ファイルから音声のみを抽出(mp3)】


$ffmpeg -i filename.mp4 -ab 128k filename.mp3


$ffmpeg -i filename.flv -ab 128k filename.mp3



【mp4<=>flv】


$ffmpeg -i filename.mp4 -y -b 1800 -r 30 -ac 2 -ab 128k -ar 44100


$ffmpeg -i filename.flv -y -b 1800 -r 30 -ac 2 -ab 128k -ar 44100



・これが一般的なビデオビットレート(-b)、フレームレート(-r)、オーディオチャンネル(-ac)、オーディオビットレート(-ab)、オーディオサンプリング周波数(-ar)のようです。


-iはインプットファイル名を指定するためのオブション、-yは同一名のファイルを上書きすることを許可するオプションのようです。




今回はDebian(squeeze)にffmpegをインストールしてみました。この方法はおそらく他のディストリビューションでも利用できるのではないでしょうか。



参考サイト


http://www.cgis.biz/others/ffmpeg/



ラベル:Debian Linux ffmpeg Squeeze
posted by mechanical_doll at 22:52| Comment(0) | Debian | このブログの読者になる | 更新情報をチェックする
×

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