Du bist nicht angemeldet.

Marcus Gräfe

Administrator

  • »Marcus Gräfe« ist männlich
  • »Marcus Gräfe« ist der Autor dieses Themas

Beiträge: 5 943

Dabei seit: 14. August 2002

Wohnort: Düsseldorf

Hilfreich-Bewertungen: 565

  • Private Nachricht senden

1

Sonntag, 29. Mai 2016, 20:15

Mit ffmpeg erzeugtes MP4 (H.264) lässt sich mit keinem Adobe-Programm lesen (grüne Frames)

Ich teste gerade, ob ich meine Master-Dateien, komprimiert mit Lagarith (verlustfreies AVI), auch als deutlich kleineres MP4 (Codec H.264) ablegen kann. Dazu wollte ich ffmpeg verwenden. Mit folgender Befehlszeile erhalte ich ein optisch verlustfreies MP4:

Quellcode

1
ffmpeg -i datei.avi -c:v libx264 -preset slow -crf 0 -c:a aac -b:a 384k -pix_fmt yuv420p -f mp4 -y datei.mp4

Mit dem Media Player Classic kann ich dieses problemlos abspielen, aber weder Premiere, noch After Effects, noch der Adobe Media Encoder können das Bild lesen. Entweder sind alle Frames grün oder zumindest die ersten bzw. teilweise mittendrin. Es gibt aber keine Fehlermeldung.

Ich habe bereits "-preset" verändert und auch "-pix_fmt" weggelassen. Das bringt leider nichts.

Hat jemand eine Idee, wie ich ein Adobe-kompatibles MP4 erzeugen kann?

Dr_Allcome

Registrierter Benutzer

Beiträge: 239

Dabei seit: 12. April 2012

Hilfreich-Bewertungen: 66

  • Private Nachricht senden

2

Dienstag, 31. Mai 2016, 18:08


Hat jemand eine Idee, wie ich ein Adobe-kompatibles MP4 erzeugen kann?


Kannst du mal ein ffprobe auf deine Ausgabedatei machen, also:

CMD> ffprobe dabei.mp4

Ich kenne jetzt Adobe Premiere nicht groß, aber ich würde mal erwarten, dass ein Weltunternehmen wie Adobe einen vernünftigen h.264 Codec mitliefert. Daher würde ich eher auf den Treiber deiner Grafikkarte tippen, denn wenn der Hardwarebeschleuniger deiner Grafikkarte ein Problem beim dekodieren des Streams hat, dann erhält man häufig dieses typische, grüne Bild. Ein Treiberupdate kann hier helfen oder du schaltest einfach mal testweise die Hardwarebeschleunigung in Premiere aus. Ist das eine AMD Karte?

Einen CRF von 0 zu nehmen ist jetzt auch nicht die beste Idee. Die meisten Leute sehen schon bei 18 keinen Unterschied mehr zum Original und die Bitrate steigt exponentiell bei kleineren CRF Werten. Das kann auch der Grund sein warum Premiere nicht mit dem MP4 zurecht kommt. Falls es nicht an der Hardwarebeschleunigung liegen sollte, dann kommt der Premiere Codec evtl nicht mit den riesigen Bitraten klar.

Wenn du einen CRF von 0 möchtest, dann solltest du dich fragen ob du nicht mit einem Intermediate Codec besser bedient wärst. Ein CRF von 6 hingegen, sollte die Bitrate bereits halbieren und ich kann mir nicht vorstellen, dass du da einen Unterschied siehst. Vielleicht kommt Premiere dann mit dem MP4 zurecht.

Alternativ kannst du beim Kodieren auch ein älteres H.264 Profil (z.B. -profile:v high -level 4.0) angeben, so dass sich ffmpeg näher an einem der vielen H.264 Versionen orientiert. Vielleicht kommt Premiere einfach nicht mit modernen H.264 Profilen zurecht. Das wäre aber schon arg erbärmlich für den Platzhirschen am Markt und dazu sollten einige Forenposts zu finden sein.

Es hat bereits 1 registrierter Benutzer diesen Beitrag als hilfreich eingestuft.

Benutzer, die diesen Beitrag hilfreich fanden:

Marcus Gräfe

Marcus Gräfe

Administrator

  • »Marcus Gräfe« ist männlich
  • »Marcus Gräfe« ist der Autor dieses Themas

Beiträge: 5 943

Dabei seit: 14. August 2002

Wohnort: Düsseldorf

Hilfreich-Bewertungen: 565

  • Private Nachricht senden

3

Freitag, 3. Juni 2016, 23:06

Danke für die Antwort. Ich habe etwas rumexperimentiert und herausgefunden, dass "-crf 0" die Probleme macht. Bei einem anderen Test konnte man sogar gar kein Bild sehen, also auch nicht grün, sondern das Video hatte 0x0 Pixel.

Nun mache ich "-crf 1" und das geht tadellos. Zwar ist die Datei z. B. in After Effects sehr zähflüssig, aber das ist mir egal.

Meine endgültige Befehlszeile lautet so:

Quellcode

1
ffmpeg -i "datei.avi" -c:v libx264 -preset veryslow -crf 1 -c:a aac -b:a 384k -pix_fmt yuv420p -f mp4 -y "datei.mp4"


Die meisten Leute sehen schon bei 18 keinen Unterschied mehr zum Original

Ich habe sogar gelesen, dass bereits 21 visuell identisch zum Original sein soll. Das kann ich allerdings in keiner Weise bestätigen. Erst vor wenigen Tagen habe ich ein Video kodiert, welches erst ab crf 16 einigermaßen aussah. Bei allen Werten darüber waren Schriften mit Artefakten übersäht. Das waren aber keine Umrechnungsfehler, sondern die ganz normale Kompression.

Da es sich hierbei um meine Master-Dateien handelt, die ich nicht wiederherstellen kann (ich lösche Projekte und Originalmaterial nach Fertigstellung), sollte die Qualität so hoch wie möglich sein, aber kleiner als ein Lagarith, weil mir langsam der Platz ausgeht. Und das habe ich nun.

LennO

Registrierter Benutzer

Beiträge: 382

Dabei seit: 3. Juni 2015

Hilfreich-Bewertungen: 127

  • Private Nachricht senden

4

Samstag, 4. Juni 2016, 00:07

Wie wäre es denn mit einem "vernünftigen" Intermediate Codec wie DNxHD? H264 ist nicht gerade ein geeignetes Master-Format, und solltest du nochmal dran schneiden wollen (da du es ja in Premiere wieder laden wolltest) auch nicht sonderlich effizient und CPU freundlich beim Schnitt.

Marcus Gräfe

Administrator

  • »Marcus Gräfe« ist männlich
  • »Marcus Gräfe« ist der Autor dieses Themas

Beiträge: 5 943

Dabei seit: 14. August 2002

Wohnort: Düsseldorf

Hilfreich-Bewertungen: 565

  • Private Nachricht senden

5

Samstag, 4. Juni 2016, 00:34

Die Datenrate bei DNxHD ist aber relativ hoch. Mir geht's eher um die Dateigröße. Schneiden will ich das Material nicht, nur mit dem Adobe Media Encoder evtl. mal umkodieren und evtl. mal einen kleinen Ausschnitt mit Premiere ausschneiden. Dafür reicht das MP4 aus.

Dr_Allcome

Registrierter Benutzer

Beiträge: 239

Dabei seit: 12. April 2012

Hilfreich-Bewertungen: 66

  • Private Nachricht senden

6

Samstag, 4. Juni 2016, 00:55

Mir geht's eher um die Dateigröße.


Ja, wenn die Dateigröße das Primärziel ist, dann ist h.264 oder besser noch h.265 eine gute Wahl. Eine Konvertierung nach DNxHD ist ja auch nur ein ffmpeg Befehl entfernt und geht recht schnell.

Wenn es sich um nachbearbeitetes Material handelt (im Sinne von Color Grading), dann solltest du dir aber überlegen das Pixelformat hochzuziehen. Du wärst dann mit einem "-pix_fmt yuv422p10" besser bedient, weil du dann zumindest 10 Bit Farbtiefe hast. Alternativ auch yuv422p16 wenn du noch mehr brauchst.

Ich würde auch noch mal mit dem Constant Rate Factor experimentieren, denn ein CRF von 1 ist wirklich Overkill. Ich denke mit einem Wert von 5 oder 6 solltest du das gleiche erreichen bei wesentlich geringerer Dateigröße.

Marcus Gräfe

Administrator

  • »Marcus Gräfe« ist männlich
  • »Marcus Gräfe« ist der Autor dieses Themas

Beiträge: 5 943

Dabei seit: 14. August 2002

Wohnort: Düsseldorf

Hilfreich-Bewertungen: 565

  • Private Nachricht senden

7

Sonntag, 5. Juni 2016, 16:07

weil du dann zumindest 10 Bit Farbtiefe hast

Da das ganze Material von der Kamera bis zum Export immer nur 8 Bit hatte, würde sich das nicht lohnen.

denn ein CRF von 1 ist wirklich Overkill

Ich werde mal ein paar Tests machen, ob ich etwas über 1 auch durchgehen lassen kann. ;)

Marcus Gräfe

Administrator

  • »Marcus Gräfe« ist männlich
  • »Marcus Gräfe« ist der Autor dieses Themas

Beiträge: 5 943

Dabei seit: 14. August 2002

Wohnort: Düsseldorf

Hilfreich-Bewertungen: 565

  • Private Nachricht senden

8

Samstag, 18. Juni 2016, 19:39

Ich habe festgestellt, dass -pix_fmt yuv420p für deutliche Farbverfälschungen sorgt. Ohne die Angabe macht er ein 4:4:4-Farbsampling, welches von Adobe nicht gelesen werden kann (zumindest nicht von CS6). Nach einigen Experimenten hat sich -pix_fmt yuvj420p als gute Lösung herausgestellt. Die Farbverfälschung ist minimal bis nicht vorhanden und Adobe liest die Datei problemlos.

Weiterhin habe ich den CRF-Wert auf "6" anheben können, ohne dass man mit bloßem Auge Unterschiede zwischen dem Lagarith und dem MP4 feststellen könnte.

Meine endgültige Mastering-Befehlszeile für ffmpeg sieht daher so aus:

Quellcode

1
ffmpeg -i "quelle.avi" -c:v libx264 -preset veryslow -crf 6 -pix_fmt yuvj420p -c:a aac -b:a 384k -f mp4 -y "ziel.mp4"

Beim Ton höre ich ebenfalls keine Unterschiede zum WAV im Lagarith-AVI.

Die Dateigröße ist im Durchschnitt ca. 4x so klein wie das Original-AVI.

Nachtrag: Ich verwende übrigens die ffmpeg-Version vom 17.06.16.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Marcus Gräfe« (18. Juni 2016, 19:46)


Es hat bereits 1 registrierter Benutzer diesen Beitrag als hilfreich eingestuft.

Benutzer, die diesen Beitrag hilfreich fanden:

joey23