Vine Linux 3.2 への ffmpeg インストールメモ


CGI'sトップへ戻る


各種動画からFLV(Flash Videoフラッシュ ビデオ)へ変換したいと思い、とりあえずオプションなしで configure して インストールしてみたのですが、configureオプションなしでは変換できない動画フォーマットがあり、 例えばMPEG-4をFLVに変換といったことができませんでした。

各種フォーマットの動画を取り扱うため、configureオプションを指定しなければならないわけですが、 事前にそのオプションに対するコーデック(データをエンコード・デコードするソフトウェア)のインストールも必要です。

動画や音声はフォーマットが多彩で、例えばMPEG-4を取り扱うのにどのコーデックが必要か? など動画の知識がない自分としては四苦八苦したので、ffmpeg をインストールした時のメモを残すことにしました。(OSが古いのはご勘弁を)

インストールの流れ

  1. 欲しいコーデックの入手・インストール。
  2. ffmpegはSubversion(バージョン管理ソフト)のリポジトリで公開されているのでSubversionをインストール。
  3. ffmpegの入手・インストール。
  4. ライブラリの登録(Vineのみ?)。
  5. 使用してみる

1.コーデックの入手・インストール

ffmpegで取り扱う音声や動画ファイルで必要なコーデックが決まると思います。以下は一例です。

インストールしたコーデック

LAMEMP3用  LAME?
FAAC/FAAD2MPEG2-AAC, MPEG4-AAC用  AAC?
AMR-NB/AMR-NW3G携帯用  AMR?
liba52ATSC A/52(AC-3)用  ATSC A/52?
ffmpegの書籍・本

LAMEインストール

# cd /usr/local/src
# wget http://jaist.dl.sourceforge.net/sourceforge/lame/lame-3.97.tar.gz
# tar zxvf lame-3.97.tar.gz
# cd lame-3.97
# ./configure
# make
# make install

FAACインストール

*configureファイルがないので sh bootstrap で作成

# cd /usr/local/src
# wget http://jaist.dl.sourceforge.net/sourceforge/faac/faac-1.26.tar.gz
# tar zxvf faac-1.26.tar.gz
# cd faac
# sh bootstrap
# ./configure
# make
# make install

FAAD2インストール

*configureファイルがないので sh bootstrap で作成

# cd /usr/local/src
# wget http://nchc.dl.sourceforge.net/sourceforge/faac/faad2-2.6.1.tar.gz
# tar zxvf faad2-2.6.1.tar.gz
# cd faad2
# sh bootstrap
# ./configure
# make
# make install

AMR-NBインストール

# cd /usr/local/src
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrnb-7.0.0.0.tar.bz2
# tar zxvf amrnb-7.0.0.0.tar.bz2
# cd amrnb-7.0.0.0
# ./configure
# make
# make install

AMR-NWインストール

# cd /usr/local/src
# wget http://ftp.penguin.cz/pub/users/utx/amr/amrwb-7.0.0.2.tar.bz2
# tar zxvf amrwb-7.0.0.2.tar.bz2
# cd amrwb-7.0.0.2
# ./configure
# make
# make install

liba52インストール

# cd /usr/local/src
# wget http://liba52.sourceforge.net/files/a52dec-0.7.4.tar.gz
# tar zxvf a52dec-0.7.4.tar.gz
# cd a52dec-0.7.4
# ./configure
# make
# make install

2.Subversionインストール

apt-getでインストールしました。

Subversionインストール

# apt-get install subversion

3.ffmpegの入手・インストール

subversionのコマンドでチェックアウトすることで入手。

[ configureオプションについて ]
先のコーデックをインストールしてないと以下のconfigureオプションはエラーとなり通りません。
エラーになるオプションを省いてインストールすれば、当然、省いたオプションに関連する動画・音声フォーマットは取り扱えないということになります。

# cd /usr/local
# svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
# cd ffmpeg
# ./configure --enable-libmp3lame --enable-libfaac --enable-libfaad --enable-libamr-nb --enable-libamr-wb --enable-liba52 
--enable-gpl
# make
# make install

4.ライブラリの登録

3までの状態で試したら。
error while loading shared libraries: libfaac.so.0: cannot open shared object file: No such file or directory とのエラー。 libfaac.so.0やlibfaad.so.0は/usr/local/libにできてるがVineが認識してくれないので、以下の作業を行う。

vi で/etc/ld.so.confの行末に/usr/local/libと記述して ldconfig 実行。

# vi /etc/ld.so.conf
# (行末に/usr/local/libと記述)
# /sbin/ldconfig

5.使用してみる

構文「ffmpeg -i [入力ファイル] [入力ファイルオプション] [出力ファイルオプション] [出力ファイル]みたいな感じ。

出力ファイルのフォーマットは拡張子から自動判別してくれるらしい

MPEG-4からFLVに変換してみる

$ /usr/local/bin/ffmpeg -i test.mp4 -y -b 1800 -r 30 -ab 128 -ac 2 -ar 44100 test.flv

動画からMP3を分離

$ /usr/local/bin/ffmpeg -i test.wmv -y -b 1800 -r 30 -ab 128 -ac 2 -ar 44100 test.mp3

サムネイルを作成してみる

$ /usr/local/bin/ffmpeg -vframes 1 -ss 30 -i test.flv -f image2 test.jpg

#この辺の作業ができればPHPのexecやsystemでコマンドをコールしてFLV動画サイトが作れそうですね。


オプションについて(ffmpegオプション

オプション 意味 デフォルト
-i入力ファイル名 
-y出力ファイルの上書き 
-bビデオのビットレート(b/s)200kb/s
-rフレームレート25
-sフレームサイズ「幅x高さ」160x128
-abオーディオビットレート(kb/s)64kb/s
-acオーディオチャンネル数1
-arオーディオサンプリング周波数44100Hz
-vframes変換するフレームの数 
-ss指定した位置に移動(秒) 
-f強制フォーマット 
ffmpegの書籍・本

※追記
ffmpegでのwmvからFLVへの変換について、ローカルにあった適当なファイルで試してたら問題なかったのですが、
Windows Media エンコーダ 9 でMPEG-4から変換したwmvが変換できない。。
失敗結果は以下(抜粋)。

Seems stream 1 codec frame rate differs from container frame rate: 1000.00 (1000/1) -> 25.00 (25/1)
Input #0, asf, from 'test.wmv':
  Duration: 00:00:32.9, start: 3.000000, bitrate: 4570 kb/s
  Stream #0.0: Audio: 0x0162, 48000 Hz, stereo, 384 kb/s
  Stream #0.1: Video: wmv3, yuv420p, 1280x720, 5000 kb/s, 25.00 fps(r)
Output #0, flv, to 'test.flv':
  Stream #0.0: Video: flv, yuv420p, 1280x720, q=2-31, 1 kb/s, 30.00 fps(c)
  Stream #0.1: Audio: mp3, 44100 Hz, stereo, 0 kb/s
Stream mapping:
  Stream #0.1 -> #0.0
  Stream #0.0 -> #0.1
Unsupported codec (id=0) for input stream #0.0

InputのVideoにwmv3とは出てるので、オーディオが原因なのかもしれません。
ちなみに以下のように -an (オーディオ無効)にすると音なしで変換できました。

$ /usr/local/bin/ffmpeg -i test.wmv -y -b 1800 -r 30 -an test.flv

以下は参考までに ffmpeg -formats の抜粋。

 DEA    wmav1
 DEA    wmav2
 DEVSD  wmv1
 DEVSD  wmv2
 D V    wmv3

ここまででも結構コーデックのこと調べたわけで、もう調べる気にならず・・・またの機会で。。

CGI'sトップへ戻る