FFmpeg最新版(2012/02/07現在)、rev.37610(0349d61)のWindows用バイナリを置いておきます。
内蔵AACエンコーダは、まだ実験段階のため、以前使用していたlibfaacや、neroAacEncに比べると音質は良くないです。
まともに動作するようになるまでは、neroAacEncを使用した音声AAC動画の作成方法を、こちらの記事に書きましたので、参考にしてください。
また、x264について、一番多く質問が寄せられるエラーの説明を記事にしましたので、思い当たる方は、ぜひご一読ください。
x264のエンコードでエラー(Error while opening encoder for output stream #0.0)
ffmpeg_bin-37610.zip
ffmpeg_bin_pentium4-37610.zip (Pentium4最適化版)
ffmpeg_bin_core2-37610.zip (Core2最適化版)
ffmpeg_bin_athlon64-37610.zip (Athlon64最適化版)
ffmpeg_bin_phenom-37610.zip (Phenom最適化版)
以下のライブラリをアップデートしました。
libcdio-0.84git-f778284
libvpx-v1.0.0-31-g45f4b87
x264 rev.2164
オリジナルの方は、主にx264関連の「-flags2」が独立したオプションで指定するようになり、「-partitions」オプションは書式が変わりました。
・従来の設定例
-flags2 +mixed_refs+mbtree -partitions parti4x4+partp8x8+partp4x4
・変更後の設定例
-mixed-refs 1 -mbtree 1 -partitions pi4x4,pp8x8,pp4x4
その他、以下のように変わりました。
「-flags2 +dct8x8」→「-8x8dct 1」
「-flags2 +fastpskip」→「-fast-pskip 1」
すべて確認したわけではありませんので、他にも変わっているかもしれません。
とりあえず今回は、従来のオプションも使えるようにしています。
バイナリはどれを使っても大丈夫だと思いますが、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.6
bzip2-1.0.6
libcdio-0.84git-f778284
gsm-1.0.13
libmodplug-0.8.8.4
lame-3.99.4
opencore-amr-0.1.2
vo-aacenc-0.1.1
vo-amrwbenc-0.1.1
polarssl-1.1.1
rtmpdump-2.4-20111223 PolarSSL版
libogg-1.3.0
aoTuV Beta6.03 (libvorbis-1.3.2)
libtheora-1.1.1
speex-1.2rc1
libvpx-v1.0.0-31-g45f4b87
x264 rev.2164 (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は、最適化の種類により異なります。
2012年02月08日
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/53496627
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
http://blog.sakura.ne.jp/tb/53496627
※言及リンクのないトラックバックは受信されません。
この記事へのトラックバック
いつも、有難くこのエンコーダを利用させてもらっています。
質問なんですが、これはビルド時にSSEをオプション指定していますよね。
ということは、AVXもオプション指定できるのですか?
そろそろCORE iシリーズは普及していると思いますし、当方CORE i7なので、AVX対応してくれたら有難いなぁと思った所存であります。
うちにはビルドできる環境が無いので、対応しているのなら、勝手な要望で申し訳ないですが、AVX有効化ビルドを置いといてくれると助かります。
Intel系ならcore2版が良いかとは思いますが、以前、最適化なし版が一番速かったという報告もありました。
逆に、どれがダメということはありませんので、お好みでお使いください。
Core i7マシンを提供してくだされば、喜んでビルドします!
というのは半分冗談ですが…。
「-mfpmath=sse -sse」の代わりに「-mavx」を付ければ良いだけなのですが、ビルドしたとしても、Core i7マシンを持っていませんので、動作確認できません。
配布しているバイナリは、実は、どれを使っても、たいした違いはありません。
ffmpeg -benchmark [以下通常のオプション]
と実行して、処理にかかった時間を比べてみると分かると思います。
最適化なし版と、「-mfpmath=sse -sse」有り版の2つにしようかと思っているくらいです。
現在配布しているバイナリでも、もう少し速くできる余地はありますが、互換性を考えて、ほどほどにしています。
そのうちCore i7マシンを手に入れたら、試してみたいですね。
あいななさんが、Core i7に最適化したバイナリをビルドして配布したら、需要があるかもしれませんよ。
管理人さん 皆さん
みっどないとニャ(=^∇⌒=)ノ
管理人さんちょっとおひさニャ(=⌒o⌒=)ノ
宜しくお願いします。。。
sox を使って2倍速のエンコで
最近の ffmpeg を使うと映像が無くて音声だけになります。。。
ちょっと前のは大丈夫なんですが・・・
多分 yuv のコマンドが足りないと思うのですが何が足りないか解りますか?
Title= 2倍速
Command0=""<%AppPath%>\cores\ffmpeg" -y -i "<%InputFile%>" -s 176x144 -aspect 4:3 -r 15000/1001 "<%TemporaryFile%>.yuv" -i "<%InputFile%>" -acodec pcm_s16le -ac 2 -ar 44100 -ab 1411k -f wav "<%TemporaryFile%>.wav""
Command1=""<%AppPath%>\cores\ffmpeg" -y -s 176x144 -aspect 4:3 -r 30000/1001 -i "<%TemporaryFile%>.yuv" -an -vcodec libx264 -s 176x144 -aspect 4:3 -r 30000/1001 -b 128k -coder vlc -qmin 10 -qmax 40 -maxrate 768k -bufsize 512k -qcomp 0.8 -g 300 -sc_threshold 40 -keyint_min 30 -partitions +pi4x4+pp8x8+pp4x4 -me_method umh -me_range 24 -refs 3 -qdiff 4 -subq 8 -cmp +chroma -mixed-refs 1 -mbtree 1 -i_qfactor 0.714286 -bf 0 -wpredp 0 -flags +alt+mv4+loop -threads 0 -f mp4 "<%TemporaryFile%>.mp4""
Command2=""<%AppPath%>\cores\sox" "<%TemporaryFile%>.wav" "<%TemporaryFile%>_1.wav" tempo 2.0 30"
Command3=""<%AppPath%>\cores\neroAacEnc" -br 32000 -he -if "<%TemporaryFile%>_1.wav" -of "<%TemporaryFile%>.m4a""
Command4=""<%AppPath%>\cores\ffmpeg" -i "<%TemporaryFile%>.mp4" -i "<%TemporaryFile%>.m4a" -y -vcodec copy -acodec copy -f 3gp "<%OutputFile%>.3gp""
Command5="cmd /c "del "<%TemporaryFile%>*.*"""
宜しくお願いします。。。
2倍速動画作ってみました。
なんだか、面白いですね。
原因は分からなかったのですが、いつの間にか直って、コマンドを修正しなくても正常に出力されるようになっていました。
ffmpeg rev.37798をアップしましたので、お試しください。
管理人さん 皆さん
おはよニャ(=^∇⌒=)ノ
ffmpeg rev.37798 で変換すると [Error:-1073741819] になります。。。
cygwin1.dllとcygz.dllを入れ替えてもダメでした。。。
Command0を変換君ffmpegで変換すれば大丈夫なんですが・・・
暫く、Command0を変換君ffmpegにして作ります。。。
ありがとです(=^・^=)ノ
( ゚д゚)
(つд⊂)ゴシゴシ
(;゚д゚)
(つд⊂)ゴシゴシ
_, ._
(;゚ Д゚)
いろいろ試したら、元の動画の種類によって、エラーになるのとならないのがありますね。
Command0の"<%TemporaryFile%>.yuv"の前に、
-f rawvideo
を追加してみてください。
たぶん今度は大丈夫だと思います。
大丈夫だと思ったら、MPEG-PSなど、それでもエラーになるのがありますね。
原因いまだに分からず…。
管理人さん
こんばんニャ(=^∇⌒=)ノ
上のiniで -wpredp を間違えてました。。。
-weightp に変わったんですよね(=^艸^=)
-f rawvideo を付けたら出来るのが増えましたが
まだエラーが出るのが有ります。。。
いろいろありがとです(=^・^=)ノ