web-dev-qa-db-ja.com

Webのビデオのビットレート、-maxrate、-bufsizeを考慮する方法

私は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のように、通常の値はありますか?皆様のご指導をよろしくお願いいたします。

13
Robin

それは本当にあなたのアップロード速度に依存します。

bufsizeは、ビットレートを一定に保つことについて、宗教的なffmpegがどの程度重要かを決定します。 FFmpeg Wiki:出力ビットレートの制限 に従って64kのbufsizeを設定すると、現在のビットレートが64キロバイトごとに計算され、それに応じて調整されます。 bufsizeのサイズが小さいと、x264のチェックの間に突然の変更を行うのに十分なスペースが確保されないため、品質に悪影響を与える可能性があります-ブロック状になります。

maxrateが640kbpsで、bufsizeが64kの場合、1秒ごとにx264がチェックされます。これは最適ではありません- FFmpeg Wiki:ストリーミングサイトのエンコーディング 1〜2秒ごとに実行することをお勧めします。これが意味をなさない場合は、maxrate/bufsize =チェックの頻度と考えてください。目安として、この頻度は1〜2秒に維持してください。

maxratebufsizeの両方を設定する場合は、次のことを行う必要があります。

  • maxrateを最低のアップロード速度に設定します( ffmpeg wikiの例 では、これは合計アップロード速度の80%ですが、マイレージは異なる場合があります)。
  • bufsizemaxrateと同じ(1秒)とmaxrateの2倍(2秒)の間のどこかに設定します。それでも十分に低くない場合は、maxrateを下げてから、bufsizeを再設定します。

その後、少し遊んでみる必要がありますが、どこかから始めなければならないので、maxrateから600kくらいで始めます。これは、crf 全てにおいて。

必要に応じて、bufsizeの値を3秒または4秒ごとなどに小さくして、出力がどのように変化するかを確認できます。次に、ビデオについてそれについてどれだけ心配する必要があるかを決定できます。

実際には通常の値はありません。crfが行うことは、レートが設定されているものを維持するのに最適なバッファサイズであると考えられるものに基づいて出力を最適化することです。ときどきスパイクを犠牲にして、ある程度の品質を維持しながらファイルサイズを低く保つように試みます。

20
Wyatt8740