Unterschied zwischen x264 und Lagarith

  • Hallo,

    es gibt ja eigentlich mehrere bekannte methoden, sogenannte lossless Encodes zu machen, die zwei meist genutzten varianten sind sicherlich, x264 oder Lagarith, nun wollte ich gerne mal Wissen, wo bei den beiden, der Vor und Nachteil liegt?

    Ich selber hatte Gestern mal mit einer 24min Episode einer Serie gemacht und folgende Einstellungen vorgenommen für Lagarith in Virtual Dub:

    Und x264 hatte ich folgender massen benutzen:

    Zitat

    x264.exe --level 4.1 --preset fast --tune animation --qp 0 --threads 2 --bframes 3 --b-adapt 2 --b-pyramid none --ref 2 --stats ".stats" --output

    Nun hatte ich mal beide Varianten Probiert, die jeweilige Encode dauer betrug jeweils etwas mehr als, 3 Stunden.
    Der x264 Lossless Encode wurde ungefähr 800MB kleiner, als der Lagarith Encode.
    Die Finale größe ist, das der einzige Unterschied zwischen den beiden Decodern, ich hatte nachgelesen, das der x264 Lossless Encode, schneller als der Lagarith Decoder sein soll, was mir aber aus dem Test wo ich gemacht hatte, nicht hervorging.



  • Du hast HuffYUV ganz vergessen. Und FFV1 und MSU Lossless gibt es auch noch ;)

    Da verlustfreie Kompressionsverfahren nun mal verlustfrei sind, kann es per Definition keine Qualitätsunterschiede geben (von einer Farbraum-Konvertierung mal abgesehen). Die Unterschiede sind daher ausschließlich bei "Geschwindigkeit -vs- Kompressionsgrad" zu suchen. Eventuell noch beim Punkt "stabilität" (Lagarith hat da ja keinen all zu guten Ruf). Bei der Geschwindigkeit muss man natürlich noch Encoding und Decoding separat betrachten! Wer "live" Aufnehmen will, der wird vor allem schnelle Encodierung erwarten, damit es keine Frame-Drops gibt. Die Decoder-Geschwindigkeit spielt eher beim Weiterverarbeiten und Re-Encoden eine Rolle. Ein weiterer Aspekt wäre vllt noch, ob man Frame-Genau schneiden kann. Das ist bei "verlustfreiem" H.264 schon mal nich der Fall, sofern P-Frames verwendet wurden. Natürlich kann man auch mit H.264 einen "Intra only" Stream erzeugen, aber dann leidet die Kompressions-Effizienz wieder...

    Übrigens gibt es keinen "x264 Decoder"! x264 ist ein H.264 Encoder und erzeugt 100% Standard-konforme H.264 Datenströme. Als Decoder kommt also jeder H.264 Decoder in Frage, der das "High" Profile mit "Predictive Lossless Coding" beherrscht. Je nach dem welchen H.264 Decoder man einsetzt, kann die Decodier-Geschwindigkeit sehr unterschiedlich sein...


    Zitat

    Und x264 hatte ich folgender massen benutzen:
    x264.exe --level 4.1 --preset fast --tune animation --qp 0 --threads 2 --bframes 3 --b-adapt 2 --b-pyramid none --ref 2 --stats ".stats" --output

    Die meisten deiner Option sind sinnlos. So verwendet x264 im "lossless" Mode prinzipiell keine B-Frames. Damit fallen "--bframes 3 --b-adapt 2 --b-pyramid none" schon mal weg.

    Außerdem dürfte "--tune animation" auch überflüssig sein, weil sämtliche PSY Optionen bei einer "verlustfreien" Kompression per Definition deaktiviert sind...

  • Nun ja - der Lagarith-Codec hat mit MPEG4 nichts und mit AVC erst recht gar nichts zu tun, soweit ich weiß. Vielleicht ist deshalb die Forenrubrik, in der dieser Beitrag steht, nicht ganz optimal...

    Um die beiden richtig miteinander vergleichen zu können, muss man wohl beide hinreichend genau kennen, ich bezweifle aber, dass das hier viele von sich behaupten können. Zumindest mutmaße ich mal: Beide arbeiten recht unterschiedlich - wahrscheinlich gibt es auch im Lossless-Modus von x264 erst mal die gleiche Block-Zerlegung und Transformation, die auch im sonst üblichen Modus durchgeführt wird, was Lagarith nicht tun wird. Weiterhin vermute ich, dass Lagarith vielleicht Differenz-Frames (sozusagen P-Frames) verwendet, aber keine beidseitig abhängigen (B-Frames). Ob die Abstände von Schlüsselbildern (I-Frames) vergleichbar weit sind, müsste untersucht werden (es gibt verlustlose Codecs, die eher geringe Abstände bevorzugen).

    Vor- oder Nachteile ergeben sich dann vielleicht eher im Workflow bei der Weiterverarbeitung: So sollte die Nutzung von Lagarith-Videos eher unproblematisch sein bei Tools, die AVIs per VfW-Schnittstelle lesen. AVC-Video (auch verlustloses) sollte dagegen besser nicht in AVIs zu finden sein, und die Weiterverarbeitung anderer Kontainerformate kann je nach Tool etwas umständlicher sein.

    Wäre nur die Frage, warum man überhaupt verlustlose Videos speichern muss? Bitte nicht falsch verstehen - es kann dafür durchaus gute Gründe geben; die sind aber eher selten anzutreffen...

  • Nun ja - der Lagarith-Codec hat mit MPEG4 nichts und mit AVC erst recht gar nichts zu tun, soweit ich weiß. Vielleicht ist deshalb die Forenrubrik, in der dieser Beitrag steht, nicht ganz optimal...



    Naja, Lagarith hat mit H.264 zumindest in so fern zu tun, als dass beide im Unterschied zu HuffYUV auf "Arithmetische Kodierer" zur Entropiekodierung setzen.

    Bei H.264 ist das zumindest mit "aktiviertem" CABAC der Fall. FFV1 hat sich zur Entropiekodierung ebenfalls CABAC von H.264 "geliehen" ....

  • Du hast HuffYUV ganz vergessen. Und FFV1 und MSU Lossless gibt es auch noch ;).

    Jetzt hast du mich erwischt, ich muss zugeben, das mir die jetzt nicht wirklich was sagen, könntest du mir viel leicht mehr darüber sagen? :ichdoof:


    Die meisten deiner Option sind sinnlos. So verwendet x264 im "lossless" Mode prinzipiell keine B-Frames. Damit fallen "--bframes 3 --b-adapt 2 --b-pyramid none" schon mal weg.

    Außerdem dürfte "--tune animation" auch überflüssig sein, weil sämtliche PSY Optionen bei einer "verlustfreien" Kompression per Definition deaktiviert sind...

    Ah OK, das werde ich mal berücksichtigen, Danke schön :)


    Wäre nur die Frage, warum man überhaupt verlustlose Videos speichern muss? Bitte nicht falsch verstehen - es kann dafür durchaus gute Gründe geben; die sind aber eher selten anzutreffen...

    Ich gehe da jetzt mal von mir aus, wenn man ein Encode mit MeGUI macht, wird ja normaler weiße, 2 Pass gemacht, was dann jeweils hier als Bsp. 1 Pass 3 Stunden dauern würde und der Zweite Pass dann genau so lange, dann wären es ja insgesammt, sechs Stunden Encode dauer, bei einem Losslees Encode, kann sich die Zeit um die hälfte oder noch mehr verkürzen, da ja nur ein Pass gemacht wird.

    Ich bin zwar in keiner sogenannten Fansubs Gruppe, aber soweit ich jetzt mal darüber gelesen habe, gibt es ja, mehrere Encodes, bis endlich die Finale Version rauskommt, wodurch es durch den Lossless Encode, einen ziemlichen Zeit verkürzung geben soll.

    Ihr dürft mich aber immer gerne berechtigen, wenn ich was falsch Schreibe, ich hatte mich auch nur mit dem Thema Encoding befasst, weil ich viele Filme auf VHS habe und ich die natürlich in der Besten Qualität haben möchte, die ich machen kann.

  • Im Unterschied zu einem 2-pass-Encode wird aber ein Lossless-Encode riesengroß.

    Wenn du dir einen Durchlauf sparen willst, aber dennoch eine gewisse Mindestqualität bei gleichzeitig vernünftigen Dateigrößen herauskommen soll, dann wäre wohl der qualitätsbasierte Modus mit CRF-Faktor die sinnvollste Variante. "Lossless" ist im Grunde "CRF = 0"; aber schon bei CRF = 18 werden die meisten Betrachter die Qualität als "nicht vom Original zu unterscheiden" beurteilen, und schon CRF = 20 dürfte noch für eine Einschätzung "ziemlich gute Qualität" ausreichen. Je kleiner der CRF-Wert, umso genauer die Kopie, aber auch umso größer. Leider aber ist die Größe dann auch nicht vorhersagbar, sie hängt dann in höchstem Maße vom Videoinhalt ab.

    Mehrfache Encodierung ist immer schlecht, wenn dabei Verluste entstehen. Mit jeder neuen Encodierung verfielfachen sich die Unterschiede zum Original. Man sollte wirklich immer möglichst alle Filterungen auf das Original anwenden, um die endgültige Kopie möglichst in einer Konvertierung zu erhalten. Dabei hilft AviSynth mit der Möglichkeit der Skriptprogrammierung auf jeden Fall.

    Wenn du Filme auf VHS hast, dann dürfte der Schritt zur bestmöglichen Qualität bereits damit anfangen, wie du die Bänder mit dem PC aufzeichnest. Denn so wenig Qualität, wie die Filme auf dem Magnetband noch nicht verloren haben, kann man dann nur noch erhalten, wenn man mit Bedacht vorgeht. Es gab hier schon Leute, die sich die Arbeit gemacht haben, den Film vier Mal aufzuzeichnen und unter Reparatur von Fehlern gegenseitig zu überlagern... Aber das kostet dann zusätzliche Tage.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten

    Einmal editiert, zuletzt von LigH (11. Juni 2010 um 16:00)

  • Jetzt hast du mich erwischt, ich muss zugeben, das mir die jetzt nicht wirklich was sagen, könntest du mir viel leicht mehr darüber sagen? :ichdoof:

    HuffYUV bzw. FFVHuff (erweiterte/verbesserte Variante von HuffYUV aus dem FFmpeg Projekt) ist eigentlich DER verlustfreie Codec. Da HuffYUV im Unterschied zu Lagarith und Co. "nur" Huffman-Kodierung und nicht die effizientere Arithmetische-Kodierung nutzt, komprimiert es etwas weniger effizient. Sprich: Die Datei wird bei gleicher Qualität (verlustfrei ist ja nun mal verlustfrei und daher immer von identischer Qualität) größer als bei Lagarith oder Lossless H.264. Dafür läuft HuffYUV aber sehr schnell. Ein weiterer Vorteil: HuffYUV wird im Unterschied zu Lagarith von FFmpeg & Co (MPlayer, MEncoder, Avidemux, etc) direkt "nativ" unterstützt. Es gibt aber natürlich auch einen VFW Codec für VirtualDub. Mit der VFW-Schnittstelle von ffdshow geht's auch.

    Zitat

    Ich bin zwar in keiner sogenannten Fansubs Gruppe, aber soweit ich jetzt mal darüber gelesen habe, gibt es ja, mehrere Encodes, bis endlich die Finale Version rauskommt, wodurch es durch den Lossless Encode, einen ziemlichen Zeit verkürzung geben soll.

    Wenn man mehrere Encodes durchführt, dann macht es allein schon deshalb Sinn, alle bis auf den "Final" Encode verlustfrei zu komprimieren, damit man nicht bei jedem Kompressions-Schritt erneut Verluste in Kauf nehmen muss! Stichwort: Generationsverlust ;)

  • Zitat

    Du hast HuffYUV ganz vergessen. Und FFV1 und MSU Lossless gibt es auch noch


    Da wäre noch Canopus Lossless zu erwähnen.

    Eins habt Ihr aber nicht berücksichtigt;beim codieren in Lagarith kann man alle vorhandenen Kerne einbinden.

    Capturen in YUY2,filtern und schnippeln und dann bevors der Procoder bekommt [auch in 4:2:2] abspeichern in Lagarith.
    Mache ich hier aus Platzgründen.
    1,5 h YUY2 = 114 GB. Filmgrösse
    Nun codiert in Lagarith wird die Datei 35 GB gross.
    So umgehe ich die Treppenkanten in schrägen Linien bei DV.

    Könnte jemand so freundlich sein und den aktuellsten Link zum DL. von FFvHuff zeigen?

    ffdshow möchte ich nicht auf den beiden Videorechner installieren [Edius + Vegas]
    und Avidemux noch nicht,weil:
    a.erstes Bild im Playerfenster bleibt grün.
    b.jedesmal muss man das Playerfenster manuell auf die halbe Grösse neu einstellen.
    Will ja nur ein farbiges Bild sehen,keine Qualikontrolle am PC Moni vornehmen.

    Datenrettungen Normwandlungen Restaurierungen Digitalisierungen

  • Also wenn ich jetzt mal sehr grob zusammen würde.
    Es gibt also mehere Decoder/Encoder wo den sogenannten Lossless Encode (eher: Modus?) beherschen.

    Lagarith
    Lagarith wird eigentlich häufig benutzt, soweit ich jetzt gelesen hatte und hat wohl auch einige Fehler, wie ja LoRd_MuldeR in seinen Posts geschrieben hatte.
    Und untersützt auch die Arithmetische-Kodierung (Dieses Wort, ist ein Zungenbrecher ;D)

    H.264 Decoder
    Der oder ein H.264 Decoder, hat die gleichen eigenschaften wie der Lagarith Codec, nur hat er bessere Arithmetische-Kodierung wodurch, die Kompremierung, besser wir wie beim Lagarith und soll auch, was die Geschwindigkeit angeht, vorteile haben.

    HuffYUV
    Der HuffYUV Decodern vom FFmpeg Projekt, ist eigentlich einer der besten lösungungen, wie LoRd_MuldeR in seinem Post geschrieben hatte, er ist schnell und Arbeitet wohl auch am besten, nur die geringe Komprimierung sind eher schlecht zu den H.264 und Lagarith Decodern.

    Es gibt natürlich noch einige anderen sachen, wie FFV1, MSU Lossless, LCL-Codec, und AZW wobei mir die letzten zwei, überhaupt nichts sachen und denke, die meist genutzten sind wohl: H.264, Lagarith und HuffYUV.

    Ich habe auch einiges noch auf Wikipedia nachgelesen und muss sagen, das mir aktuell schon leicht der Kopf wehtut, vom vielen Lesen und ich denke, das es besser ist, wenn ich mir viele Notizen mache, weil alles im Kopf behalten, geht sicherlich nicht so einfach.

    Ich weiß auch, das dies jetzt alles nur eine grobe zusammenfassung ist, man kann natürlich das alles auch ausführlich schreiben, aber zu dem jetzigen Zeitpunkt würde das eher mein Horizont übersteigen und ich erkannt habe, wenn man RICHTIG Encoding betreiben will gibt es am Anfang, nur sehr viel lesen und wohl auch fragen stellen :grübeln:

  • H.264 Decoder
    Der oder ein H.264 Decoder, hat die gleichen eigenschaften wie der Lagarith Codec, nur hat er bessere Arithmetische-Kodierung wodurch, die Kompremierung, besser wir wie beim Lagarith und soll auch, was die Geschwindigkeit angeht, vorteile haben.

    Das stimmt so nicht. H.264 ist zunächst einmal ein Video-Standard, der unter anderem auch "verlustfreie" Kompression ermöglicht. Die aller meisten H.264 Dateien in freier Wildbahn werden aber wohl verlustbehaftet sein! Darüber hinaus gibt es diverse H.264 Encoder und Decoder, die alle untereinander kompatibel sind (sein sollten), da sie alle den H.264 Standard umsetzen. x264 ist nur ein H.264 Encoder von vielen, allerdings einer der besten. Und x264 unterstützt den "verlusfreien" Modus, was nicht bei allen H.264 Encodern der Fall ist. Richtig ist, dass H.264 mit "CABAC" (Conext-Adaptive-Binary-Arithmetic-Coding) eine Form der Arithmetischen-Kodierung unterstützt. Ob diese aber effizienter als der Arithemtische-Kodierer von Lagarith ist, das sei mal dahin gestellt. Ich würde vermuten, dass x264 im "lossless" Mode die bessere Kompressions-Effizienz gegenüber Lagarith vor allem aus den P-Frames und aus der Bewegungs-Kompensation rausholt...

  • Das stimmt so nicht. H.264 ist zunächst einmal ein Video-Standard, der unter anderem auch "verlustfreie" Kompression ermöglicht. Die aller meisten H.264 Dateien in freier Wildbahn werden aber wohl verlustbehaftet sein! Darüber hinaus gibt es diverse H.264 Encoder und Decoder, die alle untereinander kompatibel sind (sein sollten), da sie alle den H.264 Standard umsetzen. x264 ist nur ein H.264 Encoder von vielen, allerdings einer der besten. Und x264 unterstützt den "verlusfreien" Modus, was nicht bei allen H.264 Encodern der Fall ist. Richtig ist, dass H.264 mit "CABAC" (Conext-Adaptive-Binary-Arithmetic-Coding) eine Form der Arithmetischen-Kodierung unterstützt. Ob diese aber effizienter als der Arithemtische-Kodierer von Lagarith ist, das sei mal dahin gestellt. Ich würde vermuten, dass x264 im "lossless" Mode die bessere Kompressions-Effizienz gegenüber Lagarith vor allem aus den P-Frames und aus der Bewegungs-Kompensation rausholt...

    Ah, vielen Dank, für die Richtig stellung, da hatte ich wohl leider was falsch verstanden *schäm*

    Wie sieht eigentlich mit der Zukunft aus besonder mit H.264 und HuffYUV, was die verlustfreie Codierung angeht, wird es eigentlich in Zukunft in diesem bereich große sprünge geben?
    Von Lagarith, wird wohl nichts mehr neues erscheinen oder?
    Wenn ich da richtig verstanden habe, wurde der extra für Virtual Dub geschrieben und da dieses Programm ja nicht mehr weiter programmiert wird, denke ich mal das da nichts weiters kommen wird?

  • Ah, vielen Dank, für die Richtig stellung, da hatte ich wohl leider was falsch verstanden *schäm*
    Wie sieht eigentlich mit der Zukunft aus besonder mit H.264 und HuffYUV, was die verlustfreie Codierung angeht, wird es eigentlich in Zukunft in diesem bereich große sprünge geben?
    Von Lagarith, wird wohl nichts mehr neues erscheinen oder?

    Was genau erwartest du? Ich würde, was die verlustfrei Kompressions angeht, in absehbarer Zeit keine all zu großen Sprünge erwarten. Zum einen weil verlustfrei Kompression doch eher ein Nischenprodukt ist und höchstens von Video-Enthusiasten und -Profis als "Zwischenformat" eingesetzt wird und zum anderen weil Speicherplatz immer billiger wird. Außerdem ist mit der Artheimtischen-Kodierung bereits das theoretische Optimum für die "Entropie" erreicht. Da geht es "verlustfrei" nicht mehr viel besser. Sicher, hier und da wird man durch bessere Vorhersage-Funktionen (d.h. noch mehr Rechenaufwand) noch etwas raus holen können, aber da werden keine Größenordnungen dazwischen liegen.

    Was H.264 angeht haben wir mit x264 bereits einen exzellenten Encoder, der auch sehr aktiv weiter entwickelt wird. Darüber hinaus ist H.264 heute der Video-Standard in allen Bereichen (BluRay, HDTV, Internet-Streaming, mobile Geräte, etc), so dass es wohl noch einige Jahre dauern wird, bis H.264 verdrängt wird. Auf breite Hardware-Unterstützung für "verlustfreies" H.264, wie es x264 erzeugt, wird man aber wohl lange warten können. Aber wie gesagt, für 99% aller Anwendungen ist eine verlustfreie Kompression ohnehin völlig übertrieben...


    Wenn ich da richtig verstanden habe, wurde der extra für Virtual Dub geschrieben und da dieses Programm ja nicht mehr weiter programmiert wird, denke ich mal das da nichts weiters kommen wird?

    VirtualDub wird sehr wohl weiter entwickelt. VirtualDubMod ist seit Jahren tot. Und Lagarith ist keineswegs an VirtualDub(Mod) gebunden ;)

  • Wer sich wirklich für verlustlose Komprimierung interessiert, der sollte wohl mit dem Werk zur Informationstheorie von Claude Shannon beginnen... nur empfohlen für Informatik-Studenten, die verstehen, dass Informatik mehr als nur PC-Bedienen ist. ;)


  • Was H.264 angeht haben wir mit x264 bereits einen exzellenten Encoder, der auch sehr aktiv weiter entwickelt wird.


    ...und in 2 Jahren vermutlich vom H.265 abgelöst wird. Dann kann die Dateigröße bei gleichbleibender Qualität halbiert werden. Vielleicht hat dann auch hochauflösendes DVB-T in Deutschland eine Chance.

  • ...und in 2 Jahren vermutlich vom H.265 abgelöst wird. Dann kann die Dateigröße bei gleichbleibender Qualität halbiert werden. Vielleicht hat dann auch hochauflösendes DVB-T in Deutschland eine Chance.



    Eine Halbierung der Bitrate bei gleich bleibender subjektiver Qualität halte ich schon für SEHR optimistisch. Aber hier ging es ja um die verlustfreie Kompression, was noch einmal etwas ganz anderes ist! Außerdem ist die Veröffentlichung der H.265 Spezifikationen erst für 2012 geplant. Bis dann jemand einen vernünftigen Encoder programmiert hat, der auch nur halbwegs auf dem Niveau von x264 ist, werden wohl nochmals ein paar Jahre ins Land ziehen. Von einer nennenswerten Verbreitung des H.265 Formats ganz zu schweigen. H.264 ist heute DER Standard und mit BluRay und DVD-S2 in Millionen verkaufter Geräte verankert. Ob H.264 jemals durch H.265 "abgelöst" wird, das steht heute noch in den Sternen. MPEG-2 ist von 1994 und wird bis heute verwendet. Denn MPEG-2 wurde niemals vollständig von H.264 abgelöst, sondern es wird weiter auf Video-DVD's und bei DVB-S/-T/-C verwendet. Das wird mit H.264 ähnlich sein: Nur weil die H.265 Spezifikationen veröffentlicht werden, wird H.264 nicht plötzlich verschwinden. Den "3D Boom" hat H.265 auch verpasst, da H.264 diesen Bereich mit der Multiview Video Coding (MVC) Erweiterung bereits abdeckt...

    (BTW: HDTV über DVB-T ist sehr wohl mit H.264 möglich, wird aber in Deutschland ganz einfach nicht gemacht)

Jetzt mitmachen!

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