私はffmpegを使用してビデオをエンコードし、Webにアップロードしています。私はffmpegの使用について この投稿 を見ましたが、値をどのように考慮するかについては十分に理解できませんでした。
サイズが70 MB、長さが4分のビデオがあるとします。これらのフラグの値をどのように考慮しますか:-b:v
、-maxrate
および-bufsize
このコマンドは?
ffmpeg -i input -codec:v libx264 -profile:v main -preset slow -b:v ? -maxrate ? -bufsize ? -vf "scale=720:trunc(ow/a/2)*2" -threads 0 -codec:a libfdk_aac -movflags +faststart output
または、crf
の値が19〜24のように、通常の値はありますか?皆様のご指導をよろしくお願いいたします。
それは本当にあなたのアップロード速度に依存します。
bufsize
は、ビットレートを一定に保つことについて、宗教的なffmpegがどの程度重要かを決定します。 FFmpeg Wiki:出力ビットレートの制限 に従って64kのbufsize
を設定すると、現在のビットレートが64キロバイトごとに計算され、それに応じて調整されます。 bufsize
のサイズが小さいと、x264のチェックの間に突然の変更を行うのに十分なスペースが確保されないため、品質に悪影響を与える可能性があります-ブロック状になります。
maxrate
が640kbpsで、bufsize
が64kの場合、1秒ごとにx264がチェックされます。これは最適ではありません- FFmpeg Wiki:ストリーミングサイトのエンコーディング 1〜2秒ごとに実行することをお勧めします。これが意味をなさない場合は、maxrate
/bufsize
=チェックの頻度と考えてください。目安として、この頻度は1〜2秒に維持してください。
maxrate
とbufsize
の両方を設定する場合は、次のことを行う必要があります。
maxrate
を最低のアップロード速度に設定します( ffmpeg wikiの例 では、これは合計アップロード速度の80%ですが、マイレージは異なる場合があります)。bufsize
をmaxrate
と同じ(1秒)とmaxrate
の2倍(2秒)の間のどこかに設定します。それでも十分に低くない場合は、maxrate
を下げてから、bufsize
を再設定します。その後、少し遊んでみる必要がありますが、どこかから始めなければならないので、maxrate
から600kくらいで始めます。これは、crf
全てにおいて。
必要に応じて、bufsize
の値を3秒または4秒ごとなどに小さくして、出力がどのように変化するかを確認できます。次に、ビデオについてそれについてどれだけ心配する必要があるかを決定できます。
実際には通常の値はありません。crf
が行うことは、レートが設定されているものを維持するのに最適なバッファサイズであると考えられるものに基づいて出力を最適化することです。ときどきスパイクを犠牲にして、ある程度の品質を維持しながらファイルサイズを低く保つように試みます。