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


13

私は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のように、通常の値はありますか?私はあなたの助けと指導に本当に感謝します。


ビデオのエンコーディングは芸術であり、習得するパラメータは数百あります。2パスエンコーディングは、ビットレートで再生するよりも、ほとんどのシナリオで(はるかに)高い品質と圧縮を提供することに注意してください。通常、最終的なサイズとビデオのビットレートは主にビデオ出力サイズに依存します。ffmpegは通常、同じビデオ品質を維持するように指示した場合、maxrateとbitrateを選択できるほどスマートです。また、ほとんどのシナリオで480px幅のビデオを作成することで十分であり、ビットレートで再生するよりもはるかに多くの帯域幅を節約できることにも注意してください。
2015

1
@earizon同意する、ビデオエンコーディングは芸術であり、通常は480で十分です。ただし、640x480のCRTをもう使用しないので、より高い解像度を利用できることも気に入っています。それは間違いなくビットレートをいじるよりもサイズを減らすためのより良い方法ですが、繰り返しますが、私はオプションが好きです。
Wyatt8740 2015

回答:


20

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

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

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

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

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

その後、少し遊んでみる必要がありますが、どこかから始めなければならないので、maxrate600kくらいから始めcrfます。通常、すべてを使用する前に十分満足できるものでした。

必要にbufsize応じて、3秒や4秒ごとなど、の値を小さくして、出力がどのように変化するかを確認できます。次に、動画でどれだけ心配する必要があるかを判断できます。

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


1
「bufsizeをmaxrateと同じ(1秒)とmaxrateの半分(2秒)の間のどこかに設定する」は、「bufsizeをmaxrateと同じ(1秒)とmaxrateの2倍の間(2秒)」?
Ely 2015

@Ely私はあなたが正しいと思います。鉱山はそれを0.5秒ごとに行います。直します!
Wyatt8740 2015

@ Wyatt8740すみません、忙しかったです。ただ一つだけ質問。私が使用している場合はcrf、その後、私は指定する必要はありませんbitratebuffsizemaxrate?もしそうなら、どちらがより効率的ですか(crfまたはbitratebuffsizeおよびを使用maxrate)?
ロビン

@Robin crfでbufsizeとmaxrateを使用できます。crfはビットレートをオンザフライで調整して特定の品質に一致させることを忘れないでください。ビデオの一部が非常に複雑な場合、ビットレートは非常に高く撮影され、おそらくそれは望ましくないので、bufsizeを使用して「ロックをかける」ことをお勧めします。とmaxrate(ただし、厳密すぎないか、ビデオががらくたに見える!:))
Ely

@Robin正解。他のユーザーとcrfを併用する必要はありません。ただし、制約する場合は可能です。CRFは、一定の品質を維持しようとする-あなたが持つ範囲内でそうするように強制することができますbufsizeし、maxratebitrateただし、は必要ありません。Elyが言ったように、それはそれをストリーミングにより良くするでしょう。
Wyatt8740 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.