ffmpeg: VBR - Zielbitrate wird nicht erreicht.

  • Ein Ausgangsvideo: MPEG4, Bitrate=11,4 Mb/s, 1200 x 720pixels, 50 fps, 10 GB

    soll in ein DVD-pal konformes mpg Video kodiert werden mit einer Bitrate

    die die 4,7 GB der DVD möglichst "ausreizt"

    Das ganze mit ffmpeg / mpeg2video / VBR mit 2-pass. Ja - ich weiß - Qualitätsverlust !

    Mein Script dazu :


    ffmpeg -y -i Adler.mkv -vcodec mpeg2video -s 720x576 -b:v 4000k -minrate 2153k -maxrate 9412k -bufsize 2000K -pass 1 -an -f rawvideo -y /dev/null && \

    ffmpeg -y -i Adler.mkv -vcodec mpeg2video -s 720x576 -b:v 4000k -minrate 2153k -maxrate 9412k -bufsize 2000K -r 25 -pass 2 Adler.mpg


    Das Ergebnis ist ein Video mit 2552 kb/s variabler Bitrate - 2,4 GB groß.

    Erhöhe ich -b:v auf 6100k -- Ergebnis: 2562 kb/s - 2,4 GB

    Erhöhe ich -b:v auf 8500k --> exakt gleiches Ergebnis


    eine Änderung von minrate auf 4000k liefert 4155 kb/s und 3,6 GB.


    Warum erreiche ich nicht die gewünschte Zielbitrate - ohne minrate "hochzusetzen"

    Oder anders herum : Warum hat das drehen am "b:v-Knopf" keine Auswirkung auf die abr ?

    Oder - verstehe ich da etwas vollkommen falsch ?


    Gruß - McLean

  • Hallo,


    ich kann dir leider nur bedingt helfen. Aber für VBR braucht man meiner Meinung nach, 3 verschiedene Bitrateneinstellungen.

    1. Minimale Rate,

    2. Mittlere Rate und

    3. Höchste Rate


    Nur ein Beispiel:

    Minrate: 2170 kbps,

    Midrate:  6770 kbps,

    Maxrate: 9300 kbps


    Sollten sehr schnelle Bewegungen im Bild auftreten, dann codiert der Encoder automatisch auch bis max. 10.000 kbps.

    Zumindest ist das bei meinem Encoder der Fall. Es gibt auch Software-Bitratenrechner, die die benötigte Bitrate genau ausrechnen.


    Die unterste Bitrate erhöht zwar auch die Filegröße, das ist schon richtig, aber die durchgehende Bildqualität wird mit der mittleren Bitrate festgelegt.

    4000 kbps bei einem schwarzen Bild, braucht man ja nicht. Eine gute Bildqualität erhält man ab 6370 kbps, bei MPEG-2.

    Möchte man 2 Stunden Filmmaterial auf eine DVD speichern, dann kann man auch 5170 kbps einstellen.

    Der Ton muss auch noch mitgespeichert werden.


    Bei den Profis werden von den 4,38 GByte, die bei einer DVD rein zur Verfügung stehen, nur 4,0 GByte beschrieben.

    Da bei Scheiben im Außenbereich immer erhöhte „Jitterwerte“ auftreten. Niemals die vollen 4,38 GByte ausreizen.


    Ich weiß jetzt nicht, ob dieses Script stimmt, das kannst du aber nach deinen Wünschen anpassen.

    ffmpeg -y -i Adler.mkv -vcodec mpeg2video -s 720x576 -b:v -minrate 2170k -midrate 6770k -maxrate 9300k -bufsize 2000K -r 25 -pass 2 Adler.mpg


    Gruß aus Westlich von Santa Fé

    Jo

  • Hallo und Danke für die Antwort.

    Ich verwende ja die drei Bitrateneinstellungen : -b:v 4000k -minrate 2153k -maxrate 9412k .

    So wie Du das beschrieben hast, verstehe ich es ja auch, aber es funktioniert nicht. "midrate" kennt ffmpeg nicht ...?


    ... Westlich von Santa Fé - da konnte man Probleme noch ohne Encoder lösen ...

  • Es gibt noch eine mögliche Ursache: "Sättigung". Der Encoder braucht beim vorliegenden Material einfach nicht mehr Bitrate, um selbst mit feinster vernünftiger Quantisierung zu encodieren. Ursachen können in wenig Bewegung und niedrigem Detailgrad liegen.


    Allerdings ... wenn du MPEG-2-Video haben willst, das wirklich kompatibel zu DVD Video ist, dann würde ich bessere Encoder empfehlen als ffmpeg. Also zuallererst HCEnc. Von dem ist bekannt, dass seine Bitratensteuerung mit korrekter VBV-Simulation arbeitet.

  • Die ist auch gemeint. Wenn man keinen Dateinamen explizit angibt, verwendet ffmpeg also diesen als Standard.


    Bei einem 2-pass-Verfahren wird im 1. Durchlauf eine Statistik erstellt, wieviel Bitrate im Optimalfall (vermutlich: Quantisierungsfaktor 2) benötigt wird, und im 2. Durchlauf wird diese so verringert, dass die gewünschte Zielbitrate im Durchschnitt etwa erreicht wird. Sollte sie im Optimalfall schon unter dem gewünschten Ziel liegen, wird sie aber nicht erhöht, weil das auch keine bessere Qualität brächte.

  • Ok, das verstehe ich, das wäre dann das Thema "Sättigung"

    Der (Gedanken)fehler ist wohl der, dass ich ffmpeg nicht höher encodieren lassen kann, als es sein muß.

    Zitat

    ...wird sie aber nicht erhöht, weil das auch keine bessere Qualität brächte.

    Das gilt dann wahrscheinlich auch für HCEnc.


    Besten Dank !

  • Hallo McLean,


    danke für deinen originellen Schlusssatz. Du hast ja Humor.

    Es bliebe nur, die Festplatte auf der ffmeg installiert ist, zu erschießen. Aus Sicht des Wilden Westens. Kleiner Scherz. 


    Da musst du wohl oder übel mit einem anderen kostenlosen Software-Encoder, die gewünschte MPEG-2-Datei erstellen.

    Der HCEnc wurde ja bereits genannt. LigH hat das alles schon vorbildlich erklärt.


    Wenn du unbedingt ffmpeg willst:

    Teste einmal mit einer minimalen Bitrate von 5000 kbps, was eigentlich Quatsch ist.

    Theoretisch läge dann die mittlere Bitrate bei ca. 7,500 kbps. 75 bis 80 Minuten Film mit Ton, müssten da problemlos auf eine DVD passen.

    4155 kbps mit 3,6 GB, irritiert mich etwas. Das hängt vermutlich mit den 9412 kbps zusammen.


    Audio mit 192 kbps, nach DVD-Spezifikationen erstellen.


    Gruß

    Jo