Beiträge von 0815-0815

    Schade, ist's noch niemandem aufgefallen? Lassen wir mal die Überlagerungsgeschichte fort, durch die ist's mir ja nur aufgefallen.

    Das Problem ist doch, dass Frames verschluckt werden, nicht immer, aber doch häufiger als ich zuerst dachte, meist so 2, 3 Stück pro 45 Minuten. Ich tippe so aus dem Bauch raus auf mpeg2source. Am Ende der aus dem Script erzeugen HuffYUV-Datei befindet sich dann entsprechend oft der Anfangsframe, als wenn irgendeine Routine merkt: "Halt stopp, da fehlt etwas!", so scheint es auch leichter zu identifizieren zu sein.

    Daraus ergeben sich doch zwei grundsätzliche Probleme:

    1. Audiosynchronität: Da ich die Audiospur vorher extrahiere und getrennt bearbeite, macht sich die bei 2, 3 Frames (entsprechen 80-120ms) durchaus schon bemerkbar, gerade bei schnellen Lippenbewegungen in Talkshows sehr störend.

    2. Two-Pass-Verfahren: Würde ich nicht erst eine HuffYUV-Datei erzeugen, wie könnte ich sicher sein, dass XviD zweimal denselben Clip zu sehen bekommt?

    Ist das Problem schon bekannt? Tritt's aus irgendeinem Grund nur bei mir auf?

    Ich habe da ein merkwürdiges Problem:

    Zunächst zur Vorgehensweise:

    3GHz Rechner, zum Capturen wird eine zweite SATA 200 GB Festplatte benutzt, schon beim analogen Capturen gab 's eigentlich kaum Probleme mit Dropframes.

    Aufnahme mit Technisat SkyStar 2 TV und dem mitgelieferten DVBViewer (Priorität auf Realtime gesetzt) als mpg (sollte man zwar als pva (?), aber da gibt 's Probleme bei der Wiedergabe der pva-Dateien in einigen Programmen (riesige Blockartefakte), ist aber jetzt auch nicht so wichtig).

    Anschließend demuxen mit pvastrumento v2.1.0.15, manchmal auch noch Werbung rausschneiden mit Cuttermaran v1.66 und eingebundenem TMPGenc 2.5, wenn ich das nicht gleich im AVISynth-Script mache.

    Mit MPEG2-to-VirtualDub mit eingebundenem DGIndex v1.40 d2v-Dateien erzeugen; komischerweise funktioniert der automatische Start von Madplay bei den von pvastrumento erzeugten mpa-Dateien nicht, muss ich von Hand machen, ist mir aber jetzt ebenfalls nicht so wichtig.

    Danach über AVISynth-Script und VirtualDubMod zunächst als HuffYUV-Datei speichern, diese dann als XviD-Datei komprimieren (Gibt 's da irgendwas dran zu kritisieren? Spart enorm Zeit!).

    ---

    Ich habe noch nicht solange Digital-Sat, die Qualität ist zwar deutlich rauschfreier wie zuvor beim analogen Capturen, aber gerade bei einfarbigen Hintergründen in Shows (Harald Schmidt, Sarah Kuttner u.ä.) sind immer wieder deutliche Blockartefakte zu erkennen. Da diese Sendungen alle wiederholt werden, dachte ich mir, durch Überlagerung zweier Aufnahmen die Blockstrukturen aufzuweichen, XviD gewissermaßen mehr Informationen zu liefern. Ob das überhaupt sinnvoll ist? Normalerweise klappt das auf jeden Fall.

    Wie gesagt, meist funktioniert es. Ich lade das Script in VirtualDubMod und laufe zwecks Synchronisation mit gedrückter ALT-Taste durch den ganzen Clip. Das rechte untere Video zeigt nur ein ganz schwaches statistisches Rauschen und meist muss ich auch gar nichts trimmen.

    Und jetzt zu dem merkwürdigen Problem:

    Hin und wieder stelle ich in der HuffYUV-Datei ab einer bestimmten Position plötzlich Geisterbilder fest, die Clips sind plötzlich asynchron, obwohl mit den Stack...-Befehlen keine Asynchronität feststellbar war. Zurück ins Script: Nichts! Im Einzelbildmodus durchlaufen lassen: Plötzlich doch! Oder umgekehrt! Manchmal bewirkt drücken von F5 dass eine zuvor vorhandene scharfe Kontur (Asynchronität) verschwindet, manchmal tritt plötzlich eine an dieser Stelle auf.

    Um es kurz zu machen: Es scheint nicht möglich zu sein, zwei Clips zweifelsfrei auf Framesynchronität zu überprüfen. Das Script scheint mal Frames zu schlucken oder zu verdoppeln, mal nicht. Woran liegt 's? Ein bekanntes Problem von AVISynth mit mpg2-Datein, am mpeg2source-PlugIn.

    Ich vermute mal, dass, wenn dieses Problem auftritt, auf jeden Fall irgendein von pvastrumento nicht erkannter Fehler im mpeg-Stream vorliegt?! Und im Normalfall die Streams fehlrfrei sind?!

    Ich sollte fairerweise noch sagen, dass mein AVISynth-Plugin-Ordner mittlerweile mit zahlreichen nie gebrauchten Funktionen in avsi-Scripten zugemüllt ist, aber normalerweise klappt 's ja.

    ---

    Zusatzfrage: Gibt 's bei den übertragenen MPEG2-Streams eigentlich ein Äquivalent zu den Dropframes beim analogen Capturen? Kann es zu Audiosynchronität kommen, die pvastrumento nicht beseitigen kann?

    ---
    Danke schon mal. Bin relativ selten Online.

    Sorry: Habe gerade erst den Thread unten (Xvid problem beim zusammensetzen) gelesen. Mit AVI-Mux ging's problemlos.

    Der scheint sich nicht mal daran zu stören, wenn beide Videodateien mit unterschiedlicher Matrix (H.263 bzw. MPEG) berechnet wurden.

    Um eine XviD-Datei 2 MB kleiner zu bekommen, öffnete ich sie mit Virtualdubmod, markierte den Vorspann und berechnete hieraus eine neue Vorspanndatei. Diese öffnete ich und wollte jetzt die Originaldatei anhängen, ging aber nicht wegen: "the video streams have different data formats". MPEG4-Modifier zeigt aber für beide Dateien völlig identische Informationen an. Weitere Versuche ohne Audiospur und mit anderen Dateien brachten dasselbe Ergebnis.

    Die einzige Einstellung die ich im XviD-Codec aber iirc von Zeit zu Zeit ändere ist der Abstand der i-Frames. Den bekomme ich aber durch Betrachten der Originaldatei relativ einfach raus. Woran kann's liegen?

    Mit AVISynth geht's natürlich, da bekomme ich aber per Direct-Stream-Copy keine XviD-Datei raus.

    Schon mal vielen Dank

    Ich wage es schon gar nicht mehr, meine Funktion "Funktion" zu nennen, ist ja nur SelectEvery mit Offset.

    Bei der Erklärung zu UnblendPattern hatte ich einiges missverstanden: die Suche in den 50 Frames soll gar nicht das komplette Muster enthüllen, sondern nur die Framerate liefern? Ich hielt das für einen nützlichen Nebeneffekt. Das Muster selbst kann viel länger sein?

    Die Offsetwerte wurden auf 0 - 100 beschränkt. Theoretisch könnte die Periode des Musters auch länger sein und damit auch der Offset höher. Oder kommt das praktisch wegen der angewendeten Methoden bei der Filmverschandelung nicht vor?

    Außerdem soll UnblendPattern() auch die doppelten Frames wegschneiden?

    Der Unterschied zu SelectEvery() liegt wohl darin, das durch die geringfügige Änderung der Framerate sich die Abstände zwischen den Sprüngen, die ChangeFPS im ansonsten regelmäßigen Muster macht, verändern? Und damit diese längeren Zyklen nachgebildet werden können?

    Wenn das stimmt, ergibt sich aber theoretisch bei der Anwendung noch ein Problem:
    Angenommen ich untersuche bei Frame #50000 und habe einen guten Offset gefunden. Wenn ich jetzt noch die Framerate geringfügig ändere, um eine etwaige Drift zu beseitigen, driftet auch das Muster unter dem von mir untersuchten Bereich weg, schließlich beginnt ChangeFPS immer am Beginn des Videos. Ich muß also wieder einen neuen Offset suchen. Eine furchtbare Iteration beginnt. Irgendwie sollte der Offset mit der Framerate gekoppelt werden.

    Falls diese Überlegung richtig ist, könnte eine Lösung möglicherweise so erfolgen (ich bin mir nicht wirklich sicher):
    Zwei zusätzliche Parameter: DeltaFPS und Startnummer
    anstatt FPS geringfügig zu ändern, ändert man nun DeltaFPS (Default=0.0)
    Startnummer enthält die Nummer des untersuchten Bereichs
    Aus dem Verhältnis von DeltaFPS zu FPS sollte sich "eigentlich irgendwie" errechnen lassen, wieviele Frames vor Startnummer dazukommen oder verschwinden, und der Offset sich entsprechend anpassen lassen.


    Oder ist das schon wieder alles Müll?

    Zitat

    beide filter fuehren intern ein assumebff() durch, auch wenn das eingangsvideo TFF war.


    Ich hoffe doch als letzte und nicht erste Aktion.

    Man kann auch

    Code
    function bobb(clip c){
      return getparity(c) ? c.bob().AssumeTFF() \
                          : c.bob().AssumeBFF()
    }
    
    
    function afrb(clip c){
      return getparity(c) ? c.assumeframebased().AssumeTFF() \
                          : c.assumeframebased().AssumeBFF()
    }


    usw. in ein avsi-Script packen und die benutzen. Solange die internen Funktionen sich nicht gegenseitig aufrufen, oder?
    Muß man jetzt sicherheitshalber nach jedem Funktionsaufruf ein AssumeTFF() einfügen?

    Zitat

    es geht hierbei garnicht darum das video zu deinterlacen, sondern nur darum, das video dem filter moeglichst schmackhaft zu machen.

    Das ist mir nach der Lektüre einiger Threads klar geworden. Damit bleibt aber die Frage nach dem High Quality - "Deinterlacing" noch offen, oder sollte ich das überlesen haben?

    Ich sehe 3 Möglichkeiten:
    (Bitte auch als Frage verstehen, ob ich die Funktionsweise wirklich verstanden habe.)

    Für alle zunächst einmal matchbob() (o.ä.) + gewünschte Filter, die ignoriere ich unten mal. Dann:

    1.)
    SeparateFields().SelectEvery(4,0,3) # liefert Kämme, deshalb
    FieldDeinterlace() # oder etwas in der Art

    2.)
    SelectEven() # habe fertig

    3.)
    das Video bei 50 FPS belassen


    zu 1.)
    Zeile 1 erhält zwar das Video möglichst originalgetreu - bezogen auf meine obige Grafik, würden z.B. bei Frame 1 die Fields B und b unverändert durchgeschleift zu C' bzw. d'-, FieldDeinterlace muß diese aber verändern, sonst bekomme ich die Kämme ja nicht weg.

    zu 2.)
    SelectEven() würde jetzt zum Beispiel Frame 2' auswählen, der besteht aus den Fields C' und c', die aber nicht weiter separiert werden. Davon ist C' das durchgeschleifte Field B, c' ist durch den Bobber interpoliert. Bei dieser Interpolation werden aber, wenn ich dich früher richtig verstanden habe, als statisch betrachtete Pixel von Field b übernommen (also gar nicht interpoliert), "bewegte" Pixel aber berechnet aus:

    b (dessen Position es ja einnimmt),

    B (enthält darüber und darunterligendes Pixel) und

    a und c (enthalten das entsprechende Pixel im vorausgehenden und nachfolgenden Frame).

    Und nur in der Art dieser Berechnung und der Erkennung dieser Pixel unterscheiden sich die verschiedenen Bobber (ist jetzt vielleicht etwas extrem formuliert, aber über die interne Funktionsweise weiss ich nicht viel).
    Vom Quellframe 1 gehen also nur "bewegte" Pixel in b "verloren", bzw. werden sie durch interpolierte Information ersetzt.

    zu 3.)
    enthält zwar die gesamte Originalinformation, aber genauso viel redundante (in statischen Bereichen) bzw. interpolierte (in bewegten Bereichen).


    Wenn das alles stimmt, würde ich Methode 2 beim Deinterlacen den Vorzug geben weil:

    1. dürfte sie etwas schneller sein wie Methode 1,

    2. wollen wir ja Filtern, es kommt also nie das Originalvideo unten raus; ob also 1 oder 2 ohne Filter etwas besser abschneiden dürfte egal sein,

    3. sollte man rein spatiale Filter oder Resizer genausogut auch nach SelectEven() einsetzen können, es sei denn, sie sollen vor einem temporalen Filter angewendet werden; was sich bei den Odd-Frames tut fällt ja eh raus. Das könnte enorm Zeit einsparen.


    Eine zusätzliche Überlegung:
    Könnte nicht der Einsatz eines rein temporalen Filters vor dem Bobber bei verrauschtem Video dessen Arbeit genauer machen? Oder haben die alle entsprechende Parameter dafür vorgesehen? Ich glaube, jetzt wäre die richtige Zeit, mir noch mal die Readmes dazu durchzulesen, ich habe damals nicht mal die Hälfte davon verstanden.

    Hallo

    Ich denke mal, das Forum ist richtig hierfür.

    Ich hatte mal versucht, die Funktion UnblendPattern zu verstehen. Damit keine Missverständnisse auftreten, ich beziehe mich auf die folgende - möglicherweise schon veraltete - Version (Zeilen etwas umgebrochen):


    function unblendpattern(clip clip, int offset,
    \ float fps, bool refitfps, bool debug)
    {
    a = (debug == true) ? clip.ShowFrameNumber() : clip
    b = changefps(trim(a,0,-1),framerate(a)*100).assumefps(framerate(a))
    out = (offset == 0) ? changefps(a, fps) :
    \changefps((b.trim(0, -offset) + a), fps)
    out = out.trim(int(offset / (framerate(a)/fps)) , 0)
    out = (refitfps == true) ? out.assumefps(framerate(a)/2, true)\
    .resampleaudio(audiorate(a)) : out
    return out
    }

    Wenn ich es richtig sehe, wird der erste Frame nur ein paar mal dupliziert (offset), dann mit changeFPS() die gewünschte Anzahl Frames rausgeschnitten und am Schluß noch ein bisschen mit audio und fps rumgefummelt. (Tschuldigung, war vermutlich eine Menge Arbeit).

    ChangeFPS() scheint sich aber ziemlich stur zu verhalten und bei einer gegebenen Konvertierung SourcFPS -> TargetFPS immer dieselben Frames übrig zu lassen, unabhängig vom Filmmaterial. Bei 50->24FPS zum Beispiel die Frames: "0, 2, 4, 6, 8, 10, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 38, 40, 42, 44, 46, 48". Das brachte mich auf die Idee, das ganze mit SelectEvery nachzubilden (erster Entwurf):


    function AnotherUnblendPattern(clip c, int Period,
    \ string SelectFrames, int StartFrame)
    {
    offset = Period - (StartFrame % Period)
    a = (offset == 0) ? c : blankclip(c, offset) + c
    a = eval("a.SelectEvery(" + string(Period) + "," + SelectFrames + ")")
    return a
    }

    Kurze Erklärung:
    Period gibt die Länge der Sequenz an, die man
    untersucht hat um ein Pattern zu finden,
    das sich dann hoffentlich mit dieser Periode
    wiederholt. (Zum Beispiel 50)
    SelectFrames enthält eine kommaseparierte Liste der Frames,
    die übrigbleiben sollen (also die guten). Der erste
    Frame einer Periode hat die Nummer 0; am besten in
    VirtualDub(Mod) alles vor der untersuchten Sequenz
    erst mal wegschneiden.
    StartFrame ist die absolute Nummer des ersten Frames der
    untersuchten Sequenz. Der Offset wird daraus berechnet,
    ich glaube, das stimmt so auch.

    Nach dem Aufruf der Funktion muß man vorne noch ein paar schwarze Frames wegschneiden. Außerdem muß man sich noch um die Framerate kümmern: untersucht man eine 1 Sekunde lange Sequenz, hat der Ergebnisclip natürlich eine Framerate, die der Anzahl der Frames in SelectFrames entspricht. Die genaue Formel müsste sein:

    Framerate(a) = Framerate(c) * nFrames/Periode

    mit nFrames der Anzahl der Frames in SelectFrames.Auch dazu kann man noch eine Zeile in die Funktion einbauen (Umwandlung in eine gewünschte FPS-Zahl). Die Audiospur scheint synchron zu bleiben (?).

    Grossartig getestet habe ich es aber noch nicht, die Idee kam mir erst im Verlauf des Abends. Aber ein paar Vergleiche mit UnblendPattern. So liefert der Aufruf:

    f1 = f.AnotherUnblendPattern(50, "0,2,4,6,8,10,13,15,17,19,21,"
    \"23,25,27,29,31,33,35,38,40,42,44,46,48", 0)

    bei einem 50FPS Clip dasselbe wie

    f2 = f.UnblendPattern(0, 24, false, false)

    wie man mit Subtract(f1,f2) leicht feststellen kann.

    Man muß zur Synchronisierung aber vorne noch ein paar Frames wegschneiden. Ich glaube, auch bei UnblendPattern bleibt vorne schon mal einer der duplizierten Frames zuviel übrig. Wenn der Startframe bzw. der Offset von 0 verschieden sind, wird es etwas schwieriger die genauen Werte zu finden, aber es geht. Die Funktion scheint also dasgleiche Ergebnis zu liefern, ist aber einfacher zu handhaben (keine Offsetsuche) und flexibler (beliebiges Pattern). Möglicherweise lassen sich durch einen mehrfachen Aufruf hintereinander auch kompliziertere Blendings entfernen (scheinbar unregelmäßige, die durch Überlagerung zweier regelmäßiger entstehen)?!

    Vielleicht hilft der Ansatz ja weiter.

    Es begab sich aber zu der Zeit des 30. August, da stellte sich in diesem Thread wie alle Jahre wieder die Frage, ob es bei TFF 4,1,2 oder 4,0,3 heißen müßte.

    Soweit die Weihnachtsgeschichte. Ich schreib das jetzt offline und weiß nicht, ob sich nach dem 28. September da wieder was getan hat; vielleicht in einem anderen Thread?

    Hier meine Meinung dazu:

    scharfis_brain sagte mal irgendwo, daß

    assumetff()
    matchbob()
    separatefields.selectevery(4,1,2).weave()

    den clip unverändert durchschleifen würde. Tut es aber nicht, sondern nur mit 4,0,3, wie man ja mit subtract leicht feststellen kann.


    Noch eine andere Erklärung:
    Ich komme leider noch nicht mit der Notation in "Exotisches Interlacing" klar, deshalb hier "meine eigene" (irgendwoher kenne ich die aber auch schon):

    Zahlen bezeichnen Frames, Großbuchstaben Top-Fields, Kleinbuchstaben Bottom-Fields.

    (Hoffentlich kommt das jetzt sauber rüber):


    [EDIT] OK, das hat also jetzt geklappt, Danke. Über die Antworten muß ich jetzt erst mal nachdenken. [/EDIT]

    die mit i "indizierten" Felder werden durch Interpolation gewonnen, die anderen sollen ja soweit wie möglich erhalten bleiben. SelectEvery(4,1,2) wählt jetzt also nicht nur gerade die interpolierten Felder aus, sondern wählt natürlich zuerst auch das Bottomfield.

    Oder habe ich da etwas bei der Arbeitsweise der Befehle nicht richtig verstanden?

    Die Frage die sich mir immer wieder stellte: warum am Ende SelectEvery(4,1,2) oder 4,0,3? Den Fragestellern ging es doch meistens um das "de"interlacen, womit sie wahrscheinlich das beseitigen der Kämme meinten; die beiden SelectEvery-Befehle erzeugen dagegen zwangsläufig wieder unglaublich scharfe Interlacing-Kämme bei bewegten Szenen. Wenn(!) ich die dann wieder entfernen will, kann ich auch gleich SelectEven() oder SelectOdd() nehmen und dafür ein interpoliertes Feld in Kauf nehmen?! Interpoliert ja nur im nicht statischen Teil, genau da würde ja ein nachgeschaltetes FieldDeinterlace() - oder was auch immer - auch interpolieren.

    So, ich bin etwas früher wach geworden.

    Zu den Features die gewechselt werden dürfen:

    Es scheint aber so zu sein, das man auch andere Einstellungen bedenkenlos zwischendurch ändern darf, die nicht deaktiviert werden: z.B. Quarter-Pixels, das habe ich jetzt zwei- dreimal getestet, ändert nicht die video.pass, vermutlich auch Adaptive-Quantization und GMC (nicht getestet); die Matrix-Einstellungen imselben Dialog darf man aber nicht ändern (getestet), vermutlich auch nicht die B-VOP-Einstellungen. Auch bei den Advanced-Options habe ich noh nicht getestet, ob ich die Einstellungen zwischen den Durchläufen ändern darf. Max I.Frame-Interval vermutlich nicht, VHQ-Mode möglicherweise ja, sonst müßte ja der 1st-Pass länger dauern, ich habs aber noch nicht getetest. Das meinte ich damit, daß aus den Dialogen nicht klar wird, welche Einstellungen zwischendurch nicht geändert werden sollten. Aber wie du schon gesagt hast, XviD ist ja nur zum Testen da.


    I-Frames Closer Than ... (Frames):

    Ich denke endgültige Klärung schafft nur ein Blick in den Quellcode. Ich bezweifle, daß ich das könnte - reingucken schon, aber auch verstehen?

    LigH

    Die kleinen i's sollen I-Frames mit reduzierter Datenrate sein? Aber wieso sollten in einer Folge von I-Frames dann mittendrin wieder I-Frames mit voller Datenrate codiert werden? Sinnvoll wäre es möglicherweise schon, bei zu vielen, aber wie folgt das aus dem Einstellungsdialog?

    Bei DivX hatte ich schon mal viele I-Frames in Folge, komischerweise bei völlig ereignislosen dunklen Szenen, bei XviD bis jetzt noch nicht.

    Selur

    Ich sagte ja schon, wenn ich den Namen für die Einstellung zugrunde lege - im mathematisch korrekten Sinn, also < nicht gleich <= setze -, habe ich Unrecht. Umgangssprachlich macht man da aber für gewöhnlich keinen Unterschied. Ich denke der Name wurde gewählt, weil man zum einen eine aussagekräftige Bezeichnung mit dem Namen der nachfolgenden Einstellung schaffen konnte, zum anderen aber nicht schreiben wollte "closer than or in the distance of ...", was, wenn ich Recht habe, mathematisch korrekt aber schwerfällig wäre.

    Wenn ich den Tooltip zugrunde lege, habe ich Recht. Ich wiederhole noch einmal: "Use this to define how close must keyframes be to be reduced" = Wie nahe beieinander müssen Keyframes sein, damit sie reduziert werden. Zwei benachbarte Frames haben den Abstand 1, nicht 0! Bei der Einstellung 1 wird ein I-Frame also nur reduziert, wenn der unmittelbar folgende Frame auch ein I-Frame ist, weil sich der im Abstand 1 befindet. Bei der Einstellung 2 wird ein I-Frame reduziert, wenn der nächste oder übernächste Frame ein I-Frame ist.
    Würde 1 diese Einstellung deaktivieren, könnte ich unmittelbar aufeinander folgende Frames nicht mit reduzierter Datenrate berechnen lassen, aber gerade da macht es am meisten Sinn und vermutlich ist es deshalb auch die Standardeinstellung. Deaktiviert würde die Einstellung automatisch durch den Wert 0, da sich zwei verschiedene Frames nicht im Abstand 0 befinden können, also auch nie eine Reduzierung stattfindet.
    Die Entwickler können sich auch nicht jede Einstellung merken, die sie irgenwann mal irgendwo in den Quellcode geschrieben haben, vor allem wenn es eher Kleinkram ist. Ich benutze diese Einstellung ohnehin nicht, die I-Frames liegen bisher alle weit auseinander.

    Sollte ich tatsächlich Unrecht haben, führt der Tooltip komplett in die Irre. Oder ich bin nicht mehr der deutschen Sprache fähig; ähem: oder der englischen Sprache? Ein Übersetzungsproblem scheint mir aber nicht vorzuliegen.


    B-Frames:

    Doch, ich glaube wir sind fast zusammengekommen und die wesentlichen Aussagen, die ich daraus gezogen habe, hast du ja bestätigt. Ich versuche das obige Beispiel noch etwas detaillierter zu formulieren. Ich gestehe, daß ich mir das alles selber erst zwischen diesen Postings so gründlich durch den Kopf gehen lasse. Dabei versuche ich mich an Texte zu erinnern, die ich vor ca. einem halben Jahr darüber gelesen habe, und die ich mir vielleicht noch mal antun sollte. Und so logisch mir das alles erscheint, vielleicht bin ich ja völlig auf dem Holzweg.

    Vorab: Es ist doch richtig, das nicht die Frames als ganzes quantisiert werden, sondern nur die einzelnen Makroblöcke, dafür hat man sie ja erfunden. Und das innerhalb eines Frames jeder Makroblock einen anderen Quantizer haben kann. Ich gehe zumindest davon aus.
    Außerdem bin ich mir nicht ganz sicher: kann sich ein einzelner Makroblock auf beide Bezugsframes beziehen, also zwei Bewegungsvektoren haben? Ich war der Meinung, daß zwar der B-Frame selbst sich auf zwei Frames bezieht, die einzelnen Makroblöcke sich aber nur aus jeweils einem dieser beiden Frames herleiten lassen. Das ist aber für das Folgende nicht so wichtig.

    Nehmen wir an, wir haben einen Nachrichtensprecher vor einem statischen Hintergrund; auch der Sprecher ist statisch, nur der Mund bewegt sich, und die Augen, sonst könnte er nicht vom Teleprompter ablesen. Das Video ist absolut rauschfrei. Wir haben drei Frames: P1 B P2. P1 und P2 sind schon berechnet, mit konstantem Quantizer 2 für alle Makroblöcke. Für B-Frames ergäbe sich ein Quantizer 4.
    Der Encoder macht sich jetzt an die Berechnung von B. Dabei stellt er fest, das fast alle Makroblöcke sich durch eine direkte Verschiebung aus Frame P1 herleiten lassen (Verschiebung ist zwar 0, aber das muß ja auch abgespeichert werden). Er könnte auch bei P2 nachgucken, aber wozu, wenn er bei P1 schon Treffer landet. (Möglicherweise trifft diese ideale Annahme in einem realen Video nie ein, es geht mir im Moment nur darum, ein sehr vereinfachtes Modell zu verstehen.) Er speichert für diese Makroblöcke also nur die Bewegungsvektoren ab, da wird nichts quantisiert, die Quantisierung fand ja schon in P1 statt, wo bei der Darstellung diese Makroblöcke hergeholt werden.
    Dann kommt er zu den Makroblöcken für Augen und Mund und stellt fest, das Bewegungsvektoren nicht mehr reichen. Meine erste Annahme oben ging davon aus, daß er diese Blöcke komplett neu codiert. Mittlerweile ist mir wieder klar, daß er sich diese Makroblöcke aus Bewegungsvektoren plus Differezinformation zusammenbasteln kann. In beiden Fällen muß dieser Block aber quantisiert werden, der Quantizer ist im Beispiel 4.
    So, nun kann XviD den durchschnittlichen Quantizer für diesen Frame berechnen. Am schnellsten geht es, wenn es nur die aktuell im B-Frame quantisierten Makroblöcke berücksichtigt, die summiert es während der Berechnung nur auf und teilt am Ende durch die Anzahl. Das ist der von mir oben genannte Wert1. Oder es berechnet den Durchschnitt über alle Blöcke des Frames, dann müsste es aber für jeden verschobenen Block die Quantizer-Informationen aus den Bezugsframes wieder abrufen. Außerdem müsste es bei Blöcken mit Differenzinformationen irgendeine Gewichtung einführen zwischen den Quantizern der Originalblöcke in den P-Frames, und dem Quantizer für die Differenzinformationen, denn die haben ja beide Einfluss auf die Bildqualität: viel zu kompliziert und langsam. Ich gehe also davon aus, das XviD mir den Wert1 anzeigt.

    Nehmen wir an, der Frame hat 100 Makroblöcke (ist nur ein kleiner Nachrichtensprecher), davon 10 für Mund Augen (hat halt einen großen Mund). Wert1 wäre 4 (10 Blöcke mit Quantizer 4 macht einen Schnitt von 4). Der tatsächliche Durchschnitt wäre (ich sehe mal von dem angesprochenen Gewichtungsfaktor ab): (10 Blöcke * Quantizer 4 + 90 Blöcke * Quantizer 2)/100 Blöcke = Quantizer 2.2.
    Setze ich jetzt die Einstellungen für B-Frames so das B-Frames mit Quantizer 3 berechnet würden und nehmen wir an, daß dann I- und P-Frames nur noch mit Quantizer 2.5 berechnet werden könnten ergäbe sich:
    Für Wert1 =3 (10 Blöcke mit Quantizer 3/10 Blöcke), scheinbar eine Verbesserung, tatsächlich aber: (90 Blöcke * 2.5 + 10 Blöcke * 3)/100 Blöcke = 2.55, also eine Verschlechterung.
    Wenn aber der Quantizer für I- und P-Frames nur auf 2.05 steigen sollte, ergäbe sich für den tatsächlichen Wert: (90 * 2.05 + 10*3)/100 = 2.145, also eine wirkliche kleine Verbesserung.

    Diese Überlegung bezog sich nur auf einen einzelnen Frame, das XviD-Statusfenster zeigt aber die Ergebnisse über alle Frames an, an der Aussage sollte sich dadurch aber nichts ändern.
    Meine Beispieldaten sind natürlich völlig aus der Luft gegriffen. Mich würde interessieren, ob sich die Standardwerte aus dem mathematischen Algorithmus als optimal ergeben, indem man irgendwelche statistischen Angaben über durchschnittliche Videoclips in die Formeln einsetzt, oder ob das Betrachten zahlreicher Videoclips die Grundlage für die Standardeinstellungen war. Ist aber nicht so wichtig.


    PSNR:

    Ich wußte doch, das mir die Abkürzung SNR bekannt vorkam. Wofür steht noch das P? Findet wirklich so etwas wie ein Entrauschen bei der Codierung statt, als nützlicher Nebeneffekt oder so?


    Overflow-Treatment:

    Control-Strength war mir klar.


    Improvement/Degradation:

    Du zitierst genau den Satz, bei dem ich meine Zweifel an der Richtigkeit geäußert habe: "How much of the overflow the codec can eat into during ...". Wenn es das heißt, was ich meine, nämlich das Wegnehmen von Bits, weil schon zu viele verbraucht wurden, dann muß (!) in einer der beiden Einstellungen dies durch eine Formulierung wie "How much of the Underflow the codec can waste ...", also: wie viele Bits zusätzlich verschwendet werden dürfen, weil ohnehin zu wenige verbraucht wurden, ersetzt werden, da beide Einstellungen ja gegensätzliche Wirkung haben sollen.

    Bei der improvement-Einstellung steht aber ganz klar, daß es um das Vermeiden von "undersized files" geht, also zu kleinen Dateien, und bei der degradation-Einstellung um das Vermeiden von "oversized-files" geht, also zu großen Dateien. Ich erreiche ersteres nicht, indem ich Bits einspare, und letzteres nicht, indem ich zusätzliche Bits einsetze. Das ist kontraproduktiv. Umgekehrt würde es stimmen. Hier liegt ganz klar ein Widerspruch vor. Ich bin mir ziemlich sicher, das die Erklärungen im Guide vertauscht gehören und der Tooltip, auf den du dich berufst fehlerhaft ist. Sehe wirklich nur ich diesen Widerspruch, habe ich da ein Brett vor dem Kopf?

    Tschüß

    Danke schon mal für die Antworten.

    Manchmal ist wirklich der Wurm drin. Eigentlich wollte ich nur den Tip geben, in dem Guide bei jeder Einstellmöglichkeit anzugeben, ob man sie zwischen den beiden Durchläufen ändern darf oder nicht. Aus dem Aufbau der Konfigurationsdialoge geht das nämlich nicht hervor. Nur um sicher zu gehen (ich könnte ja sonst irgendeinen Müll erzählen) habe ich noch einen Test gemacht. Von Quarter-Pixel wußte ich schon, daß es die video.pass nicht verändert, von der Matrix habe ich eben dies aber stark vermutet. Und was teste ich? Weil Rechenzeit bei Videocodierung ja überhaupt kein Thema ist, noch mal Quarter-Pixel. Zum Glück protokolliere ich meine Fehler auch brav, sonst wüsste ich immer noch nicht, was ich gestern falsch gemacht habe. Selbstverständlich korrigiere ich hiermit auch meine Aussage von gestern, daß mich ein Vergleich der video.pass Dateien (übrigens mit fc am DOS-Prompt) nicht wirklich schlauer macht, das galt nur gestern Nacht. Immerhin zeigt der Vorgang, wie nützlich mein Tip ist, zumindest für mich.

    Und den Vorschlag, die im 2nd-Pass besser nicht zu ändernden Einstellungen in einen Header der video.pass zu übernehmen, halte ich nach wie vor für gut. Die Option kann ja abschaltbar sein, die Versionsnummer wird selbstverständlich mit reingeschrieben. Aber wer wartet denn schon zwischen 1st- und 2nd-Pass auf die nächste XviD-Version, die Entwickler vielleicht mal ausgenommen.


    GMC:
    LigH
    Stimmt, ich hatte GMC mit der grundsätzlichen Bewegungsanalyse für den einzelnen Makroblock verwechselt und an Rotation und Verzerrung dieser Blöcke gedacht, nicht an die Bewegung ganzer Blockgruppen (Objekten).

    Aber über die Interna des MPEG-Standards weiß ich sowieso nicht viel, außer, daß eine solche Analyse durchgeführt wird.

    Selur
    Verwechselst du das jetzt gerade auch? Oder meinst du die Gesamtbewegung vieler Makroblöcke?


    B-Frames:
    Noch mal zur Sicherheit: B-Frames haben trotz eines höheren Quantizers für den Betrachter dieselbe Qualität; das ist bewiesen worden in ausgiebigen Versuchsreihen mit Leuten mit besonders geschultem Blick? Wieso bevorzugst du dann auch die Einstellungen 1.0 für ratio und 0.0 für Offset? Damit haben die Quantizer der B-Frames ja im Prinzip denselben Wert, wie die der angrenzenden P- oder I-Frames. Hast du das Gefühl, das das Video dadurch besser wird? Ich find es schwierig, überhaupt Unterschiede zu erkennen.

    Ich versuche mich mal mit meinem bischen MPEG-Wissen anzunähern, vielleicht liege ich ja richtig: Der Encoder versucht festzustellen, ob ein bestimmter Makroblock durch eine Bewegung aus einem Makroblock des oder der Bezugsframes hergeleitet werden kann, von zusätzlichen Einsparmöglichkeiten jetzt mal abgesehen:

    Ja -> nur der Bewegungsvektor wird gespeichert, der wird aber nicht quantisiert(?). Die Bildinformation für diesen Makroblock stammt also aus dem Bezugsframe.

    Nein -> Der Makroblock wird wie üblich codiert, mit dem Quantizer, der sich aus den Einstellungen für B-Frames ergibt.

    (Ich glaube, es gab da noch ein Mittelding, habe ich aber wieder vergessen und lassen wir erst mal weg.)

    Beim Betrachten eines B- oder P-Frames sehe ich also Makroblöcke, die mit dem Quantizer für den betrachteten B-Frame quantisiert wurden, und ich sehe Makroblöcke, die mit dem Quantizer für die angrenzenden P- oder I-Frames quantisiert wurden. Ich kann also für B- und P-Frames im Prinzip zwei Durchschnittswerte angeben, einen für die tatsächlich im betreffenden Frame codierten Blöcke (Wert1), und einen für alle Blöcke (Wert2).
    Welchen Wert zeigt XviD im Statusfenster an? Ich vermute mal Wert1.
    Bei den Standardeinstellungen für B-Frames ist Wert1 immer schlechter als Wert2, in den ja noch die qualitativ besseren Blöcke der angrenzenden Frames eingehen, und da B-Frames ja einen besonders hohen Anteil an Bewegungsvektoren enthalten.
    Trifft diese Erklärung zu, dann sind mir auch die Standardeinstellungen von XviD klar: durch die Verwendung eines etwas schlechteren Quantizers für die paar Makroblöcke, die in einem B-Frame noch codiert werden müssen, verbessere ich gleichzeitig die Quantizer für I- und P-Frames, wovon letztendlich auch die B-Frames profitieren. Verändere ich aber die Einstellungen so, daß ich im Statusfenster ähnliche Durchschnittswerte für alle Frametypen habe, versaue ich mir im Prinzip den Schnitt für alle Frames, denn sowohl I- und P-Frames liegen jetzt höher, als auch der sich daraus ergebende tatsächliche Durchschnitt für die B-Frames.

    Zeigt aber XviD den Wert2 an, sollte man doch versuchen, für alle Frames ähnliche Werte zu erreichen.

    Nachdem ich mir das nun alles so schön zurecht gebastelt habe, dürft ihr jetzt wieder alles kaputtmachen. Ich sehe z.B. gerade, daß ich die Bemerkung über die Differenzdaten in P- und B-Frames völlig übersehen habe; aber wenn ich mich recht entsinne, war das das Mittelding, welches mir oben entfallen war: Makroblöcke, bei denen sowohl ein Bewegungsvektor, zusätzlich aber auch noch diese Differenzdaten gespeichert werden. Wahrscheinlich sind die meisten Makroblöcke von dieser Art. Stürzt jetzt mein Erklärungsgebäude, falls es überhaupt jemals stand, wieder ein, oder steht es nur ein bischen schief?

    Was sind PSNR-Werte?

    Wurde das mit den S-Frames überhaupt schon mal irgendwo erwähnt? Ich habe danach gesucht (hier im Forum), aber keine Treffer erhalten. Sollte vielleicht in den Guide.


    I-Frames Closer Than ... (Frames):
    Zugegeben, die Einstellung klingt, als ob meine Frage unsinnig wäre, aber der Tooltip gibt mir Recht: Use this to define how close must keyframes be to be reduced = Wie nahe beieinander müssen Keyframes sein, damit sie reduziert werden. Der von Frame x aus nächste Frame ist x+1.

    Beispiele:
    Einstellung=1 IIIIIIIIIII die ersten 9 Frames werden reduziert
    Einstellung=1 IPIPIPIPIPI kein Frame wird reduziert
    Einstellung=2 IPIPIPIPIPI die ersten 5 I-Frames werden reduziert
    Einstellung=250 vermutlich alle I-Frames im Video außer dem letzten würden reduziert, klingt komisch, steht für mich aber da.

    Das deckt sich im Übrigen auch mit deinem ersten Satz hierzu im Guide: "Hier kann man angeben, wie viele Nicht-I-Frames mindestens zwischen zwei I-Frames stehen müssen, damit das zweite I-Frames nicht weniger Datenrate erhält." Heißt: Stehen weniger Nicht-I-Frames dazwischen, werden die I-Frames außer dem letzten reduziert, bei 1 müssen die I-Frames also unmittelbar aufeinander folgen. Wie sollte ich sonst auch angeben können, das nur unmittelbar aufeinander folgende I-Frames reduziert werden.

    Ich vermute, 0 deaktiviert die Einstellung. Wenn die Entwickler sagen, 1 deaktiviert sie, stimmt der Tooltip nicht und der Wert muß irgendwie anders interpretiert werden, oder ich verstehe es einfach nicht.


    Overflow-Treatment:
    Ich wollte auf den Widerspruch zwischen Tooltip und deiner Erklärung hinweisen:
    Wenn die improvment Einstellung undersized-Files (also zu kleinen Dateien) vorbeugen soll, erreiche ich das nicht, indem ich zusätzliche Bits einspare, dann wird sie ja noch kleiner.
    Ich gebe zu, die Tooltips sind mir in diesem Punkt am unverständlichsten. Overflow heißt doch, daß mehr Bits verbraucht werden wie geplant? Dann müsste in einem der Tooltips aber die Rede von 'Underflow' und 'waste Bits' sein, um also einem Underflow vorzubeugen, dürfen Bits verschwendet werden.
    Ich hatte jetzt zwei Videos, bei denen eine deutlich höhere Datenrate wie eingestellt rauskam (über 3000 statt 2300 kBps); eine Erhöhung des degradation-Wertes auf 7 löste das Problem, also beugt diese Einstellung tatsächlich einem Overflow durch Einsparung von Bits vor..


    Ich hoffe diese langen Postings stören niemanden, oder sollte ich das 'Hilfe' oben so interpretieren?

    Tschüß

    Hallo

    Zunächst mal vielen Dank für den Guide, ohne den der Einstieg in XviD wesentlich schwerer gefallen wäre. Und da du ja ein Feedback wünschst, hier meine Gedanken zu XviD im Allgemeinen und zu dem Guide im Besonderen, die mir während der letzten Wochen gekommen sind. Ist was länger geworden.

    Matrix: H.263- und MPEG-Matrix
    Wie sehen die eigentlich aus. Bei den mitgelieferten Matrizen ist eine Standard-Matrix, die enthält aber andere Werte, wie die, die nach der Installation im Edit-Dialog angezeigt werden. Ist eine von denen die H.263-Matrix? Und die MPEG.txt enthält die Standard-MPEG-Matrix?

    Hilfreich wäre es, wenn bei jeder Einstellung gesagt würde, ob sie zwischen 1st- und 2nd-Pass geändert werden darf. (Besser wäre es natürlich, wenn in einer zukünftigen XviD-Version alle Einstellungen, die der 2nd-Pass vom 1st-Pass übernehmen muss, in einen Header der video.pass geschrieben, und im Dialog dann für den 2nd-Pass grau angezeigt würden.) Zur Zeit probiere ich gelegentich rum, ob eine geänderte Einstellung eine andere video.pass Datei liefert oder nicht. Das macht mich nicht immer schlauer. Beispiel: Änderung der Matrix (H.263 auf MPEG), die video.pass-Dateien sind gleich, obwohl es laut XviD-Status eine unterschiedliche Anzahl von P- und B-Frames gibt, das passt nicht zusammen, denn P- und B-Frames werden in der video.pass gespeichert.

    Quarter-Pixel:
    Aus dem Official DivX-Guide (oder so ähnlich):
    "By increasing the accuracy of the motion vectors quarter-pixels also increases the bit spend on predicted frames. The result can actually be detrimental to quality at low bitrates. Although the motion compensation will be more accurate and the picture will appear sharper, fewer free bits will cause the rate control to enforce higher quantizers throughout the video."
    Also: Quarter-Pixel benötigt zusätzliche Bits für die feinere Motion-Compensation, die dann für den eigentlichen Codiervorgang fehlen, was zu etwas höheren Quantizern für das gesamte Video führt, das dafür aber etwas schärfer wirkt. Klingt plausibel und sollte eigentlich auch für XviD gelten. Gemessen habe ich bis jetzt nur (in sage und schreibe zwei Versuchen) um 1-2% niedrigere Quantizer ohne Quarter-Pixel.

    GMC:
    Das klingt ja fast so, als fände eine echte Bewegungsanalyse statt, also zum Beispiel: roter Ferrari überfährt Frau mit rotem Kleid und flüchtet links aus dem Bild. Wenn ich mich recht an das irgendwann mal gelesene und längst wieder vergessene erinnere, werden bei der GMC doch nur die Verschiebungen von 16x16 Pixel großen Makroblöcken untersucht, das heißt, es wird ein möglichst ähnlicher Makroblock gesucht; wie soll das dann mit Drehungen und Verzerrungen funktionieren? Für den Codec ist es doch völlig egal (so habe ich es verstanden), wozu ein Makroblock gehört. Die Szene könnte für den Codec also auch heißen: roter Ferrari überfährt Frau, verwandelt sich dabei in ein rotes Kleid, roter Wollhase materialisiert und hüpft verschreckt links aus dem Bild. Bei DivX war ein Tool, damit konnte man sich die Bewegungsvektoren anschauen, das sah zwar weitestgehend systematisch aus, aber immer wieder sprangen die Vektoren auch kreuz und quer über das Bild, ohne irgendeinen erkennbaren Zusammenhang zum Inhalt des Videos.

    B-Frames:
    Ich wüsste gerne einmal, warum man für B-Frames "schlechtere" Quantizer wählt wie für die anderen Frames. Wenn ich B-Frames zulasse, besteht doch der größte Teil des Videos daraus, ich muss sie mir doch auch ansehen. Benötigten sie bei gleicher "gefühlter" Qualität keinen so niedrigen Quantizer? Oder kommen die besseren Quantizer der I- und P-Frames, auf die sie sich ja beziehen, ihnen auch zugute? (Beziehen sie sich eigentlich auch auf die P-Frames, oder nur auf die I-Frames? Was sind eigentlich S-Frames? Erscheinen im XviD-Statusfenster, wenn man die Details anzeigen lässt.) Ich verwende im Moment (ich experimentiere noch rum): max cons. BVOPs=30-50, ratio=1.0-1.4, offset=0.0-0.25, sensitivity=50. 75-80% aller Frames sind so B-Frames. Ich versuche eine Einstellung zu finden, bei der für alle Frametypen ähnliche durchschnittliche Quantizer angezeigt werden, ist das sinnvoll? Ich tue mich schwer, einen Unterschied zu den Standardeinstellungen festzustellen- beim Betrachten, der XviD-Status zeigt natürlich was anderes an. Was mich interessiert: Warum sind die Standardeinstellungen empfehlenswert? Weiter hinten outest du dich ja selbst, das du völlig andere Einstellungen verwendest.

    Packet-Bitstream:
    Wenn ich das deaktiviere, zeigt mir VirtualDubMod beim Öffnen eine Fehlermeldung beim ersten Frame an: "Warning: Nothing to output. BFrame Decoder Lag". Ein Bild vor und wieder zurück und der Fehler ist weg. Ich meine zumindest, es hätte an dieser Einstellung gelegen.

    Twopass - 1st-Pass:
    Sind die Einstellungen, die du hier erwähnst, die, die zwischen 1st- und 2nd-Pass geändert werden dürfen? Und natürlich die unter 2nd-Pass/more.

    I-Frames closer than ... (Frames):
    Woraus folgt denn, dass ein Wert von 1 das Feature deaktiviert? Ich verstehe den Tooltip so, dass bei einem Wert von 1 nur unmittelbar aufeinander folgende I-Frames reduziert werden (ausser dem letzten), sobald ein anderer Frame zwischen je zwei I-Frames ist, werden die I-Frames nicht reduziert.

    Overflow-Treatment:

    Overflow-Control-Strength:
    0=let XviD decide. Wieso ist dann aber 5 die Standardeinstellung? Was genau bedeutet 0: Die Bitverteilung erfolgt genau so, wie im 1st-Pass von XviD berechnet, oder erfolgt eine Umverteilung gegenüber dem 1st-Pass nach einer intern in XviD definierten Regel (so verstehe ich die Bedeutung von core im Tooltip, ansonsten würden ja auch die nachfolgenden beiden Einstellunge keinen Sinn machen).

    Max Overflow improvement/degradation:
    Könnte es sein, das die Erklärungen vertauscht werden müssen? Improvement soll undersized files vorbeugen, Einsparen von Bits bei gut zu komprimiernden Szenen produziert aber zunächst mal undersized files; und umgekehrt bei degradation.

    Zones:

    Begin with Keyframe:
    Auch hilfreich, wenn man z.B. mehrere Folgen einer Serie auf eine CD bringen will: Man stückelt sie mit einem AVISynth-Script aneinander und läßt sie alle in einem Aufwasch von XviD kodieren. Anschließend schneidet man sie mit VirtualDub an den Keyframes wieder auseinander. Auf diese Weise sollte man eine konstante Qualität über alle Folgen bekommen. Ich habe das bei Coupling in den letzten Wochen so gemacht, die Größe der einzelnen Folgen differierte um bis zu 65MB bei ca. 235MB pro Folge im Schnitt.

    Das wars dann erst mal

    Tschüß

    Ich habe das vor Wochen mal mit 5 ca. 5-minütigen Clips gemacht und die Ergebnisse notiert. Falls es noch von Interesse ist:

    Die Clips wurden über einen analogen SAT-Receiver aufgenommen (MJPEG Qualitätsstufe 18 oder 19, weiss ich nicht mehr, 720x576) und per AVISynth-Script framegenau zueinander passend geschnitten (subtract(...).levels(...) zeigte nur noch statistisches graues Rauschen). Als "objektiven Qualitätsmassstab" benutzte ich die Angabe des XviD-Statusfensters nach dem 1st-Pass für die bei den gewählten Einstellungen benötigte durchschnittliche Bitrate. Die Auflösung der berechneten Clips betrug 640x480, eine weitere Bearbeitung fand nicht statt.

    Die Ergebnisse:

    Die 5 Einzelclips benötigten zwischen 10302 bis 11267 kBps, Avg: 10885 (=100%)

    Überlagerung von:

    jeweils 2 Clips: 7852 bis 9069 kBps, Avg: 8472 (=78%)

    jeweils 3 Clips: 7359 bis 8121 kBps, Avg: 7651 (=70%)

    jeweils 4 Clips: 7034 bis 7463 kBps: Avg: 7188 (=66%)

    allen 5 Clips: 6941 kBps (=64%)

    Das bedeutet: bei vorgegebener Bitrate (damit es zum Beispiel auf die CD passt (bei 5 Minuten nicht unbedingt das Problem)), würde XviD im 2nd-Pass bei den überlagerten Clips einen niedrigeren Quantizer wählen, wenn ich das richtig sehe.

    Durch zusätzliches Deinterlacen veränderten sich die Werte kaum. Bei der Abarbeitung des kompletten Scriptes mit Temporal- und SpatialSoften verringerten sich die Abstände deutlich. Ich hatte exemplarisch nur den "besten" Einzelclip und die Überlagerung aller 5 Clips gemessen: 5561 bzw. 4636 kBps (=83%). Allerdings ist die Verwendung eines Rauschfilters bei einem 5-fach überlagerten Clip eher Unfug.

    Subjektiv flimmerte das Logo deutlich weniger, glatte grellbunte Hintergrundflächen wirkten deutlich rauschfreier, eben glatt. Allerdings fehlt mir die praktische Erfahrung, um eine wirkliche subjektive Bewertung abzugeben (ich sehe für gewöhnlich nicht mal den Unterschied zwischen einem mit 800 kBps und einem mit 1600 kBps berechneten Film bei 400%er Ausschnittvergrösserung im Einzelbildmodus, also: ich sehe schon Unterschiede - hier und da -, kann aber nicht sagen, was besser ist).

    Die Coupling-Folgen in den letzten Wochen hatte ich, wo es sich anbot, auch 2-fach überlagert. Auch hier wirkten, meine ich, die einfarbigen Hintergründe irgendwie sauberer.

    Tja, und demnächst mache ich dann eine 5-fache Überlagerung von "Der sich den Wolf tanzt".