各種動画からFLV(Flash Videoフラッシュ ビデオ)へ変換したいと思い、とりあえずオプションなしで configure して インストールしてみたのですが、configureオプションなしでは変換できない動画フォーマットがあり、 例えばMPEG-4をFLVに変換といったことができませんでした。
各種フォーマットの動画を取り扱うため、configureオプションを指定しなければならないわけですが、 事前にそのオプションに対するコーデック(データをエンコード・デコードするソフトウェア)のインストールも必要です。
動画や音声はフォーマットが多彩で、例えばMPEG-4を取り扱うのにどのコーデックが必要か? など動画の知識がない自分としては四苦八苦したので、ffmpeg をインストールした時のメモを残すことにしました。(OSが古いのはご勘弁を)
ffmpegで取り扱う音声や動画ファイルで必要なコーデックが決まると思います。以下は一例です。
インストールしたコーデック
LAME | MP3用 LAME? |
---|---|
FAAC/FAAD2 | MPEG2-AAC, MPEG4-AAC用 AAC? |
AMR-NB/AMR-NW | 3G携帯用 AMR? |
liba52 | ATSC A/52(AC-3)用 ATSC A/52? |
# 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
*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
*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
# 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
# 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
# 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
apt-getでインストールしました。
# apt-get install subversion
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
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
構文「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での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
ここまででも結構コーデックのこと調べたわけで、もう調べる気にならず・・・またの機会で。。