回答:
FFmpeg のドキュメントを読み、ffmpeg -h full
オプションのリストを実行してください。また、私が書いたこの記事をご覧ください。x264やx265などのエンコーダーのレート制御モードの違いを示しています。
一般的に、オプションの意味は次のとおりです。
-b:v
(または-vb
、同じ)は、エンコーダーが使用するターゲット平均ビットレートを指定します。
-b
<int>
E..VA
。ビットレートを設定(ビット/秒)(0からINT_MAXまで)
-minrate
使用する最小許容値を指定します。
-minrate
<int>
E..VA
。最小ビットレート許容値(ビット/秒)を設定します。CBRエンコードの設定に最も役立ちます。それ以外ではほとんど役に立ちません。(INT_MINからINT_MAXへ)
-maxrate
最大許容値を指定します。ただし、ドキュメントに示されているように、これは以下と組み合わせてのみ使用されbufsize
ます。
-maxrate
<int>
E..VA
。最大ビットレート許容値(ビット/秒)を設定します。bufsize
設定する必要があります。(INT_MINからINT_MAXへ)
-bufsize
<int>
E..VA
。レート制御バッファサイズを設定します(ビット単位)(INT_MINからINT_MAXまで)
これは、可変ビットレートエンコーディングの場合にのみ意味があります。一定のビットレートまたは一定の品質モデルを使用する代わりに、エンコーダーはデコーダーで仮想バッファーを使用して伝送をシミュレートします。-minrate
/ -maxrate
/ -bufsize
オプションは、そのバッファのサイズを制御します。デコーダーバッファーがオーバーフローまたはアンダーフローする特定の値を超えないようにするため、この手法はビットレートを制限するため、通常はこのモードをストリーミングにのみ使用します。
要約すると、ビットレートを制限するためのいくつかのオプションがあります。
CBRプロセスを設定するには、エンコーダーが提供するものを確認する必要があります。エンコーダはビットを浪費しないため、通常、「完全な」一定のビットレートを実現することはできません。設定-b:v
、-minrate
および-maxrate
libx264ため、たとえば、同じレベルにそれを達成します。
ffmpeg -i input.mp4 -c:v libx264 -x264-params "nal-hrd=cbr" -b:v 1M -minrate 1M -maxrate 1M -bufsize 2M output.ts
警告:これにより、エンコードが難しいビデオの品質が低下する可能性があり、ビットを浪費します。一定レートの出力を達成する必要がある場合を除いて、このオプションは使用しないでください。
ストリーミング用の制約付き/可変ビットレートプロセスを設定します。-b:v 3500K -maxrate 3500K -bufsize 1000K
たとえば、を使用します。レートとバッファサイズをコンテキストに合わせて調整する必要があります。バッファサイズが大きいほど、許容されるビットレートの変動が大きくなります。
一定の品質目標を使用し、スパイクをキャッチするためにのみビットレートを制限します。たとえば-c:v libx264 -crf 23 -maxrate 4M -bufsize 4M
、23のターゲットCRFで可変ビットレートでエンコードするために使用しますが、出力を最大4 MBit / sに制限します。