Die Verringerung der Bitrate mit ffmpeg mit "-b: v 500k" reduziert die Bitrate nicht wirklich auf 500k

3704
nburk

Ich versuche, mehrere herabgestufte Versionen einer Videodatei mit ffmpeg zu erstellen . Ich verwende den folgenden Befehl über die Befehlszeile (der Befehl stammt aus der Dokumentation ):

ffmpeg -i ../../tos.avi -b:v 500k tos_500k.avi

Ich versuche dies mit mehreren Werten unter 2000 kbps (bis zu ~ 125 kbps). Die untere Grenze, die tatsächlich erzeugt wird, wenn ich die erzeugten Videodateien überprüfe, liegt bei etwa 2000 kbps. Ich überprüfe die Werte mit der Software videospec .

  1. Hat jemand eine Idee, warum eine weitere Reduzierung der Bitrate keine Wirkung zu haben scheint?
  2. Können Sie mir einen Hinweis geben, wie ich die Bitrate eines Videos effektiv auf ein bestimmtes Niveau reduzieren kann?

[EDIT] Um etwas genauer zu sein, hat mein Originalvideo eine Auflösung von 1920 x 1080 mit einer Bitrate von etwa 15 Mbps. Wenn Sie den obigen Befehl verwenden, kann ich ihn ohne Probleme auf größere Bitraten wie 8000, 5000 und 2000 kbps herunterstufen. Alles unter 2000 scheint jedoch nicht gehandhabt zu werden. Die Ausgabedateien hängen immer bei einer Bitrate von etwas mehr als 2000 KBit / s fest. (Die Dateigröße ist auch sehr nahe an der Datei, die erfolgreich auf 2000 KBit / s herabgestuft wurde.)

1

1 Antwort auf die Frage

5
Ely

When re-encoding a file, you shouldn't just specify a bitrate. My guess is that ffmpeg tries to use the mpeg4 codec by default, and it refuses to use less than 2mbps because it simply can't go below with such a high resolution.

I suggest you re-encode with the H.264 codec which you can do like this :

ffmpeg -i ../../tos.avi -c:v libx264 -b:v 500k tos_500k.mp4 

Please note however that this will use a 1-pass average bitrate method which is pretty bad for quality. Instead, you should try encoding with "constant rate factor", i.e. you target a certain quality and the encoder decides which average bitrate is the best for your file :

ffmpeg -i ../../tos.avi -c:v libx264 -crf 23 tos_500k.mp4 

You're free to experiment with the crf value. Increasing it will mean lower bitrate and worse quality, lowering it vice versa.

If you absolutely want to target an average bitrate, you should checkout 2-pass encoding. Also, don't forget about presets !

As a side note, 500k for 1080p is way too low and you will get poor results. If you wish to target such a low bitrate, I suggest you downscale to 480p (854x480). 720p should have a minimum of 1,5mbps bitrate and 1080p 3mbps.

For your future questions, don't forget to post the input/output logs from ffmpeg, they're always helpful :-) .

Toll, vielen Dank für die Infos und die zusätzlichen Eingaben! :) nburk vor 8 Jahren 0