Warum encodet XVID nicht mit der eingestellten Bit-Rate

  • Hallo Leutz,
    ich möchte Videos/Filme "klein"-rechnen und muss dazu den XVID-Codec verwenden. Ich verwende TMPG Mastering Works 5 und habe inzw. einige XVID Versionen ausprobiert. Das Problem ist, dass ich das Video mit 500kBit/s encoden will, aber das Ergebnis hat immer unterschiedliche Bitraten. Äußerst kurios...ich übergebe dem Programm 3 oder 4 Filme, die alle mit den gleichen Einstellungen encodet werden sollen, aber alle Filme haben dann unterschiedliche Bitraten...einer wird sogar mit 1219kBit encodet :hm: Ich kann im Codec einstellen was ich will, es ist, als ob XVID da seine eigenen Dinge verwendet...

    Mal zum Hintergrund: Wir haben so einen Medion Videoplayer, den man im Auto an der Kopfstütze anbringen kann, damit unser Kind auf Urlaubsfahrten was gucken kann. Dieser Player ist schon etwas älter und versteht nur XVID als Codec. Ich will ein paar Filme auf einen USB Stick packen und es kommt dabei in erster Linie darauf an, das möglichst viel drauf passt. Der Bildschirm des Players hat nur etwas über 400 Pixel Breite, sodass die Videos auch nicht größer sein müssen. Bei dieser Auflösung reichen 500kBit/s dicke aus.

    Aber nun muss ich den Codec iwie dazu überreden, diese 500kBit auch zu verwenden. Wenn ich verschiedene Bitraten einstelle und dann jeweils teste, kann ich kann keinen logischen Zusammenhang bei der resultierenden Bitrate erkennen...das Ergebnis ist immer höchst unterschiedlich. Einzig einen nennenswerten Einfluss hat es, wenn ich im Codec statt Bitrate den Quantizer einstelle und dann so lange am Regler rumschiebe und anteste, bis wenigstens IN ETWA die gewünschte Bitrate rauskommt...aber das kanns ja dann auch nicht sein...

    Daher meine Frage: Was mache ich falsch?

    THX Topper

  • Grundsätzliche Frage: Wenn du eine Zielbitrate verwendest, arbeitet TMW5 dann mit einem (ABR) oder zwei (VBR mit Statistikdatei) Durchläufen? Bei nur einem Durchlauf sind Abweichungen generell keine große Überraschung, höchstens in ihrem Umfang. Die 2-pass-VBR-Methode sollte allerdings ziemlich genau arbeiten (sofern keine Sättigungseffekte auftreten).

    Davon abgesehen ist aber eine feste Quantisierung eigentlich noch das bessere Kriterium, wenn es um halbwegs konstante Qualität geht. Die für einen gewissen Qualitätserhalt notwendige Bitrate hängt ja sehr stark vom Videoinhalt ab.

  • Öhm...na ja...im TMW5 selbst stellt man da garnichts ein, das ist alles im Codec selber. Qualität ist hier nicht so wichtig...unserer 5-Jährigen ist das herzlich egal, wenns Bild mal nicht so sauber ist. Nur encode ich auf diese Weise nicht zum ersten mal, aber noch nie zuvor bin ich auf solch ein Problem gestossen...die Bitraten-Eintellungen wurden immer beachtet....achso ja...ich encode immer Single, das war immer ausreichend und wie gesagt, hat auch nie zuvor zu solchen Abweichungen geführt...

  • 1-pass ABR produziert mit Sicherheit die größten Qualitätsschwankungen im Verlaufe der Spielzeit eines Clips. Ganz zu schweigen von unterschiedlicher Qualität beim Vergleich mehrerer Clips. Der einzige Zweck dieses Modus ist, wenn man unter der Bandbreite einer bestimmten Übertragungstechnik bleiben muss (z.B. Netzwerk-Geschwindigkeit oder Auslesegeschwindigkeit eines langsamen Datenträgers); allerdings wäre es dafür deutlich empfehlenswerter, VBV-Grenzwerte mit einer anderer Art von Bitratenkontrolle zu kombinieren.

  • Ich danke dir erstmal. Aber das ist mir viel zu kompliziert...ich habe bisher immer Single encodet (ich komme mit den anderen beiden Einstellungen im Codec nicht klar) und fürs Kind und diesen kleinen Player ist das mehr als ausreichend. Die alles entscheidende Frage ist doch, warum konnte ich früher das gewünschte Ergebnis erzielen?! Was hat sich denn bloss geändert? Warum kann ich eine feste Bitrate im Codec einstellen, aber encodet wird dann nach Gutdünken?

  • Mit Sicherheit weiß ich das nicht. Da kann es einige Gründe geben. Sogar bis hin zu Fehlern in bestimmten Codec-Versionen bzw. Inkompatibilitäten zu aufrufenden Programmen in speziellen Fällen. Um das nachvollziehen zu können, müsste man die Encodierung im Detail nachvollziehen können (gleiche Codec-Version, gleiches Videomaterial). Theoretisch wäre es sogar denkbar, dass deine bisherigen Filme sich kaum unterschieden haben und die heutigen deutlich in ihren Eigenschaften abweichen. Zu viele Unbekannte. Alles zu vage.

    "Gutdünken" ist sicher nicht die richtige Beschreibung für das Verhalten. Software hat keine Gefühle, sie berechnet. Und berechnet wird nach eingestellten Parametern. Es ist gut möglich, dass die Parameter verstellt werden, wenn du einen Codec von einer alten Version zu einer neuen updatest, dann solltest du mal versuchen, alle Einstellungen zurückzusetzen und dann deine bevorzugten speziellen Einstellungen neu zu wählen. Auch gibt es sicher ein paar Parameter, die bei einer gleichmäßigeren Verteilung der Bitrate und einer besseren Annäherung an einen Zielwert helfen (was aber bei 1-pass ABR grundsätzlich nicht so zuverlässig geht).

  • Hmmm...ich habe jetzt einfach mal im Codec 2nd Pass eingestellt....das Ergebnis ist äußerst zufriedenstellend. Ich bin erstaunt, ich dachte immer man muss wenn es nicht Single ist, erstmal 1st Pass und DANN 2nd Pass laufen lassen (hatte vermutet, dass der erste Durchlauf der Analyse dient und DANN erst der 2. Durchlauf den Film encodet). Aber offenbar kann man gleich 2nd laufen lassen und es kommt ein annehmbares Ergebnis raus :)
    Wie hängt das tatsächlich zusammen...mal so interessehalber gefragt?

  • Grundsätzlich muss man das schon.

    Im ersten Durchlauf wird eine Statistik über den Bedarf jeder einzelnen Szene erstellt, indem das Video schnell mit fester Quantisierung encodiert wird. Nur so kann der Codec wissen, in welcher Szene viel Bitrate notwendig ist und in welcher auch weniger ausreicht.

    Wenn du einfach nur einen 2. Durchlauf startest, während die Statistik aus dem 1. Durchlauf eines völlig anderen Filmes noch vorhanden ist, dann kann es leicht passieren, dass für eine Szene, die wegen vielen Details und viel Bewegung eher viel Bitrate benötigen würde, vom Codec deutlich zu wenig bereitgestellt wird, weil zur gleichen Spiel-Zeit in einem anderen Film nicht viel passiert ist. Außerdem besteht das Risiko, wenn der aktuelle Film länger als der vorherige ist, dass die zu kurze Statistikdatei plötzlich vor dem Ende des Films zum Abbruch führt, und dann war die Encodierzeit bis dahin verschwendet (durch die unpassende Verteilung der Bitrate ja außerdem noch).

    Die Statistikdatei sollte eigentlich nur im ersten Durchlauf eines 2-pass-VBR-Projektes erzeugt werden. Es würde mich überraschen, wenn nach einem 1-pass-ABR-Projekt auch eine geschrieben wurde. Aber anders könnte ich mir jetzt nicht erklären, dass du da schon eine hast, die im zweiten Durchlauf für 2-pass VBR verwendet werden konnte. — Guter Einwand von sneaker2: Vielleicht wurden beide Durchläufe automatisiert.

  • Das ist ja das, was mich bisher immer so verwirrt hat bei diesem 1st und 2nd. Wenn ich 1st laufen lasse, kommt eine nicht abspielbare AVI raus, die nur ein paar wenige MB groß ist. Inwieweit diese beim 2nd Pass verwendet wird, erschließt sich mir nicht...zumal beim 2. Start des Encodings (mit 2nd Pass) die schon vorhandene Datei angemeckert wird, was ja auch zu erwarten war....
    Ich mache jetzt mal einen Test mit höherer Qualität und Auflösung und schaue mir das Ergbnis am TV mal an...bin sehr gespannt...

  • Die AVI-Datei aus dem 1st pass ist nur Abfall, deshalb enthält sie bei Xvid noch nicht mal sichtbares Video; was eigentlich zählt, ist hier die Statistik für den 2nd pass. Darin speichert Xvid, wie groß jedes Videoframe geworden wäre, wenn es die Daten in die AVI-Datei geschrieben hätte (aber den Plattenplatz muss man ja nicht verschwenden, solange das Ergebnis noch nicht endgültig ist). Aus diesen Informationen berechnet Xvid, wie groß jedes Frame im Verhältnis nur werden darf, um am Ende auf die gewünschte Ziel-Bitrate/-Dateigröße zu kommen.

    Im Xvid-Codec gibt es eine Option, mit der man die AVI-Datei im 1st pass auch komplett erzeugen lassen kann, falls es dich interessiert, wie groß sie bei "bestmöglicher Qualität" geworden wäre. Allerdings kann es Probleme mit der Abspielbarkeit aus dem AVI-Kontainer geben, falls das Ergebnis größer als 2 GB wird: das würde das fortgeschrittene OpenDML-Format (AVI 2.0) erfordern, was aber nicht jeder Player unterstützt.

    Aber wenn du eh schon beim Testen bist, wiederhole ich meinen ernsthaften Rat an dich: Wenn du nicht einen Datenträger mit geringer Kapazität mit einem einzigen Video möglichst komplett füllen willst, gibt es für 2-pass-VBR keinen Anlass. Hast du einen großen Datenträger, für den die Größe der einzelnen Dateien eigentlich uninteressanter ist als ein sicherer Grad an Qualitätserhalt, dann bevorzuge feste Quantisierung. Probiere also, wenn du eh schon beim Testen bist, auch mal aus, wie gut das Ergebnis bei CQ=3 und bei CQ=4 noch aussieht (noch gröbere Quantisierung wird bei Xvid wahrscheinlich schon sichtbar verblocken).

    Leider gibt es bei Xvid nur wenige Stufen zwischen feineren Quantisierungen (~ höheren Qualitätsstufen). Es gibt Tricks, den oberen Qualitätsbereich noch zu verfeinern (z.B. eine eigene Quantisierungsmatrix), allerdings könnte darunter die Kompatibilität zu gewissen Playern leiden. Müsste man auch testen, ob das Ergebnis problemlos abspielt.

  • Wie oben schon erwähnt, ist Qualität hier nicht das entscheidende Kriterium. Ein 1,5h langer Film soll ca. 500MB Größe nicht zu sehr überschreiten. Der Bildschirm des Players hat ca. 7 Zoll und nicht mal 480 Pixel Auflösung in der Breite. Bei der Größe sind selbst Artefakte kaum zu erkennen ;) Danke für die Tipps :)

Jetzt mitmachen!

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