2011年07月31日

FFmpeg rev.31700 ダウンロード

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

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

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

2011/08/01 追記
rev.31698(3b5ddf0)をアップした後に更新されていたので、差し替えました。
ffmpeg_bin-31700.zip
ffmpeg_bin_pentium4-31700.zip (Pentium4最適化版)
ffmpeg_bin_core2-31700.zip (Core2最適化版)
ffmpeg_bin_athlon64-31700.zip (Athlon64最適化版)
ffmpeg_bin_phenom-31700.zip (Phenom最適化版)

以下のライブラリをアップデートしました。
libvpx-0.9.6-485
x264 rev.2044

今回より、configureオプションを以下のように変更しました。
エンコード速度が、若干速くなりました。
--enable-small 無し
--optflags="-O2 -finline-functions" 追加


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

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

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

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

FFmpegのコンパイルは、以下の記事を参考にしてください。
FFmpegのコンパイル (2011/07/31) w32threads

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

各ライブラリのバージョンは、以下の通りです。
nasm-2.09.10
yasm-1.1.0
zlib-1.2.5
bzip2-1.0.6
gsm-1.0.13
lame-3.98.4
opencore-amr-0.1.2
vo-aacenc-0.1.1
vo-amrwbenc-0.1.1
polarssl-0.99-pre5
rtmpdump-2.4 PolarSSL版
libogg-1.2.2
aoTuV Beta6.03 (libvorbis-1.3.2)
libtheora-1.1.1
speex-1.2rc1
libvpx-0.9.6-485
x264 rev.2044 (make fprofiled)
xvidcore-1.3.2

最適化オプションは、以下のようにしています。

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

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

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

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

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

configureオプションは以下の通りです。
$ ./configure --enable-gpl --enable-version3 --enable-postproc --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libgsm --enable-libmp3lame --enable-librtmp --enable-libspeex --enable-libvorbis --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libxvid --enable-libvpx --enable-libx264 --disable-ffserver --disable-ffplay --disable-ffprobe --enable-avisynth --enable-w32threads --extra-ldflags=-static --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse" --optflags="-O2 -finline-functions"

※--extra-cflagsは、最適化の種類により異なります。
posted by あべちん at 05:53 | Comment(19) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
管理人さん、こんばんは。変換君でここのffmpegを使わせてもらってます。

質問なのですが、古いffmpeg(20100420 rev22912)ではエンコード可能でしたが、この新しいffmpegに変えたところAvisynthの読込時の「"<%InputFile%>"」で日本語が文字化けしているようで変換できなくなりました。
なお、直接ffmpegでのエンコードは日本語ファイルも問題ありません。

この問題についてご存じでしたら教えていただけるとありがたいです。
Posted by むしたろう at 2011年08月02日 23:19
むしたろうさん、こんにちは。管理人です。

ご訪問ありがとうございます。

日本語のファイル名が文字化けするということでしょうか?
ファイル名の問題だけでしたら、ファイル名を変更するというのではダメなのでしょうか。

Avisynth経由でなければならないのは、フィルタをかけたりしているからでしょうか。

もう1年以上も前で、何が変わってしまったのかも分かりませんので、どうしても最新のffmpegを使いたいのであれば、代替の方法を考えた方が手っ取り早いのではないかと思います。
Posted by あべちん at 2011年08月03日 12:32
管理人さん、おはようございます。
お返事ありがとうございます。

ファイル名はパスとavsに2バイト文字がなければ可能でしたが、変換元のデータに日本語名が多いためそのまま可能な方が都合がよかったためです。

Avisynthはインターレース解除に使用しているため外せないことと、AVS_Skeltonの読込にも影響してしまうため、ffmpegの内部の引数の扱いなどの仕様変更でもあったのではないかと考え質問をさせて頂きました。

やはり一年以上前のこととなると難しいですね。
自分でももう少し調べ直してみて、ダメであれば代わりの方法を考えてみようと思います。

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

Posted by むしたろう at 2011年08月04日 05:40
ご無沙汰しております

ffmpeg29704では正常にエンコードできるファイルが本バージョンではエンコードの途中でerrorを履いて落ちるようになりました。
x264の設定が変わったためでしょうか?
エンコード元は、BDから取り出したTSファイルとDVDから取り出したPSファイルです。
Posted by KANAAN-PEPO at 2011年08月05日 17:02
KANAAN-PEPOさん、こんにちは。管理人です。
お久しぶりです。

rev.29704からはだいぶ変わっていますし、エンコードの途中で落ちるというのが謎ですね。

エラーメッセージとか、何か手がかりになる情報があると、私がお答えできなくても、どなたか答えてくださるかもしれません。

…って、なんだかいつも同じような返事をしているような?

こだまでしょうか?
いいえ、デジャブです。
Posted by あべちん at 2011年08月09日 00:02
こんばんは。uniと申します。

変換君でこちらのffmpegを使わせていただき、PSP用に動画をエンコードしているのですが、rev.31632から

[mp4 @ 02b2f4c0] Codec for stream 0 does not use global headers but container format requires global headers
strptime() unavailable on this system, cannot convert the date string.

というメッセージがログに表示されるようになり、エンコードした動画がPSP上で破損ファイルとして認識され、再生できなくなってしまいました。

rev.31420までは正常に再生できました。

ログのメッセージにある「グローバルヘッダ」というものが必要なんでしょうか?
Posted by uni at 2011年08月10日 00:22
uniさん、こんにちは。管理人です。

ご訪問ありがとうございます。

また謎なエラーですね。

試しに -flags +loop などとなっていたら、
-flags +loop+global_header
というように、フラグを追加してみてください。

これで変わらなければ、今のところ、他に思い当たる事がありません。

strptime() unavailable on this system, cannot convert the date string.
というのは、いつも出るメッセージなので、気にしなくても良いです。
Posted by あべちん at 2011年08月10日 22:38
はじめまして、あいななと申します。

ここのffmpegを変換君に入れて使わせて頂いています。
r31420までは普通にエンコ出来たのですが、r31632から(r31700も)、ファイルをドロップして開始した時点で、ログの最後に

Missing=

と出てエラーを吐いてしまいます。

r31400からr31632にかけて、有効にするとまずいオプションなどは増えたのでしょうか?
Posted by あいなな at 2011年08月11日 11:36
こんにちは。
ご回答ありがとうございます。

-flags に +global_header を書き加えたところ、PSP上で正常に再生できました。

余談ですが、rev.31632とrev.31700で +global_header のフラグを追加せずにエンコードした動画は、コーデックチェッカーで、プロファイルなどが読み取れませんでした。

rev.31420まででエンコードした動画、rev.31632とrev.31700で +global_header のフラグを追加してエンコードした動画は問題無いようです。

ありがとうございました。
Posted by uni at 2011年08月11日 18:36
uniさん、こんにちは。管理人です。

解決して良かったです。

その後、再確認したところ、
-flags loop
のように、先頭に + を付けないと、デフォルト値がクリアされて「loop」のみが有効になります。

-flags +loop
のように、先頭に + を付けると「デフォルト値+loop」が有効になります。

+global_header はデフォルトで有効になっているので、
-flags +loop
と設定すれば、問題ないようです。
Posted by あべちん at 2011年08月12日 14:24
あいななさん、はじめまして。管理人です。

ご訪問ありがとうございます。

Missing というメッセージを出すのはmetadata関連のようですが、その後ろに何か出ていませんでしたか?

何が変わってエラーが出るようになったのかは分かりません。
Posted by あべちん at 2011年08月12日 14:31
ご回答ありがとうございます。

ログは

Missing=
error:1
エラーが発生しました。中断します。

のような図になっており、殆ど手がかりがありません。
error:1自体、いろいろな原因で発生するらしいので、特定できずにいます。
Posted by あいなな at 2011年08月12日 17:00
こんばんは。

-flags2 でデフォルト値を使いたくなかったので、先頭の項目に + を付けていなかったのですが、どうやら -flags では同じことはせずに + を付けた方が無難そうですね。

-flags の先頭の項目に + を付けてエンコードした動画も、PSP上で問題なく再生できました。

どうもありがとうございました。
Posted by uni at 2011年08月12日 22:11
あいななさん、こんにちは。管理人です。

入力ファイルを変えてみるとか、あやしいオプションを1個ずつ削除して、エラーの原因を特定するしかなさそうですね。

一番あやしいオプションは -metadata ですが、使用していなければ、見当が付きません。
Posted by あべちん at 2011年08月14日 10:10
ご回答ありがとうございます。

やはりしらみつぶししかないですか〜
では、やってみます。

ありがとうございました。
Posted by あいなな at 2011年08月14日 11:02
>あいななさん

もしかしたらもう解決しているかもしれませんが、
「-timestamp 〜」を使っていたら削ってみてください。
最近僕も同じエラーでハマって上のオプションを削ることで回避できました。
Posted by 優 at 2011年08月14日 20:36
優さん、こんにちは。管理人です。

コメントありがとうございます。

その後、あいななさんは解決できたのでしょうかね?

他にも、同じエラーで困っていた方もいらっしゃると思いますので、どこかで、優さんのコメントが役に立っていると思います。
Posted by あべちん at 2011年08月30日 11:43
あべちんさん
こんばんは
ご無沙汰してます

自分も
Missing=
error:1
で困ってたんですが
優さんの書き込みをみて
「-timestamp 〜」を削除したら
うまくいきました
ありがとうございました!!
Posted by 蓄電 at 2011年08月31日 23:34
蓄電さん、こんにちは。管理人です。
お久しぶりです!

お返事が遅くなってすみません。

いろいろ試して、エラーが再現できなかったので確認できなかったのですが、思ったより、困っている方が大勢いるのかもしれませんね。

ご報告ありがとうございました。
Posted by あべちん at 2011年09月06日 09:19
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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