2011年04月01日

FFmpeg rev.28742 ダウンロード

FFmpeg最新版(2011/03/31現在)、rev.28742(1caa412)のWindows用バイナリを置いておきます。

内蔵AACエンコーダは、まだ実験段階のため、以前使用していたlibfaacや、neroAacEncに比べると音質は良くないです。
まともに動作するようになるまでは、neroAacEncを使用した音声AAC動画の作成方法を、こちらの記事に書きましたので、参考にしてください。

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

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

以下のライブラリをアップデートしました。
nasm-2.09.07
libvpx-0.9.6-90
x264 rev.1924
xvidcore-1.3.1

今回より、自前でビルドしたGCC 4.6.0を使用しています。

また、-vfオプションのscaleと、-aspect、-sws_flagsオプションの組み合わせが、正常に動作するようになっています。

例えば、
-vf "scale=720:480" -aspect 16:9 -sws_flags lanczos+print_info
とすると、

Stream #0.0: Video: mpeg4, yuv420p, 720x480 [PAR 32:27 DAR 16:9], ...
[swscaler @ 05d3f0d0] Lanczos scaler, from yuv420p to yuv420p using MMX2

PARを自動で計算してくれて、Lanczos scalerが使用されます。


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

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

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

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

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

コンパイル環境:MinGW gcc4.6.0
binutils-2.21
mingwrt-3.18
w32api-3.17

各ライブラリのバージョンは、以下の通りです。
nasm-2.09.07
yasm-1.1.0
zlib-1.2.5
bzip2-1.0.6
faac-1.28(deleted)
gsm-1.0.13
lame-3.98.4
opencore-amr-0.1.2
openssl-1.0.0d
rtmpdump-2.3
libogg-1.2.2
aoTuV Beta6.02 (libvorbis-1.3.2)
libtheora-1.1.1
libvpx-0.9.6-90
x264 rev.1924 (make fprofiled)
xvidcore-1.3.1

最適化オプションは、以下のようにしています。
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-gpl --enable-version3 --enable-postproc --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libvorbis --enable-libtheora --enable-libxvid --enable-libvpx --enable-libx264 --disable-ffserver --disable-ffplay --disable-ffprobe --enable-avisynth --enable-small --enable-w32threads --extra-ldflags=-static --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse -fno-strict-aliasing"

※--extra-cflagsは、最適化の種類により異なります。
posted by あべちん at 04:10 | Comment(2) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
こんばんは。
いつもお世話になっています。

-vf scaleと-aspectとの組み合わせなのですが、挙動がいまいち納得いかなかったので自分なりに調べてみました。

まず結論を書きますと、どうやら-vf scaleを使用する時は、-aspectではなく、同じ-vfオプションのsetdarを使用する方が良いようです。

理由は、-vf scaleと-aspectを組み合わせでは、
  ・入力ファイル「720x480 DAR=16:9 PAR=32:27」
  ・出力ファイル「480x270 DAR=16:9 PAR=1:1」
など入力と出力でPARが変わる場合に正しい値が設定されないからです。

上の例で、「-vf "scale=480:270" -aspect 16:9」とすると、
  「入力の720x480に対してDAR=16:9でPARの計算し、
   そこで求められたPARを(リサイズされた)出力ファイルに設定。」
という謎動作で、結果は、
  「480x270 [PAR 32:27 DAR 512:243]」
となってしまいました。

そこで、-aspectを使用せず「-vf "scale=480:270,setdar=16:9"」にしたところ、
  「480x270 [PAR 1:1 DAR 16:9]」
と正しい結果を得る事が出来ました。


「-vf "scale=480:270" -aspect 16:9」時のログ:
--------
[buffer @ 02c69e90] w:720 h:480 pixfmt:yuv420p
[setdar @ 02d32220] a:16/9
[setdar @ 02d32220] w:720 h:480 -> dar:16/9 sar:32/27
[scale @ 02d322a0] w:704 h:480 fmt:yuv420p -> w:480 h:270 fmt:yuv420p flags:0x1200

Stream #0.0: Video: libx264 (hq), yuv420p, 480x270 [PAR 32:27 DAR 512:243], q=0-69, 200 kb/s, 2997 tbn, 23.98 tbc
--------
リサイズ前にPARの計算が行われ、それが出力に設定

「-vf "scale=480:270,setdar=16:9"」時のログ:
--------
[buffer @ 04553fa0] w:720 h:480 pixfmt:yuv420p
[setdar @ 02e216c0] a:16/9
[scale @ 02e21680] w:704 h:480 fmt:yuv420p -> w:480 h:270 fmt:yuv420p flags:0x1200
[setdar @ 02e216c0] w:480 h:270 -> dar:16/9 sar:1/1

Stream #0.0: Video: libx264 (hq), yuv420p, 480x270 [PAR 1:1 DAR 16:9], q=0-69, 200 kb/s, 2997 tbn, 23.98 tbc
--------
リサイズ後にPARの計算が行われ、それが出力に設定
Posted by 優 at 2011年04月02日 22:04
優さん、こんにちは。管理人です。
詳しい情報ありがとうございます。

確かに変ですね。
気が付きませんでした。

試しに2つの設定でエンコードしてみたところ、ファイルサイズが若干異なりましたが、PARとDARはどちらの設定でも正しい値になっていました。

表示される値がおかしいだけで、内部では正しい値になっているのかもしれません。

-vf scaleを使用する場合は、setdarを使用した方が間違いなさそうですね。
Posted by あべちん at 2011年04月06日 02:29
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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