2012年01月07日

FFmpeg rev.36539 ダウンロード

FFmpeg最新版(2012/01/06現在)、rev.36539(4dfb74c)のWindows用バイナリを置いておきます。

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

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

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

以下のライブラリをアップデートしました。
libcdio-0.84git-2fb3228
polarssl-1.1.0
rtmpdump-2.4-20111223
libvpx-v0.9.7-p1-256


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

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

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

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

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

コンパイル環境:MinGW gcc4.6.2
binutils-2.22
mingwrt-3.20
w32api-3.17

各ライブラリのバージョンは、以下の通りです。
nasm-2.09.10
yasm-1.2.0
zlib-1.2.5
bzip2-1.0.6
libcdio-0.84git-2fb3228
gsm-1.0.13
libmodplug-0.8.8.4
lame-3.99.3
opencore-amr-0.1.2
vo-aacenc-0.1.1
vo-amrwbenc-0.1.1
polarssl-1.1.0
rtmpdump-2.4-20111223 PolarSSL版
libogg-1.3.0
aoTuV Beta6.03 (libvorbis-1.3.2)
libtheora-1.1.1
speex-1.2rc1
libvpx-v0.9.7-p1-256
x264 rev.2120 (make fprofiled)
xvidcore-1.3.2
libiconv-1.13.1
freetype-2.4.8
expat-2.0.1
fontconfig-2.8.0
fribidi-0.19.2
libass-0.10.0

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

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

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

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

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

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

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

※--extra-cflagsは、最適化の種類により異なります。
posted by あべちん at 08:28 | Comment(21) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
AACを含む変換で完了となっているのですがrmが動いていないようで、さらには変換後のOutputFileも見当たらないのですがどこかおかしいでしょうか?
音声はTempの中に完全な状態でありました
ffmpegは最新版Pen4を使いました

Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -ar 44100 "<%TemporaryFile%>".wav""


Command1=""<%AppPath%>\cores\neroAacEnc" -lc -br128000 -if "<%TemporaryFile%>.wav" -of "<%TemporaryFile%>.aac""


Command2=""<%AppPath%>\cores\ffmpeg" -y "<%TemporaryFile%>".aac -i "<%InputFile%>" -acodec copy -vcodec libxvid -flags bitexact+mv4 -s 512x288 -r 29.97 -b 1024k -f 3gp "<%OutputFile%>.mp4"" -map 1:v -map 0:a


Command3="rm"<%TemporaryFile%>.wav""


Command4="rm"<%TemporaryFile%>.aac""
Posted by at 2012年01月07日 20:12
ななしさん、こんにちは。管理人です。

ファイルが残ってしまうのは、Command3とCommand4のrmとそのすぐ右にある「"」の間に、スペースが入っていないのが原因ではないでしょうか?
間に半角スペースを入れてみてください。

あと、Command2の「-map」2つは「-f 3gp」の後ろあたりに移動してみてください。

それでもダメでしたら、エラーメッセージなども転載していただけると、解決のヒントになると思います。
Posted by あべちん at 2012年01月07日 20:45
ご指摘いただいた点を改良してみた結果のエラーです
Please use -b:a or -b:v, -b is ambiguous
Invalid input file index: 1.
Posted by at 2012年01月07日 21:05
ななしさん

急いでお返事を書いたので見落としていたのですが、他にもいろいろおかしい所がありますね。

まずは、ちゃんと動作する設定例をそのままコピーして、必要な所だけ修正すれば、半角スペースが抜けているとか、単純なミスは無くなると思います。

いろいろお試しください。
Posted by あべちん at 2012年01月08日 18:25
大変お騒がせいたしました
直してみたところ正常に動きました
申し訳ありませんでした
Posted by at 2012年01月09日 13:34
ななしさん、こんにちは。管理人です。

無事動作して良かったです。

全部お教えしても良かったんですが、ご自分で直すと記憶に残るので、後々その方が良いかと思いました。

またお越しくださいませ。
Posted by あべちん at 2012年01月09日 22:04
はじめまして恵と申します。

携帯動画変換君のFFmpegをrev.36539に入れ替えて

Title=PSP用 H.264(QB15/23.976fps) AAC(vol-512/320k/Stereo)
Command0=""<%AppPath%>\cores\ffmpeg(oto)" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -ar 44100 -vol 512 "<%TemporaryFile%>.wav""
Command1=""<%AppPath%>\cores\QTportable2\qaac.exe" "<%TemporaryFile%>.wav" -c 320 -o "<%TemporaryFile%>.aac""
Command2=""<%AppPath%>\cores\ffmpeg36030" -y -i "<%TemporaryFile%>.aac" -i "<%InputFile%>" -acodec copy -vcodec libx264 -bf 2 -coder 1 -s 480x272 -aspect 16:9 -r 23.976 -cqp 15 -g 300 -level 21 -f psp "<%OutputFile%>.MP4""
Command3=""<%AppPath%>\cores\ffmpeg36030" -y -i "<%InputFile%>" -f image2 -ss 10 -vframes 1 -vf scale=160:90 -an "<%OutputFile%>.JPG""
Command4="rm "<%TemporaryFile%>.wav""
Command5="rm "<%TemporaryFile%>.aac""

で変換するとPSPで非対応データになってしまいます。
PSPのデータ情報を見たところ、ビデオコーデックが−となっていました。
もしよろしければ原因(間違い部分?)と対処方法を、お教え頂けないでしょうか。

Posted by 恵 at 2012年01月10日 12:52
<%AppPath%>\cores\ffmpeg36030
では無く
<%AppPath%>\cores\ffmpeg36539
です。
Posted by 恵 at 2012年01月10日 12:59
恵さん、はじめまして。管理人です。

試してみたところ、-flags2を省略するとdct8x8がONになって、High profileになってしまうようです。

Command2に、
-flags2 +mixed_refs
などを追加するか、理由があって-flags2を省略しているのであれば、
-vprofile main
を追加して、Main profileにしてみてください。

プロファイルが何になっているかは、ffmpegでエンコード中のログに表示されます。

PSPで再生可能なプロファイルとレベルは、マニュアルか何かに書いてあると思います。

プロファイルを変えても直らなければ???
今のところ思いつきません…。
Posted by あべちん at 2012年01月10日 17:24
素早いコメント有り難うございます。

無事再生可能な変換になりました。

プロファイルやlevelとは...
全く不勉強な限りでお恥ずかしいですねw
Posted by 恵 at 2012年01月10日 21:32
恵 さん、
Command2=""<%AppPath%>\cores\ffmpeg36030" -y -i "<%TemporaryFile%>.aac" -i "<%InputFile%>" -map 1:v -map 0:0 -acodec copy -vcodec libx264 -preset fast -tune film -profile main -r 29.97 -crf 27 -level 30 -s 480x272 "<%OutputFile%>.k.MP4""

でどうでしょう? それか、AACのビットレートが高すぎるのかもしれません。一応192kbpsでも再生できた事はありますが、160k以下推奨とどこかで読んだ気がします。
Posted by kamedo2 at 2012年01月11日 18:47
恵さん、こんにちは。管理人です。

私も、まさか-flags2を省略するとHigh profileになるとは思いませんでしたので、気づかなくてもしょうがないですね。

無事、再生できるようになって良かったです。
Posted by あべちん at 2012年01月11日 20:28
kamedo2さん、こんにちは。管理人です。

コメントありがとうございます。
再生できない直接的な原因は、High profileになっていたことだったようです。

音声のビットレートも、何かしら影響があるかもしれませんね。

ちなみに、現在のプロファイルオプションは、音声は-aprofile、映像は-vprofileとなっています。
Posted by あべちん at 2012年01月11日 20:34
こんばんは。
今の所音声は320kbpsでも再生可能の様です。(結構前から320kbps仕様ですが一度も問題ないですね)

それどころか-cqpを1(むちゃくちゃな容量になりますが)にしても再生しちゃう位、ビットレートには寛大ですよPSPはw

解像度とプロファイルやlevel(2.1か3.0)とか容量が2GBを超えない(これはメディアのフォーマット絡み)を、守れば意外に適当な変換で再生可能な様ですね。

Posted by 恵 at 2012年01月11日 22:28
恵さん、こんにちは。管理人です。

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

PSPって、けっこう再生能力高いんですね。
今回の件で、私もいろいろと参考になりました。
Posted by あべちん at 2012年01月14日 18:05
>PSPって、けっこう再生能力高いんですね。
はい、だいぶ高いです。
解像度こそ480x272(16:9)ですが、720x480/1.5kbpsのファイルの再生も可能です。
また、640x480なら2kbpsでも再生できます。
専用にエンコードしてなくても再生できるのは大きいです。

Posted by KANAAN-PEPO at 2012年01月15日 18:21
Craving Explorerのffmpegがなぜか作動しなくなりこちらのffmpegを使用したのですがpc初心者なものでよくやり方が分からず・・・
取りあえずffmpegを入れ替えることは出来たのですが動画をmp4に変換できないのですがどうしたらよろしいでしょうか?・・
無知でもうしわけないです・・・
Posted by アルティナ at 2012年01月16日 20:10
KANAAN-PEPOさん、こんにちは。管理人です。

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

単位はMbpsですよね?
ググったら、PSPの再生能力の限界に挑戦している方がいて、なかなか興味深かったです。
Posted by あべちん at 2012年01月16日 21:41
アルティナさん、こんにちは。管理人です。

Craving Explorerは超有名なソフトですよね。
ですが、なんと私、使用したことがないのです!
Oh no!

まずは、動作しなくなる前後で何が変わったのか思い出してみてください。

特定の動画ソースだけでエラーになるのか、今までエンコードできた物もエラーになるのかなど。

エラーメッセージなど、こちらに転載していただけると、何か解決のヒントになるかもしれません。
Posted by あべちん at 2012年01月16日 21:50
管理人さん
わかりました!!
何か違ったことがあればまた書き込みさせていただきます!
Posted by アルティナ at 2012年01月16日 22:10
失礼致しました
単位間違ってましたm(__)m
おっしゃるとおりです

Vita用の再生動画ファイルの作成などますます適用範囲が増えそうですね。
何か掴みましたらできるだけ正確(汗)に情報展開します。
Posted by KANAAN-PEPO at 2012年01月17日 21:32
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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