Farbstich und Unschärfe im Video (mencoder)

  • Hallo,

    ich exportiere aus Premiere Elements ein uncompressed AVI 24bit RGB wie ich es in diesem Thread schon einmal beschrieben habe:

    http://forum.gleitz.info/showthread.php?t=34668

    Folgendes Problem tritt auf:

    Wenn ich dieses Video mit mencoder in ein AVI xvid/mp3 encodiere, habe ich im Video einen roten Farbstich und es wird etwas unscharf.

    Hier mein mencoder Output:

    Das ganze Video mit VirtualDub mit den gleichen Xvid Einstellungen, sieht dagegen super aus.

    Meine Vermutung ist das es an dem Farbmodus des unkomprimierten AVIs liegt, VirtualDub scheint das Video vorher in einen anderen Farbmodus zu konvertieren (YV12?) wie es bspw. auch MeGUI macht.
    Desweiteren habe ich zum Test mal aus Premiere über ffdshow exportiert und dort uncompressed im Farbmodus YV12 ausgewählt. Das Resultat nach mencoder hatte keinen Farbstich.

    Gibt es eine Möglichkeit über mencoder zuerst das Video in bspw. YV12 zu konvertieren? Bspw. über einen Filter?

    Andere Möglichkeit wäre auf das uncompressed AVI 24bit RGB zu verzichten. Ideal müsste eine ANternative direkt in Premiere Elements wählbar sein, also keine Extra-Installation von ffdshow oder huffyuv etc. . Mir ist da der uncomrpressed UYVY Codec aufgefallen, hat jemand damit Erfahrung? Oder evtl. eine andere Empfehlung.

    Und bevor ich es vergesse, andere Tools sollten nicht verwendet werden, also kein AVISynth, MeGUI usw..

  • ".. AVI 24bit RGB .." + ".. BGR 24-bit .."

    BGR Wert = (Blau * 65536) + (Grün * 256) + Rot
    RGB Wert = (Rot * 65536) + (Grün * 256) + Blau

    Mal die switches durchgeguckt, ob man mencoder nicht sagen kann, dass das Video RGB und nicht BGR ist? (eventuell mit rgb2bgr)

  • Muss es unbedingt unkomprimiertes RGB sein? Warum nicht was "verlustfrei komprimiertes", z.B. HuffYUV?
    ...

    Ach, wurde da auch schon gefragt. - -Siehst du: Naheliegendes.

    Es gibt mehrere Möglichkeiten, RGB24 in AVI zu kennzeichnen (mehrere FourCCs). Vielleicht kennt Mencoder nicht alle, oder versteht eine Variante falsch.

  • Muss es unbedingt unkomprimiertes RGB sein? Warum nicht was "verlustfrei komprimiertes", z.B. HuffYUV?

    Weil man dafür manuell einen Codec installieren muss. Und später soll damit der dümmste Anwender klarkommen.

    Vielleicht kurz was ich am Ende haben will. Ich möchte ein super simples Encodingprogramm haben das (jedenfalls bis jetzt) komplett auf mencoder aufsetzt. Dieses Programm soll am Ende "annähernd" das gleich Ergebnis liefern wie die Encodings aus VirtualDub (ohne Schnick Schnack nur Encoding und Deinterlacen) die früher erstellt wurden.

    Also der Anwender bin nicht ich sondern Leute die mit Codecs nix am Hut haben.

  • Mal die switches durchgeguckt, ob man mencoder nicht sagen kann, dass das Video RGB und nicht BGR ist? (eventuell mit rgb2bgr)

    Bei mencoder gibt es einen Filter für eine rgb/bgr conversion "-vf rgb2bgr"

    Kommt aber nur folgendes bei raus:

  • Gibt es evtl. ein Commandline Tool das mir das Video vorher vernünftig konvertiert damit mencoder es friss? Habe mal einen Versuch mit ffmpeg gemacht, dort ist im Ergebnis ebenfalls ein Rotstich zu sehen.

  • Meinst du auch wirklich "Rotstich", oder "Vertauschung von rot mit blau"?

    Und die beste Möglichkeit, die mir einfiele, wäre ein "FourCC Changer", u.U. ein Hex-Editor (ein FourCC muss ja nicht immer lesbare bzw. tippbare Zeichen enthalten), und die Lektüre von fourcc.org im RGB-Kapitel.

  • Anbei im ZIP-File zum Vergleich das Ergebnis von Vdub und mencoder.

    Gibt es nicht eine Möglichkeit das Video vorher in YV12 zu konvertieren, wie gesagt so macht es MeGUI über Avisynth. Jedoch möchte ich auf eine Installation von Avisynth verzichten und auch keine Skripte haben, da ich dann immer das Skript neu schreiben muss wenn sich der Input ändert.

  • Habe mal versucht den FourCC zu editieren, erstmal habe ich das raw AVI mit "avinaptic" geöffnet (siehe Screenshot). Dort steht das kein FourCC angegeben ist. Auf fourcc.org hatte ich mich ebenfalls schonmal umgeschaut und würde sagen das "RGB" der richtige fourcc wäre, bzw. habe ich den zuerst getestet.

    Nachdem ich den Fourcc editiert habe spuckt mencoder das hier aus:

    Was mich wundert ist das dort jetzt "fourcc:0x20424752" steht, sollte ja eigentlich "0x32424752" sein.

  • "FourCC" heißt: 4-Zeichen-Code. Vier. Nicht bloß drei. "RGB" sind aber nur drei Buchstaben.

    Der Buchstabe "R" hat im ASCII-Code den Hexadezimalwert 52h.
    Der Buchstabe "G" hat im ASCII-Code den Hexadezimalwert 47h.
    Der Buchstabe "B" hat im ASCII-Code den Hexadezimalwert 42h.

    Bleibt also noch der Hexadezimalwert 32h aus dem angegebenen Viererpack: Der entspricht dem ASCII-Zeichen "2". Somit enthält der FourCC also die lesbaren Zeichen "RGB2" (für RGB24).

    Für einen FourCC ist die binäre (hexadezimale) Darstellung ausschlaggebend. Es müssen ja nicht immer lesbare Zeichen enthalten sein. Beispielsweise kann der FourCC 0x00000000 nicht lesbar mit vier Buchstaben oder Ziffern dargestellt werden, ist aber eigentlich der Standard für RGB 24 bit.
    __

    Und was jetzt dein Video angeht ... ach, das ist ja alles grau in grau. Daran kann man ja gar nicht erkennen, ob rot und blau in der richtigen Reihenfolge erkannt wurden. Vermutlich wird also das RGB-Video exakt eingelesen - aber die Umwandlung in YUV läuft im Mencoder etwas anders als im XviD-Codec, anscheinend wird da etwas anders gerundet, wodurch die Farbdifferenz-Komponenten da leicht abweichen.

    Ist jedenfalls wahrscheinlich ein ganz anderes Problem als das, was ich bisher vermutet hatte.

  • Teilweise. Das mehrfache Hin-und-her-konvertieren zwischen YUV und RGB hat aber auch einen gewissen Einfluss.

    Es ist manchmal schon ein gewisser Unterschied, ob (und wie) aus RGB-Werten berechnet wird, dass die U- und V-Komponente den Wert 0 haben (oder eben einen leicht abweichenden Wert), oder ob der Codec schon den Wert 0 aus der Quelle bekommt. Und es scheint so, dass Mencoder diese Umrechnung nicht exakt genug macht.

Jetzt mitmachen!

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