2010年03月02日

FFmpeg rev.22137 ダウンロード

FFmpeg最新版(2010/3/1現在)、rev.22137のWindows用バイナリを置いておきます。

内蔵AACのエンコード(出力)は実験段階のため、まだ音質は良くないです。
まともに動作するようになるまでは、Nero AAC コーデックを使用した音声AAC動画の作成方法を、こちらの記事に書きましたので、参考にしてください。

また、x264について、一番多く質問が寄せられるエラーの説明を記事にしましたので、思い当たる方は、ぜひご一読ください。
x264のエンコードでエラー(Error while opening encoder for output stream #0.0)

2010/3/3 追記
バグが見つかったため、修正版に差し替えました。
neroAacEncとの組み合わせで、エンコード時にエラーが出る場合は、ダウンロードし直してください。

ffmpeg_bin-22137.zip
ffmpeg_bin_pentium4-22137.zip (Pentium4最適化版)
ffmpeg_bin_core2-22137.zip (Core2最適化版)
ffmpeg_bin_athlon64-22137.zip (Athlon64最適化版)
ffmpeg_bin_phenom-22137.zip (Phenom最適化版)

以下のライブラリをアップデートしました。
lame-3.98.3
x264 rev.1471

今回より、FFmpeg内蔵のnut muxer/demuxerの方がちゃんとメンテナンスされているため、libnutは外しました。

ffprobeという、動画や音声ファイルの種類を調べられるツールが統合されましたが、とりあえずは必要が無いためdisableしています。


バイナリはどれを使っても大丈夫だと思いますが、SSE2に対応していないCPU(Duron、Sempronの一部、Pentium3など)をお使いの方は、最適化無し版を使ってみてください。

最適化無し版でもエラーが出る場合は、サポート外とします。

zipファイルを解凍すると、ffmpeg.exeが出てきますので、携帯動画変換君のcoresフォルダに置くなり、単体で使うなりしてください。
pthreadGC2.dllは不要です。

携帯動画変換君のffmpeg.exeとは、オプションの互換性がありませんので、上書きする際はご注意ください。

FFmpegのコンパイルは、こちらの記事を参考にしてください。

コンパイル環境:MinGW gcc4.4.3

各ライブラリのバージョンは、以下の通りです。
nasm-2.08.01
yasm-0.8.0
pthreads-w32 release 2.9.0
zlib-1.2.3
bzip2-1.0.5
faac-1.28(deleted)
faad2-2.7
gsm-1.0.13
lame-3.98.3
libnut-664(deleted)
opencore-amr-0.1.2
libogg-1.1.4
libvorbis-1.2.3
libtheora-1.1.1
x264 rev.1471
xvidcore-1.2.2

最適化オプションは、以下のようにしています。
configureのオプションに--enable-smallを付けると、gccのオプションに-Osが付きます。
--enable-smallを付けなければ、gccのオプションに-O3が付きます。

最適化無し版
--extra-cflags="-march=i686 -mtune=generic -fno-strict-aliasing"

Pentium4最適化版
--extra-cflags="-mtune=pentium4 -mfpmath=sse -msse -fno-strict-aliasing"

Core2最適化版
--extra-cflags="-mtune=core2 -mfpmath=sse -msse -fno-strict-aliasing"

Athlon64最適化版
--extra-cflags="-mtune=athlon64 -mfpmath=sse -msse -fno-strict-aliasing"

Phenom最適化版
--extra-cflags="-mtune=amdfam10 -mfpmath=sse -msse -fno-strict-aliasing"

configureオプションは以下の通りです。
$ ./configure --enable-memalign-hack --enable-postproc --enable-gpl --enable-version3 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfaad --disable-decoder=aac --enable-libgsm --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libxvid --enable-libx264 --disable-ffserver --disable-ffplay --disable-ffprobe --enable-avisynth --enable-small --enable-pthreads --extra-ldflags=-static --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse -fno-strict-aliasing"

※--extra-cflagsは、最適化の種類により異なります。

configureのメッセージはこちら
posted by あべちん at 08:31 | Comment(15) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
はじめまして、管理人さん。私はうどん君といいます(そろそろ名前を変えたい頃です。)

質問したいことがあるのですが、あべちんさんはFFMpegをビルドする際に各オプションのデフォルト値を知ることができるのでしょうか?

FFMpegは汎用性を高めるためにx264本家とはそぐわないデフォルト値になっていると聞きました。でも私はx264本来の値でエンコードしたいのです。
Posted by うどん君 at 2010年03月08日 13:07
>>うどん君さん

ffmpegのソースの「ffmpeg.c」や「libavcodec/options.c」などを見ればデフォルト値がどうなってるか見ることができますよ。
自分でビルドできるならここを編集することでデフォルト値を好きな値に変えることもできます。
Posted by 通りすがり at 2010年03月08日 17:31
>>通りすがりさん

返信ありがとうございます。ビルドはできないのですが、値を知ることができるのはとてもうれしいです。本当にありがとうございました。
Posted by うどん君 at 2010年03月08日 19:44
管理人さん 皆さん

こんばんは!

管理人さんちょっと教えて欲しい事が・・・

http://blog.k-tai-douga.com/article/34128581.html

ここの

-flags2 +mbtree : mbtree ON
-flags2 -mbtree : mbtree OFF (default)

で -flags2 mbtree

+ を付けないとONになりますか?


-flags2 mixed_refs+mbtree

こうした場合は+mbtreeだけがONですか?

宜しくお願いします。。。

Posted by まさみ at 2010年03月10日 01:55
どうも。

コンパイルオプションの「mtune=core2」ですが、このオプションを有効にすると-msse4.1や-msse4.2も追加されるのでしょうか?
Posted by hash at 2010年03月11日 07:03
まさみさん、こんにちは。管理人です。

mbtreeだけだと、"+"がなくてもONになりますが、連結すると、先頭(左側)のフラグがONになっていないみたいですね。

記事の方を修正しておきます。

ありがとうございました。
Posted by あべちん at 2010年03月11日 19:46
hashさん、どうも。管理人です。

http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options
より、

core2
Intel Core2 CPU with 64-bit extensions, MMX, SSE, SSE2, SSE3 and SSSE3 instruction set support.

となっており、SSE4.xはサポートされていないようです。
Posted by あべちん at 2010年03月11日 19:49
うどん君さん、通りすがりさん、こんにちは。管理人です。

x264のデフォルト値と、FFmpegのオプションの対応は、こちらが参考になると思います。

x264 ffmpeg mapping and options guide
http://sites.google.com/site/linuxencoding/x264-ffmpeg-mapping

FFmpegのデフォルト値は載っていませんが、x264のデフォルト値に合わせてFFmpegのオプションを設定すれば良いと思います。
Posted by あべちん at 2010年03月11日 19:59
管理人さん 皆さん

こんばんは!

って事は単品の場合は + 無しでもON

複数の場合は先頭にも + を付ける。。。

全て + を付ければOKって事ですね!

ありがとですm(_ _)m

 
 
Posted by まさみ at 2010年03月11日 20:34
こんばんは。
上記のflagsオプションの"+"の付け方ですが、変換君ウィキにておそらく正しいと思われる情報を下さった方がいました。

FFmpegには-flags2 fastpskip+reservoirがデフォルトとして設定されており、自分でflags2オプションを指定した場合、先頭に+ありだとデフォルトflags2に追加、+なしだとデフォルトflags2を上書きという形になるらしいです。
確認したところ、+を使用する可能性がありそうなオプションで、暗示的にデフォルト値が設定されているのはflags2だけのようでした。
Posted by Mino at 2010年03月12日 01:31
Minoさん、こんにちは。管理人です。

なるほど、そういうことだったのですね。

先頭の"+"有り無しで、エンコード結果が違う謎が解けました。

ありがとうございました。


> まさみさん

Minoさんのコメントが正解ですので、参考になさってください。
Posted by あべちん at 2010年03月12日 10:20
管理人さん 皆さん

こんにちは!

管理人さん了解しました(=⌒o⌒=)ノ

参考まで・・・


libx264-default.preset

coder=1
flags=+loop
cmp=+chroma
partitions=+parti8x8+parti4x4+partp8x8+partb8x8
me_method=hex
subq=7
me_range=16
g=250
keyint_min=25
sc_threshold=40
i_qfactor=0.71
b_strategy=1
qcomp=0.6
qmin=10
qmax=51
qdiff=4
bf=3
refs=3
directpred=1
trellis=1
flags2=+mixed_refs+wpred+dct8x8+fastpskip+mbtree
wpredp=2

こうなってるみたい!


Posted by まさみ at 2010年03月12日 14:48
管理人さんありがとうございます。

私はCore 2 Quad Q9400を使っています。
http://nattokude.gozaru.jp/nikki/penryn/9_sse4.html
上のページを見るとQ9400が対応しているSSE4.1を使うことでエンコードが少し高速化されるようなので、ちょっと気になっていました。
できれば(SSE4.2にも対応した)Core i7/5/3世代向けに最適化されたバイナリも作って欲しいです。
Posted by hash at 2010年03月15日 07:26
現在GCCの最適化オプションにi7はありません。
-march=core2 -msse4.2
などと付けれますが、-march=core2のみと速度は変わりませんでした。
-march=nativeを付けて、自分のPCでビルドする事をオススメします。
Posted by at 2010年03月15日 14:34
hashさん、名無しさん、こんにちは。管理人です。

> 名無しさん
情報ありがとうございます。
私のPCでは、SSE4.2の確認ができませんので助かりました。

FFmpegのエンコード速度は、libx264やlibxvidなどのライブラリによるところが大きく、FFmpeg本体だけ最適化しても、実はたいして変わりません。

仮に数%速くなるとしても、コンパイルにかかる手間暇を考えると、全く労力に見合わないため、今のところ、バイナリの種類を増やす予定はありません。

ということで、ご理解いただければ幸いです。
Posted by あべちん at 2010年03月16日 20:29
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/35838889
※言及リンクのないトラックバックは受信されません。

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