FFmpeg動画変換 〜動画をPS3やPSP等で再生〜

トップページに戻る


 

最近のFFmpegの設定について

 


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 のデフォルトに合わせる形で指定するのが良いと思います。

 

Yahoo!ジオシティーズ