HandbrakeCLIオプションをFFmpegオプションに変換するにはどうすればよいですか?


13

ハンドブレーキで機能するコマンドライン設定がたくさんありますが、一部のビデオでは(理由がわからない)ハンドブレーキが「メモリ不足例外」をスローすることがあります。同じオプションキーを見つけてFFmpegで実行できるかどうか疑問に思っていましたが、それほど簡単なことではないようです。

FFmpegには、これらのオプションがない場合や、デフォルトで機能する場合があります。たとえば、FFmpegでカスタムアナモルフィックを実行する方法がわかりません。私にとって非常に重要なのは、結果として生じるビデオがハンドブレーキで行われたかのように優れていることです。ハンドブレーキのラインは次のとおりです。

HandBrakeCLI.exe --input "d:\input.mpg" --output "d:\output.mp4" --rate 29.97 --cfr --arate 44.1 --format mp4 --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0 --encoder x264 --vb 5200 --aencoder faac --ab 128 --mixdown stereo -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200:level=42:bframes=2:min-keyint=60:keyint=60:ref=4:me=umh:merange=64:subme=7:8x8dct:cabac=1  -v3 -2 -a none

これをFFmpegコマンドにするにはどうすればよいですか?

回答:


20

Handbrakeは、ビデオ変換にx264エンコーダーを使用します。すべてのx264オプションと対応するFFmpegの概要をまとめたサイトがあります。ただし、これらは少し非推奨であり、これらのオプションの一部は機能しなくなったか、名前が変更された可能性があります。ほとんどの詳細オプションにはx264プロファイルを使用する必要がありますが、ここで取得します。

基本的なハンドブレーキオプション(フレームレートなど)の多くはx264に固有のものではなく、FFmpegオンラインドキュメントに散在しています

始める前に、最新のFFmpegバージョンを使用していることを確認してください。彼らのダウンロードサイトはすべての主要なオペレーティング・システム用のビルド静的を持っています。

行こう:

  • --input "d:\input.mpg" --output "d:\output.mp4"

    FFmpegの構文はffmpeg -i input.mpg … d:\output.mp4です。

  • --rate 29.97

    でビデオフレームレートを指定し-r 29.97ます。(ハンドブレーキ--cfrは一定のフレームレートを設定するだけです。ここでは必要ありません)。

  • --arate 44.1

    音声サンプルレートを-ar 44100(Hz単位で)設定します。

  • --format mp4

    FFmpegはMP4が必要であることを知っているため、必要ありません。

  • --width 1920 --height 1080 --custom-anamorphic --display-width 1920 --keep-display-aspect --modulus 8 --crop 0:0:0:0

    これは、サイズを1920×1080に設定する以外は何もしません。FFmpegでは、-s:v 1920x1080を使用するか、フィルターを使用する場合はを使用します-filter:v "scale=1920:1080"

  • --encoder x264 --vb 5200

    でエンコーダを設定し-c:v libx264、でビットレートを一定に設定し-b:v 5200Kます。品質設定に関しては、まだそこにいないことに注意してください。

  • --aencoder faac --ab 128 --mixdown stereo

    と、上記と同様-c:a libfaac -b:a 128K -ac 2。FAACはFFmpegでサポートされなくなったことに注意してください。代わりに、組み込みのFFmpegエンコーダーを-c:a aac -b:a 128K代わりに使用してください。

  • -x bitrate=5200:vbv-bufsize=5200:vbv-maxrate=5200

    これにより、エンコーディングモードがVBVに設定され、一定のビットレートや一定の品質ではなく、ストリーミングシナリオがターゲットになります。一定品質は、x264のデフォルトであるCRFとも呼ばれます。これは、Handbrakeでは「レート係数」と呼ばれています。CRFは通常最高品質のエンコードを提供しますが、VBVモードはオンラインストリーミングまたは機能が制限されている特定のデバイスに適したファイルを提供します。

    VBVを設定するには、ffmpeg の-maxrate 5200Kおよび-bufsize 5200Kオプションを使用します。

    CRFを設定するに-crf 23は、ffmpeg で使用します。

  • level=42

    を使用し-level 42ます。これはH.264レベルです。

  • bframes=2:min-keyint=60:keyint=60:ref=4

    Bフレームの数をで設定し-bf 2ます。キーフレームの最小間隔はで設定され-keyint_min 60、最大間隔はで設定されます-g 60。参照画像の枚数はで設定し-refs 4ます。

  • me=umh:merange=64:subme=7:8x8dct:cabac=1

    これらは、ffmpegで-x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1直接設定できない他のx264エンコーダー設定と同様に、ffmpegでさらに設定できるオプションです。

    怠惰で詳細を気にしない、または機能しない場合の "TL; DR"バージョンは次のとおり-preset:v mediumです。x264プリセットは、エンコード速度と圧縮効率をトレードオフする一連のオプションを選択します。彼らは、都合から名付けられているultrafastsuperfastveryfastfasterfastmediumslowslowerveryslow。快適に感じるものは何でも選択してください。

要約すると、長いバージョン:

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -level 42 -bf 2 -keyint_min 60 -g 60 -refs 4 -x264-params me=umh:merange=64:subme=7:8x8dct:cabac=1 -c:a aac -b:a 128K -ar 44100 d:\output.mp4

または、私が使用する短いもの(VBVエンコーディングといくつかの詳細オプションを削除したもの):

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -b:v 5200K -maxrate 5200K -bufsize 5200K -c:a aac -b:a 128K -ar 44100 d:\output.mp4

多目的変換のために一定品質のエンコーディングに変更し、これを使用して、-crfパラメーターを18から28に変更します。ここで、低いほど品質が高く、23がデフォルトです。

ffmpeg -i input.mpg -c:v libx264 -r 29.97 -s:v 1920x1080 -crf 23 -c:a aac -b:a 128K -ar 44100 d:\output.mp4

ハハ@slhck、私が私の答えに最後の仕上げをしているように、あなたは行ってより良いものを与えます。
evilsoup 2013
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.