2007年12月23日

FFmpeg rev.11306 ダウンロード

2007/12/23時点でのFFmpeg最新版、rev.11306のWindows用バイナリを置いておきます。

ffmpeg_bin-11306.zip

ffmpeg_bin_pentium4-11306.zip (Pentium4最適化版)

ffmpeg_bin_athlon64-11306.zip (Athlon64最適化版)

2008/09/15 削除しました。

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

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

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

携帯動画変換君の設定は、こちらの記事を参考にしてください。

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

rev.11142辺りから、携帯動画変換君でこんなエラーが出るようになりました。

A>ConvertMovieToFile:NewMovieFromFile Error
A>Dialog : 処理実行中にエラーが発生しました [Error:-8971]

自分でコンパイルしている方で、上記のようなエラーが出るようになった場合は、こちらの修正を試してみてください。

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

各ライブラリのバージョンは、以下の通りです。
nasm-2.00
yasm-0.6.2
pthreads-w32-2-8-0-release
zlib-1.2.3
a52dec-0.7.4
amrnb-7.0.0.0 (3GPP 26104-700)
amrwb-7.0.0.2 (3GPP 26204-702)
faac-1.26
faad2-2.6
gsm-1.0.12
lame-3.97
libnut-512
libogg-1.1.3
libvorbis-1.2.0
libtheora-1.0beta2
x264 rev.714
xvidcore-1.1.3

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

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

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

configureオプションは以下の通りです。
$ ./configure --enable-memalign-hack --enable-pp --enable-swscaler --enable-gpl --enable-liba52 --enable-libamr-nb --enable-libamr-wb --enable-libfaac --enable-libfaad --enable-libgsm --enable-libmp3lame --enable-libnut --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libxvid --disable-ffserver --disable-ffplay --enable-avisynth --enable-small --enable-pthreads --extra-ldflags=-static --extra-cflags="-fno-strict-aliasing"

configureのメッセージはこちら
posted by あべちん at 15:00 | Comment(9) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
FFMpegに関する貴重な情報をありがとうございます。
いつもビルドの参考に拝見させていただいています。

当方も携帯電話やiPodの動画ファイル作成にFFMpegを利用してきたのですが、
r11142からフラグ系のオプションが効かなくなり常用していた画質向上の設定が使用できず困っていました。
待っては見ましたが、対処される雰囲気にないので当方にて仮対処してみました。
何かの参考になれば幸いです。

<修正内容>
問題の原因はav_get_string()で得られる値は設定されたフラグを16進の文字列に変換したものであるにも関わらず、av_set_string()にそれを受け付ける仕組みがないことにあります。
なので、av_set_string()に16進の文字列も解釈できる仕組みを入れてみました。

以下、本修正に関するpatchファイルの内容です。
「A>Dialog : 処理実行中にエラーが発生しました [Error:-8971]」も同件問題のはずです。この問題の対処を行わずにご使用ください。

※当方ffmpegのすべて動作を把握しているわけではありませんので、本対処により別の問題が発生してしまう可能性があるかもしれませんが、その点はご了承ください。

*** libavcodec/opt.c Mon Dec 24 04:27:03 2007
--- libavcodec/opt.c Mon Dec 24 04:08:46 2007
***************
*** 115,120 ****
--- 115,136 ----
return -1;
}

+ static int64_t hexstr2int(const char *val) {
+ int i;
+ int ret;
+ int64_t res = 0;
+
+ for(i = (strlen(val) - 1) * 4; i >= 0; i -= 4){
+ ret = hexchar2int(*val++);
+ if(ret < 0){
+ res = 0;
+ break;
+ }
+ res += (ret << i);
+ }
+ return res;
+ }
+
const AVOption *av_set_string(void *obj, const char *name, const char *val){
const AVOption *o= av_find_opt(obj, name, NULL, 0, 0);
if(o && o->offset==0 && o->type == FF_OPT_TYPE_CONST && o->unit){
***************
*** 180,185 ****
--- 196,202 ----
if(o->type == FF_OPT_TYPE_FLAGS){
if (cmd=='+') d= av_get_int(obj, name, NULL) | (int64_t)d;
else if(cmd=='-') d= av_get_int(obj, name, NULL) &~(int64_t)d;
+ else if(buf[0] == '0' && buf[1] == 'x') d = hexstr2int(&buf[2]);
}else if(cmd=='-')
d= -d;

Posted by ひでぼ at 2007年12月24日 05:17
あと。。
これは不具合とは関係ないのですが、
実行速度を最適化するときには、--enable-small は外したほうが良いかもしれません。
--enable-small が有効の場合、gccに-Os(サイズの最適化)が付いてしまうので、-O[n]は効かなくなってしまうように思われます。
Posted by ひでぼ at 2007年12月24日 05:21
ひでぼさんのパッチためさせてもらいました
僕もiPodの変換で使ってますが
使ってみたところ問題なく利用できました

r11142から困ってました
ありがとうございます

Posted by 蓄電 at 2007年12月25日 14:11
対応するオプションを確認したくて、-hをつけて実行したのですが、アプリケーションが強制終了してしまいます。
何かこちらの環境がいけないのでしょうか。
Posted by へみんぐ at 2007年12月26日 10:40
管理人様
以前お邪魔した skal28です。
mingw と msysの設定がうまくいってなくビルドするのに苦労しましたが このサイト及び他のサイトの情報を見ながら本日無事 rev.11332をビルドできました。本当に参考になりました。
ありがとうございます。
これからも貴重な情報を掲載お願いいたします。
Posted by skal28 at 2007年12月28日 13:39
管理人様
いつもこのサイトを見ながら
携帯動画変換君と悪戦苦闘している毎日です
そこで質問なのですがこのFFmpeg最新版、rev.11306
を使おうとすると強制的に終了されるのですが
こちらの環境のせいでしょうか?
Posted by shin at 2007年12月31日 09:05
皆様、コメントありがとうございます。管理人です。

>ひでぼさん
おー、素晴らしい。
私の適当な修正と違って、理にかなっていますね。
--enable-smallについては、今度ベンチをとってみます。

>蓄電さん
ご報告ありがとうございます。
私も、時間がある時に確認してみます。

>skal28さん
コンパイル出来て良かったですねー。
skal28さんがはまった所など、他の方にも参考になるかもしれませんので、面倒でなければ、教えていただけるとありがたいです。

>へみんぐさん、shinさん
もしかして、CPUはSempronでしょうか?
私の環境では問題ないのですが、携帯動画変換君のBBSでも、Sempronでエラーになるという方がいました。
時々コメントしてくださっている、あいすさんもSempronだったかもしれません。
私はコンパイルしているだけですし、エラーが再現できないと対処のしようがないので、あまり期待しないで下さいね。
何か情報を見つけたら、お知らせします。
Posted by あべちん at 2007年12月31日 14:20
あけましておめでとうございます

--enable-smallのほう自分なりに検証してみました

いくつかの動画を-benchmarkをつけて比較してみました
COREDUOのノートで検証しました
が--enable-smallの無いほうが気持ち早くなっていました
2分ぐらいのMPEGを変換して差を求めると大体1秒ぐらいの差がありました
-benchmarkの場合CPUの使用時間で出るのでデュアルコアのCOREDUOの場合
実時間の差は半分の0.5秒になると思います

環境によって変わってくると思いますが

サイズ圧縮でしたら
僕はUPXを使っています

--enable-small 無し8MB
--enable-small 有り6MB
UPXで--enable-small 無しを圧縮 2MB

こちらのほうも比較してみましたが
メモリー使用量は上がりますが
処理時間はUPX圧縮前と後で
ほとんど変わらなかったです


Sempronについてですが
Sempronと一言にいってもSSE2対応だったり対応じゃなかったり
型によって違いがあるようです
憶測ですがその辺が関係してるのかもしれません
どのバージョンのSempronかも調べてみるといいと思います
SSE2対応ソフトが動かないで昔知り合いがとらぶっていました
Posted by 蓄電 at 2008年01月05日 02:55
明けましておめでとうございます。
蓄電さん、いつもありがとうございます。
-benchmarkなんていうオプションがあったのですね。初めて知りました。
近いうちに試してみようと思います。

SSE2非対応のSempronがあるのですか…。
私の環境では確認できないので、どなたか確認してくださるのを待つしかないですね。

Posted by あべちん at 2008年01月07日 08:00
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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