Mit avconv MPEG-2 kompatibel zu DVD Video encodieren

  • Hallo,

    Ich möchte einen Screencast der im AVC Format erstellt wurde in eine DVD umwandeln. Ich benutze Linux (Mint). Ich habe avconv mit diesen Parametern aufgerufen:

    Code
    avconv -i inputvideo.mp4 -target pal-dvd -s 720x576 -vcodec mpeg2video -b:v 4000000 -r 25 -aspect 16:9 -an videospur.m2v

    Das resultierende mpeg2 Video hat diese GOP Struktur:

    Code
    I PPPPPPPPPPP

    wobei die anzahl der P Frames variiert. Ich habe insgesamt zwischen 4 und maximal 12 Frames pro GOP.
    Meine Frage, ist das erlaubt? oder könnte ein standalone Player damit Probleme bekommen. Ich dachte immer die Struktur der DVD muss so sein:

    Code
    I BB P BB P BB P BB P BB

    Die Videoqualität ist absolut in Ordnung. Ich möchte halt nur sicher sein dass ich eine der Norm entsprechende DVD habe, bevor ich sie weitergebe.

    Gruß,
    Armin

  • Ich bin mir nicht sicher, ob MPEG-2 ohne B-Frames kompatibel ist, vermutlich ja (leichter zu decodieren als mit, und da die GOPs nicht zu lang sind, kein Problem für den Decodierpuffer).

    Nur effizient ist diese Komprimierung so gar nicht. B-Frames wären deutlich kleiner, würden also für die Bitrate mehr Qualität bewahren können. Da muss ich dir schon einen technisch besseren Encoder empfehlen. Unter Linux wird die Auswahl leider eher gering sein, da kann ich dir nur wünschen, dass aktuelle ffmpeg ihre Arbeit ordentlich erledigen. Unter Windows wäre der HCenc im Freeware-Bereich sehr zu empfehlen...

    Oder kann man avconv noch Parameter mitgeben, welche die GOP-Struktur steuern? Dann sollte es ffmpeg doch gleichwertig sein, oder?

  • Vielen Dank für die Antwort. Da bin ich ja schon mal beruhigt, dass es kompatibel ist, die DVD ist nämlich schon fertig und dann muss ich das nicht neu encodieren. Die Qualität ist recht gut, ist halt etwas größer geworden. Die mpeg2 Dateien sind sogar größer als die originalen h264 AVC mit 720p. Haben aber noch drauf gepasst auf die DVD. B Frames wären natürlich besser ich kenne das eigentlich nur so. Den HCenc habe ich zu Windows Zeiten auch immer verwendet der war wirklich gut.

    avconv ist der Nachfolger von ffmpeg und gehört wie dieser zum Projekt libav (Paket libav-tools). Die Qualität finde ich sehr gut und er encodiert rasend schnell. Der Output wird halt etwas größer, was vermutlich an den fehlenden B - Fames liegt. Es gibt einen Parameter (-g) mit welchem ich die GOP Größe steuern kann - muss ich mal testen, ob der auch die GOP Struktur beeinflusst. Alternativ gäbe es noch mencoder - der benutzt aber auch libav. Ist schon etwas seltsam dass keine B - Frames erzeugt werden da werde ich auf jeden Fall mal recherchieren ob man das irgendwie hin bekommt - Dann sollten die Dateien auch etwas kleiner werden.

    EDIT:

    Ich habe den Parameter gefunden:

    -bf 2

    Dann werden zwei B-Frames erzeugt. also I BB P BB P usw.

    2 Mal editiert, zuletzt von alpha-nbg (5. Dezember 2015 um 16:28)

  • Da bin ich ja schon mal beruhigt, dass es kompatibel ist, ...

    Lies nochmal. Ich sagte "bin mir nicht sicher" und "vermutlich"... :rolleyes:

    ... die DVD ist nämlich schon fertig und dann muss ich das nicht neu encodieren. Die Qualität ist recht gut, ist halt etwas größer geworden.

    Bei Zielbitrate 4 Mbps (anscheinend 1-pass CBR) und ohne B-Frames "gute Qualität"? Dann ist das wohl ein Nachrichtensprecher-Portrait, oder sonst nix los? Na ja, wenn du zufrieden bist, ist es gut genug. Aber wenn die Bitrate abhängig vom Bedarf jeder Szene im 2-pass-Verfahren optimal verteilt wird, und B-Frames die Effizienz erhöhen, könnte man bei gleicher durchschnittlicher Bitrate sicher noch bessere Qualität erhalten. Rein theoretisch. Wenn das aktuelle Ergebnis dir schon gut genug gefällt, lass es.

    Dass das Ergebnis größer als das Original wird, kann nur daran liegen, dass deine Ziel-Bitrate größer als die Original-Bitrate vorgegeben wurde. Ausschließlich daran.

    Ich habe den Parameter gefunden:

    -bf 2

    Dann werden zwei B-Frames erzeugt. also I BB P BB P usw.

    Gut, dann schau noch nach "Closed GOP" (ist nicht absolut nötig, aber für eventuelles Schneiden im Authoringtool und Kapitelverwaltung vielleicht nützlich, wenn du irgendwann später mal aufwändigere Projekte vorhaben solltest).

  • Lies nochmal. Ich sagte "bin mir nicht sicher" und "vermutlich"... :rolleyes:

    Ich lass mir mal ein Feedback geben, ob die DVD Funktioniert hat - notfalls mache ich sie nochmal neu. Ich werde mal suchen, ob es eine offizielle Beschreibung vom DVD Konsortium gibt was hier erlaubt ist. Würde mich ja doch interessieren. In den Beschreibungen die man im Netz so findet gibt es diesbezüglich doch sehr widersprüchliche aussagen. Aber die sind halt alle nicht offiziell.

    Wie ein Nachrichten Sprecher klingt oder aussieht weiß ich gar nicht mehr - Ich habe schon fast 2 Jahre nicht mehr Ferngensehen :cool:
    Ist ein Screencast von einem Spiel.
    Ja, ich bin zufrieden mit der Qualität. Das nächste mal lasse ich mir noch mehr Zeit und mache vbr mit B - Frames. Jetzt weiß ich ja wie es geht. Ist halt immer ein bisschen subjektiv was gut oder schlecht aussieht und ich bin eigentlich schon pingelig bei so was.

    Ja stimmt da hast du recht. Die Ziel Bitrate ist höher.
    Danke für den Tip mit "Closed GOP" das kann man auch einstellen im avconv werde ich bei der nächsten DVD auch so machen.

    Wieder was dazu gelernt.
    Vielen Dank.

    Einmal editiert, zuletzt von alpha-nbg (5. Dezember 2015 um 18:13)

  • Auf "DVD Demystified", der Website zur "Bibel des DVD-Authoring" (deutsch: dvddemystifiziert.de) hab ich schon mal geschaut, da werden B-Frames nicht erwähnt. MPEG-2 Videostreams nur aus I-Frames wären für Still-Galerien und Menüs mit mehreren Seiten ja auch möglich...

    Bei Videospiel-Screencasts gibt es eigentlich meist sehr viel Bewegung, auch plötzliche, und unnatürlich scharfe Kanten; da braucht man eigentlich viel Reserve. Aber gut, wird sich zeigen, was noch herauszuholen ist.

  • Danke für den Link. Die Grundaussage ist - maximal 15 frames pro GOP. Ich denke mal, dass die DVD funktionieren wird. Ich werde heute Abend nochmal eines der Videos mit vbr und 2 B - Frames encodieren und dann vergleichen. Mehr als 4000KB/s kann ich halt nicht machen, sonst passt es nicht drauf. Die DVD betrachte ich auf dem PC in original Auflösung. Auf einem TV mit einer hohen Bild diagonalen merkt man die Unterschiede vermutlich mehr. Aber Bildverschlechterungen die durch Hochskalieren entstehen kann man ja dem encoder nicht an lasten.

  • Die Durchschnitts-Rate von 4 Mbps wird schon zu schaffen sein. Wichtig ist aber, dass ab und zu mal die Bitrate auch sehr klein oder sehr groß werden könnte; möglichst nicht kleiner als 300 kbps (das ist schwer zu beeinflussen, außer durch einen Encoder mit VBV-Simulation), und möglichst nicht größer als etwa 9,0-9,8 Mbps. Diesen Maximalwert kann man einem MPEG-2-Encoder, der DVD-kompatibel arbeitet, sicher mitteilen, aber VBV-Steuerung benötigt auch die Größe des Decodier-Puffers (224 KB), um korrekt zu arbeiten. Vermutlich wird die optimale Kommandozeile noch etwas länger.

  • Also die DVD hat funktioniert. Auf einem standalone sieht die Qualität aber um einiges schlechter aus als auf meinem PC. Ich kämpfe immer noch mit der Parametrisierung von avconv rum. Es gibt die Optionen -minrate -maxrate und -bufsize, aber ich habe noch kein funktionierendes Beispiel gefunden. Aber prinzipiell funktioniert eine DVD ohne B - Frames. Die Qualität wird halt schlechter.

  • Da avconv praktisch gleichwertig mit ffmpeg sein sollte, lese ich mal in der ffmpeg-Dokumentation, weil ich momentan nicht weiß, wie ich mir stattdessen avconv compilieren müsste.

    Die maximale Datenrate einer DVD Video nach Spezifikation beträgt 9800 kbps, da sollte man aber etwas Reserve lassen; wenn deine mittlere Zielbitrate eh nur um die 4000 kbps liegt, reichen dafür sicher auch 8000 kbps als Maximum. Das Minimum sollte auch begrenzt werden, sonst können längere Schwarz-Szenen zu Überläufen führen (zur Not wird mit "Leergut" aufgefüllt). Der Decodierpuffer ist 112 Sektoren zu je 2048 Bytes groß, also 224 KiB = 1835008 bits (interessant, dass die Puffergröße auch in bits statt Bytes erwartet wird, aber so ist es dokumentiert). Somit sollte folgende Kombination wohl theoretisch funktionieren:

    -b:v 4000k -maxrate 8000k -minrate 400k -bufsize 1835008

    Vermutlich ein guter Ausgangspunkt zum Weiterlesen: FFmpeg Wiki – Limiting the output bitrate mit Links zu 2-pass VBR.

  • Vielen Dank für diese Informationen, mit deinen Werten hat es auf Anhieb funktioniert :)
    avconv spammt zwar immer eine Fehlermeldung, aber ich denke die kann ich einfach ignorieren. Das Video wurde ja korrekt erzeugt.

    Code
    Application provided invalid, non monotonically increasing dts to muxer in stream 0

    interessant, dass die Puffergröße auch in bits statt Bytes erwartet wird, aber so ist es dokumentiert


    Das wusste ich nicht, deshalb hat es wahrscheinlich bei mir nie funktioniert.

    Der Decodierpuffer ist 112 Sektoren zu je 2048 Bytes groß, also 224 KiB = 1835008 bits


    Kann ich diesen Wert sozusagen als Referenz nehmen für jede DVD?


    Hier das Video mit deinen Werten erzeugt. Die Verteilung der Bitrate sieht sehr gut aus denke ich.
    avconv_vbr.png


    Und hier wie es mit meinem 1-Pass Versuch ohne -minrate und -maxrate aussieht:
    avconv_cbr.png

    Interessant sind die extremen Peaks. Erstaunlich dass der DVD Player das überhaupt abspielen konnte. Der Stream entspricht ja nicht der DVD Norm.

    Die Dateigrösse ist fast identisch. Die vbr - Variante ist sogar etwas kleiner.

    Vielen Dank also nochmal für deine Hilfe.


    EDIT:

    Bei meinem cbr -Versuch habe ich die -target Option vergessen. Die darf man auf keinen Fall weglassen, sonst entsteht ein inkompatibler output.
    Aber auch mit der -target Option ist der output nicht optimal:

    cbr_mit_target.png

    erzeugt mit:

    Code
    avconv -i inputvideo.mp4 -target pal-dvd -s 720x576 -vcodec mpeg2video -b:v 4000000 -r 25 -aspect 16:9 -an videospur.m2v

    Da erzeugt er immer noch Peaks über 9500 kbps, was extrem an der Grenze ist wenn man bedenkt dass audio auch noch dazu kommt. Es wird aber auch mit einem Durchlauf vbr erzeugt. Besonders genau kann das ja nicht sein.

    Ideal ist also in der Tat der 2 Pass encoding.

    Hier nochmal die Komplette Kommandozeile:

    Code
    avconv -i inputvideo.mp4 -pass 1 -passlogfile video.log -s 720x576 -vcodec mpeg2video -b:v 4000k -maxrate 8000k -minrate 400k -bufsize 1835008 -bf 2 -r 25 -aspect 16:9 -an -f rawvideo /dev/null
    
    
    
    
    avconv -i inputvideo.mp4 -pass 2 -passlogfile video.log -s 720x576 -vcodec mpeg2video -b:v 4000k -maxrate 8000k -minrate 400k -bufsize 1835008 -bf 2 -r 25 -aspect 16:9 -an output.m2v

    4 Mal editiert, zuletzt von alpha-nbg (12. Dezember 2015 um 07:25)

  • Zitat

    Erstaunlich dass der DVD Player das überhaupt abspielen konnte.


    Hab sicher 10 Jahre keine DVD mehr erstellt, aber hätte mich eigentlich gewundert, wenn nicht. Einzelne Peaks sollten ja kein Problem sein, so lange die VBV Beschränkungen nicht verletzt werden. (sind ja 9800kBit/s <- ne Sekunde sind ja mehrere Bilder)

  • Die hat auch funktioniert. Ich hatte da die Option -pal-dvd vergessen, dann werden die Peaks auf ca. 9600 kbps begrenzt.
    Ich erstelle DVDs auch immer seltener - aber ganz tot ist die DVD noch nicht. - Ich besitze sogar noch einen VHS, den habe ich aber schon ein paar Jahre nicht mehr eingeschaltet. :)

  • Aus meiner Praxis im DVD-Authoring-Studio kann ich von Trailern berichten, die GOP-Bitraten von bis zu 13 Mbps hatten und akzeptiert wurden; andere hatten gerade mal um die 10 Mbps als Maxima, aber wohl länger anhaltend, vielleicht noch zeitgleich mit Untertiteln in mehreren Streams ... die wurden abgelehnt.

    Der VBV-Simulator im Authoringtool ist das Kriterium, auf das man sich verlassen (können) muss. Der Videobitratenverlauf alleine sagt noch nicht viel.

    Dein VBR-Bitratenverlauf sieht recht vernünftig aus. Die Werte (v.a. bufsize) habe ich aus mehreren Quellen verglichen, ich gehe davon aus, dass die auch mehrfach geprüft waren.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!