2012年01月18日

FFmpeg rev.36900 ダウンロード

FFmpeg最新版(2012/01/17現在)、rev.36900(24860a9)のWindows用バイナリを置いておきます。

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

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

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

以下のライブラリをアップデートしました。
libcdio-0.84git-8238905
libvpx-v0.9.7-p1-267
x264 rev.2145


バイナリはどれを使っても大丈夫だと思いますが、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-8238905
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-267
x264 rev.2145 (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 01:09 | Comment(9) | TrackBack(0) | FFmpegダウンロード
この記事へのコメント
開発お疲れ様です。
ちょっと小耳に挟んだ情報なんですが、x264のr2145はバグを抱えているとの情報をどこかで見かけたのですが、こちらのFFmpegはDLして使っても問題ないでしょうか?
詳しくない人なんで、誤った情報でしたらすみません。
Posted by 通りすがりの人 at 2012年01月19日 02:00
こんばんわ。
またご指導頂きたくお邪魔致します。

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\ffmpeg" -y -i "<%TemporaryFile%>.aac" -i "<%InputFile%>" -acodec copy -vcodec libx264 -flags2 +mixed_refs -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\ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 10 -vframes 1 -vf scale=160:90 -an "<%OutputFile%>.JPG""
Command4="rm "<%TemporaryFile%>.wav""
Command5="rm "<%TemporaryFile%>.aac""

を使用して

Format : Matroska
Video #1
Format : AVC
Audio #2
Format : AC-3
Channel(s) : 6 channels
Sampling rate : 48.0 KHz

を変換したところ映像は無事変換されるのですが、音声が元のままコピーされて出力されてしまいます...

もしよければ間違いを指摘頂ければ幸いです。
Posted by 恵 at 2012年01月19日 02:16
恵さん
少し気になったことがあるので横から失礼します。
command3のjpg画像作成はよほど古いファームウェアでない限りはなくても問題ありません。
PSP自身が動画ファイルから勝手にサムネイルを作成してくれますので。

あとqtを使用してのaac作成ですけど、管理人さんが解説されているNeroEncAACを使用するという方法もあります。
動画のエンコードと音声の結合を別commandで行ったほうが綺麗に合成できますよ。
(同時に行なってはまったことがあります、自分、昔のバージョンですけど)

以下は自分が使用しているPSPように変換しているものです
参考にしてみてください(2Pass指定していますから処理時間はかかりますが)

Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -vn -acodec pcm_s16le -ac 2 -ar 44100 "<%TemporaryFile%>.wav""
Command1=""<%AppPath%>\cores\neroAacEnc" -if "<%TemporaryFile%>.wav" -lc -br 128000 -of "<%TemporaryFile%>.aac"
Command2=""<%AppPath%>\cores\ffmpeg" -threads 2 -y -i "<%InputFile%>" -deinterlace -pass 1 -passlogfile <%TemporaryFile%> -vcodec libx264 -coder 1 -flags +bitexact -flags2 +mbtree -g 150 -qcomp 0.7 -qmin 10 -qmax 51 -qdiff 4 -subq 6 -me_range 16 -i_qfactor 0.714286 -s 480x270 -r 29.97 -vb 2000k -aspect 16:9 -an -f psp "<%TemporaryFile%>.mp4""
Command3=""<%AppPath%>\cores\ffmpeg" -threads 2 -y -i "<%InputFile%>" -deinterlace -pass 2 -passlogfile <%TemporaryFile%> -vcodec libx264 -coder 1 -flags +bitexact -flags2 +mbtree -g 150 -qcomp 0.7 -qmin 10 -qmax 51 -qdiff 4 -subq 6 -me_range 16 -i_qfactor 0.714286 -s 480x270 -r 29.97 -vb 2000k -aspect 16:9 -an -f psp "<%TemporaryFile%>.mp4""
Command4=""<%AppPath%>\cores\ffmpeg" -y -i "<%TemporaryFile%>.aac" -i "<%TemporaryFile%>.mp4" -vcodec copy -acodec copy -async 100 -f psp "<%OutputFile%>.mp4""
Command5="rm "<%TemporaryFile%>.wav""
Command6="rm "<%TemporaryFile%>.aac""
Command7="rm "<%TimeStamp%>""
Command8="rm "<%TemporaryFile%>.mp4""
Command9="rm "<%TemporaryFile%>""
Command10="rm "<%TemporaryFile%>.mbtree""
Command11="rm "<%TemporaryFile%>-0.log""


Posted by KANAAN-PEPO at 2012年01月19日 17:49
はじめましてKANAAN-PEPO様コメント有難うございます。

僕も以前はNeroEncAAC利用していたのですが、新しいことへの挑戦ついでにqaac試し中なのですよw

NeroEncAACとqaac(QuickTimeの内部エンジン利用)かなり音質に差があるのでたのしいですよ(良し悪しは好みですが)

MP4boxで最後に結合だと上手くいくのですが...

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

出来れば使用ソフトやコマンドを少なくしたいので模索中なのですよw


Posted by at 2012年01月20日 03:25
上記書き込み名前忘れました...
失礼しました。
Posted by 恵 at 2012年01月20日 03:27
KANAAN-PEPO様のコメントを参考に動画のエンコードと音声の結合を別commandにしたらいけますね...

Title=PSP用 動画音声別結合(ffmpeg使用) H.264(QB15/23.976fps) AAC(vol-512/320k/Stereo)
Command0=""<%AppPath%>\cores\ffmpeg" -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\ffmpeg" -y -i "<%InputFile%>" -an -vcodec libx264 -flags2 +mixed_refs -bf 2 -coder 1 -s 480x272 -aspect 16:9 -r 23.976 -cqp 15 -g 300 -level 21 "<%TemporaryFile%>.MP4""
Command3=""<%AppPath%>\cores\ffmpeg" -y -i "<%TemporaryFile%>.aac" -i "<%TemporaryFile%>.mp4" -vcodec copy -acodec copy -async 100 -f psp "<%OutputFile%>.mp4""
Command4=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -f image2 -ss 10 -vframes 1 -vf scale=160:90 -an "<%OutputFile%>.JPG""
Command5="rm "<%TemporaryFile%>.wav""
Command6="rm "<%TemporaryFile%>.aac""
Command7="rm "<%TemporaryFile%>.mp4""

Command2で-anを指定した場合-f pspは削除しないとエラーになりますね。
因みにエラー内容は
Could not write header for output file #0 (incorrect codec parameters ?)

MP4box使用時にCommand3で#videoを指定しないと多重音声になりますし、-anが効いていないのかもです...
Posted by 恵 at 2012年01月20日 04:27
通りすがりの人さん、こんにちは。管理人です。

私が試した限りでは、x264 r2145とr2146のエンコードした動画のサイズは同じになりました。

どういう時に影響するバグなのか分かりませんでしたが、とりあえずFFmpeg本体ごと更新しましたので、新しい方をお試しください。
Posted by あべちん at 2012年01月20日 12:50
恵さん、KANAAN-PEPOさん、こんにちは。管理人です。

KANAAN-PEPOさん、コメントありがとうございました。


恵さん

音声が元のままコピーされるということは、音声がAC-3のMP4動画ができあがるということですよね?

恵さんの最初の設定で試してみたのですが、正しく音声がAACのMP4動画になって、音声が元のままコピーされるというのが再現できませんでした。

もう解決したようですが、Command2のどこかに、
-map 0:a -map 1:v
と追加してみてはいかがでしょうか。
Posted by あべちん at 2012年01月20日 13:00
こんばんは。
MKVコンテナとAC-3(6ch)の組み合わせがわるいのか、たまに駄目な動画がありますね。

-mapはたまに多重音声の時に必要なので、出来れば使わないでチャレンジしたかったのですよw
Posted by 恵 at 2012年01月21日 05:19
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

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


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

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