FFmpegでのH.264関係の設定について。
20010.2.10更新
・FFmpeg
rev.15151以降、
Dolby
Digital Plus(EAC3) が扱えるようです。
・FFmpeg
rev.15340(前後)以降、
-me
オプションと -flags の trell が無効になりました。
・FFmpeg
rev.15533(前後)以降、
-brdo
と -flags2 の brdo が消えました。
品質を以前と同じにするには変わりとして、-subq
を 6から7に上げるといいらしいです。
・FFmpeg
rev.16311(前後)以降、
-loop、-parti*
、-slice 、-chroma が消えました。
-loop
1 は-flags loop 、
-parti*
は -partitions parti4x4+parti8x8
、
-slice
は -flags slice 、
-chroma
は -cmp chroma で似た結果になるらしいです。
・FFmpeg
rev.16905以降、
HE-AAC
デコードの際、 libfaac が使用されず、
FFMpeg 内蔵のデコーダーが使用されて、
HE-AAC
が正常にデコード出来ないという問題
([aac
@ 0x16001e0]SBR not implemented.
Update your FFmpeg version to the
newest one from SVN.
If
the problem still occurs, it means
that your file has a feature which
has not been implemented.)
が修正されたようです。(FFmpegコンパイル作者様サイト「お気に入りの動画を携帯で見よう」より)
これにより
HE-AAC が正常に変換できるようになり、旧リビジョンで作成した動画に比べ音質が改善されると思います。
(実際、手持ちの動画で試したところ、改善が体感できました。ちなみに
HE-AAC はニコニコ動画で良く使われています。)
・FFmpeg
rev.17735以降、
-title
オプションが廃止され、-metadata
title="hoge" などのように設定する仕様になっています。
-title
オプションを使用する場合は、-metadata
形式にするか、旧rev.をご利用下さい。
-metadata
で指定できるものは以下の通りです。
title,
author, copyright, comment, album,
year, track, genre, artist, creator,
written_by, lead_performer, description,
albumtitle, date_written, date_released,
tracknumber, part_number
複数指定する場合は、-metadata
title="hoge" -metadata
author="huga" ...などのように、-metadata
を繰り返してください。
(FFmpegコンパイル作者様サイト「お気に入りの動画を携帯で見よう」より)
・FFmpeg
rev.18822以降、
faac
のコードの一部が実は LGPL に則っていないんじゃないの?とのことで、
libfaac を含んだ FFmpeg は再配布できないようになりました。
faad2
は大丈夫ということで、今回より、
AAC のデコード(入力)はできますが、
AAC のエンコード(出力)はできません。
(FFmpegコンパイル作者様サイト「お気に入りの動画を携帯で見よう」より)
うーん、困りましたね… とりあえずは
rev.18607 以前を利用するしかないようです。
オプション(詳細設定)について。
FFmpeg
は他のコーデックとオプションを共用する関係で、-vcodec
libx264 (映像コーデック H264) の場合の初期値が良くありません。
x264
本家 (x264.exe) の初期値は、ffmpeg
の libx264-default.ffpreset にあるとおりです。 (「Craving Explorer Wiki
- ipod向け設定」より)
本サイトでの動画変換に関係する部分は以下のようになります。
x264
のデフォルト
-me_method
hex -me_range 16 -subq 6 -g 250
-keyint_min 25 -sc_threshold 40
-i_qfactor 0.71
-qcomp
0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2
+fastpskip -flags +loop -cmp +chroma
-partitions +parti4x4+partp8x8
FFmpeg
のデフォルト
-me_method
epzs -me_range 16 -subq 8 -g 12
-keyint_min 25 -sc_threshold 0 -i_qfactor
-0.8
-qcomp
0.5 -qmin 2 -qmax 31 -qdiff 3 -flags2
+fastpskip
このため、FFmpegでH.264形式動画を作成する場合は、x264
のデフォルトに合わせる形で設定するのが良いと思います。
特に
-qmin と -qmax は x264 のデフォルトにあわせたほうが良いでしょう。
最近のFFmpegでは、libx264側でFFmpegのデフォルト値を判定し、一定の条件を満たすとエラーで終了するようになっています。
判定の対象となる
FFmpeg のデフォルト値は、
-me_range
0 、-g 12 、-qcomp 0.5 、-qmin 2
、-qmax 31 、-qdiff 3 、-i_qfactor
0.8 、-b_qfactor 1.25 、
-subq
8 で -partitions 指定なしの場合の9つです。
9つのうち、5つ以上デフォルト値の場合、
Error
while opening encoder for output
stream #0.0 - maybe incorrect parameters
such as bit_rate, rate, width or
height
とエラーが出て終了します。
これを回避する為には、9つのうちいずれか5つの値を
FFmpeg のデフォルト以外に指定します。
x264
のデフォルトに合わせる形で指定するのが良いと思います。
|