Fertige AVS so serven,daß eine AVI entsteht, um bei CCE an Zeit zu sparen?

  • Hi,

    seit einigen Tagen bin ich damit beschäftigt, mit Avisynth geservte Avis passgenau als DVDcompiliant im CCE zu encoden. Mir ist dabei aufgefallen, dass bei jedem Pass, den ich mache, immer wieder neu geservet wird. Wer die normale Geschwindigkeit von CCE beim encoden von Avis kennt, weiss, dass geservete Avis nur einen Bruchteil der Geschwindigkeit beim Encoden aufweisen als normale, nicht geservete.

    Nun ist meine Frage, ob ich die fertig konfigurierte AVS irgendwie in einem Programm in eine durch die Filter etc. geänderte fertige Avi verwandeln kann, ohne dreifach neu encoden zu müssen, einfach eine Direct Stream Copy.


    Gruß,


    708

  • Du hast die Lösung selbst schon genannt: DirectStreamCopy.

    Öffne Dein avs in VirtualDub und schreibe die neue avi per DirectStreamCopy raus.

    Gruß, zisoft

  • Üblicherweise bieten sich verlustlose Codecs (HuffYUV, CorePNG, VBLE) oder wenig komprimierende Codecs (MJPEG) an. Rechne aber (je nach Zwischen-Codec) mit unheimlich riesigen AVI-Dateien (mehrere 'zig Gigabytes), oder Kompromissen mit gewissen Qualitätsverlusten.

  • Die Lösung mit VirtualDub ist sicherlich moeglich, aber wenn ich es recht verstehe buesst man dabei gleich zweimal in der Qualitaet ein:
    1) AviSynth und CCE arbeiten mit YUY2, VirtualDub hingegen arbeitet intern mit RGB32. Also haben wir folgende Umwandlungen: YUY2->RGB32->YUY2. Das bedeutet Verlust von Qualitaet.
    2) Die Zwischen-Kompression in VirtualDub verschlechtert wieterhin die Qualitaet.

    Ich habe einen Request (#902478) an AviSynth geschickt, um eine Moeglichkeit zu schaffen, dass der CCE nur beim ersten Pass auf das .avs-Skript zugreift. Fuer alle weiteren Paesse duerfte er nur die .m2v-Datei benutzen.

    Vorlaeufig gibt es anscheinend nur eine Moeglichkeit, um Qualitaets- und Zeitverlust zu vermeiden:
    1) .avs-Skript in CCE oeffnen und "1st pass of Multipass VBR" waehlen.
    2) Nach dem 1st Pass ein neues .avs-Skript basteln, in dem einfach nur das .m2c-Video geladen wird. Keine Filter etc. dazuladen.
    3) Das neue .avs-Skript in den CCE laden und nun die gewuenschte "Multipass VBR" waehlen. Unter "Multipass VBR Setting" sollte man "Use existing file" auswaehlen, damit CCE das aus dem 1st pass erhaltene .vaf-file (Video information File) nutzt.

    Werd's mal ausprobieren und berichte dann.

  • :welcome:

    Zitat von martenkrest

    Die Lösung mit VirtualDub ist sicherlich moeglich, aber wenn ich es recht verstehe buesst man dabei gleich zweimal in der Qualitaet ein:
    1) AviSynth und CCE arbeiten mit YUY2, VirtualDub hingegen arbeitet intern mit RGB32. Also haben wir folgende Umwandlungen: YUY2->RGB32->YUY2. Das bedeutet Verlust von Qualitaet.


    Nein. Bei "Fast recompress" wird der video stream direkt an den Codec übergeben; es findet keine Farbraumumwandlung statt.

    Zitat von martenkrest

    2) Die Zwischen-Kompression in VirtualDub verschlechtert wieterhin die Qualitaet.


    Falls ein verlustfreier Codec gewählt wird, z.B. Huffyuv, dann gibt's auch keine Verluste durch die "Zwischenkompression".

    Zitat von martenkrest

    Ich habe einen Request (#902478) an AviSynth geschickt, um eine Moeglichkeit zu schaffen, dass der CCE nur beim ersten Pass auf das .avs-Skript zugreift. Fuer alle weiteren Paesse duerfte er nur die .m2v-Datei benutzen.


    Das ist Blödsinn und funktioniert garantiert nicht. Wieso sollte CCE bessere Ergebnisse liefern, wenn Du ihn im ersten Pass mit einem anderen Video fütterst als in den folgenden Passes? Multipass funktioniert nur, wenn jeder Pass das selbe Video bekommt.

    Zitat von martenkrest

    Vorlaeufig gibt es anscheinend nur eine Moeglichkeit, um Qualitaets- und Zeitverlust zu vermeiden:
    1) .avs-Skript in CCE oeffnen und "1st pass of Multipass VBR" waehlen.
    2) Nach dem 1st Pass ein neues .avs-Skript basteln, in dem einfach nur das .m2c-Video geladen wird. Keine Filter etc. dazuladen.
    3) Das neue .avs-Skript in den CCE laden und nun die gewuenschte "Multipass VBR" waehlen. Unter "Multipass VBR Setting" sollte man "Use existing file" auswaehlen, damit CCE das aus dem 1st pass erhaltene .vaf-file (Video information File) nutzt.

    Werd's mal ausprobieren und berichte dann.


    Das ist völliger Unsinn. Du kannst Dir den Versuch sparen.

    bb

  • Farbraumkonvertierungen sind genau genommen nicht reversibel, man kann also die originalen Daten nicht exakt wieder herstellen. Aber der Unterschied ist vernachlässigbar. Weshalb man üblicherweise versucht Farbraumkonvertierungen zu vermeiden, ist der Zeitfaktor und weniger der Qualitätsfaktor.

    im zweiten Pass erhält der CCE ein verlustbehaftetes MPEG als Quelle. Das vaf File gehört zu dem ursprünglichen avs. Ich kann mir nicht vorstellen, dass dieses Verfahren sinn macht.

    Es gibt eine Theorie, die besagt, dass das Universum sofort verschwinden und etwas noch Unerklärlicheres und Bizarres an seine Stelle treten wird, sobald jemand herausfindet, wofür es gut ist und warum es existiert.

    Es gibt eine andere Theorie, die besagt, dass das bereits geschehen ist.

  • Die Methode funzt und ergibt 1a-Qualitaet. Hab's probiert.
    DeepDVD, solltest es mal ausprobieren.
    Der Umweg ueber VirtualDub hat kein so gutes Ergebnis geliefert.

    bb, danke fuer Deine (harschen) Kommentare.

    Marten Krest.

  • martenkrest



    Das KANN gar nicht funktionieren.

    Multipass ist dazu da, DIESELBEN Videodaten in mehreren Durchgängen immer besser und feiner zu analysieren. Mal davon abgesehen, dass ich mehr als 2 Durchgänge bei halbwegs normalen Bitraten sowieso für reine Zeitverschwendung halte, funktioniert Multipass einfach nicht richtig, wenn man zwischen zwei Passes was am Video ändert. Alle Infos aus dem vorigen Durchgang werden dadurch obsolet.

    Ach ja, wenn ich jedes Mal, wenn der Spruch "1a-Qualität" gefallen ist und das der Wahrheit entsprochen hätte einen Euro bekommen hätte, wäre ich zwar nicht reich, aber wohlhabend...

  • Ergebnis des ersten Durchgangs sind das m2v- und das vaf-file.
    Damit habe ich alle Informationen die ich brauche, um die nächsten Durchgänge durchzufuehren.
    Uebrigens: den ersten Durchgang fuehre ich natuerlich mit einer hoeheren Bitrate durch. Fuer die restlichen Durchgaenge nutze ich dann die gewuenschte Ziel-Bitrate.

    Fuer das m2v-file erstelle ich mit DVD2AVI eine d2v-file, lade dies in ein neues avs-skript ...

    LoadPlugin("C:\Program Files\AviSynth2.5\plugins\MPEG2Dec3.dll")
    mpeg2source("F:\DATEI.d2v")

    ..., lade das avs-skript in den CCE und der Rest ist Routine.

    All das mag nicht der perfekte Weg sein.
    Aber ich erziele damit folgendes:
    - Vermeidung unnoetiger Farbraumkonvertierungen;
    - volle Ausnutzung der Geschwindigkeit des CCE fuer alle Durchgaenge;
    - keine Benutzung von unterschiedlichen Codecs;
    - Anwendung der AviSynth-Filter nur fuer den ersten Durchgang (das war doch wohl der Grund dieses Threads, oder?);
    - wenn ueberhaupt, dann nur minimalster Qualitaetsverlust.

    Schlussbemerkung: ich habe verschiedenste Varianten (auch den Umweg ueber VirtualDub) probiert. Es ist sicherlich kein dummer Scherz, wenn ich sage, dass ich mit o. g. Trick die bisher beste Qualitaet und Farbkonstanz erhalten habe.

    Marten.

  • Im Prinzip funktioniert das schon, und die Idee ist recht kreativ.
    Du machst aber trotzdem zwei Umwandlungen mehr, und zwar m2v(mpeg!) -> decoden auf YV12 (KEIN mpeg) -> wieder encoden auf mpeg (mit dem CCE).
    Die folgenden Passe arbeiten dann mit dem mpeg vom ersten Pass, können also nix mehr besser machen ausser der Bitrate an sich.
    Da ist die Qualität nur schlechter oder gleich gut, wie wenn du gleich nur das erste m2v nimmst.

  • WarpEnterprises, deine Angabe ueber die MPEG2DEC3-bedingte Farbraumumwandlung ist absolut korrekt. Danke fuer den Hinweis. Hab's glatt uebersehen, obwohl es mit grossen Lettern in den Docs steht. War meine Freud'sche Fehlleistung des Tages.

    Habe daraufhin die m2v-Source (YUY2) mit dem AviSynth-CCE-Output (YV12 --> YUY2) verglichen und habe mich gefreut, dass fuer den normalen Betrachter keine erkennbaren Farbverschiebungen auszumachen sind. Der YV12 ist ueberraschend gut, auch wenn er "sparsamer" als der YUY2 ist.

    Trotzdem waere es klasse, wenn es in Baelde ein MPEG-loader fuer AviSynth gaebe, der auch YUY2 unterstuetzt. Waere eine kleine Zeitersparnis mehr.

    Herzlichen Dank fuer dein Feedback.

    Marten.

  • WarpEnterprises, noch ein kleiner Zusatz:

    da es mir im ersten AviSynth-CCE-Durchgang lediglich um die Anwendung der AviSynth-Filter geht, encode ich mit CBR 9800 oder mehr, um die groesstmoegliche Qualitaet rueberzuretten.
    Die weiteren Durchgaenge, in denen ich das d2v-m2v-file mittels AviSynth ohne weitere Filter uebergebe, erhalten dann die End-Bitrate, damit das Ganze auf DVD passt.

    Marten.

  • 1) der Schwerpunkt meiner Anmerkung war nicht die Umwandlung YV12<->YUY2, sondern mpeg<->normales YV12/YUY2 !
    2) eigentlich machst du nichts anderes, als eine Zwischendatei zu erzeugen, nur nicht mit einem verlustfreien Codec (wie die Vorposter erwähnten), sondern mit mpeg. Wenn du die vaf-Datei mit einer völlig anderen Bitrate erstellst als das Ergebnis sein soll, so wird das aber nicht optimale Ergebnisse liefern.
    3) hast du schon mal die Methode mit huffy ausprobiert? (diesen natürlich so konfigurieren, dass er NICHT YUY2 auf RGB wandelt) bei ~10.000kbit werden die Zwischenfiles ja auch nicht mehr wirklich klein.
    4) mpeg2dec3 IST der mpeg2-loader für AviSynth, und der lädt nicht nur YUY2, sondern YV12 (das ist das Format, indem das mpeg erstellt ist). AviSynth muss aber trotzdem immer das mpeg decodieren.

  • Die in ffvfw enthaltene Variante von HuffYUV kann auch YV12 speichern. Und FFV1 sicher auch, oder?!

    Aber eines ist auf jeden Fall richtig: AviSynth gibt immer unkomprimiertes Video aus. Die Frage ist dann nur, welche Art von Video das komprimierende Programm lesen kann.

    CCE kann RGB24 lesen, oder YUY2 - beides gepackte Formate. YV12 kann der CCE jedoch nur lesen, wenn ein für den FourCC "yv12" registrierte Codec (DivX 5 oder XviD) ihm das zu YUY2 konvertiert. Also ehrlich gesagt, wäre es für mich sicherer, wenn AviSynth das selber erledigt, als wenn das irgend ein Codec nachträglich erledigt.

    Oder war ich da falsch informiert, was die Fähigkeiten des CCE angeht? Könnte durchaus auch abhängig von der Versionsnummer sein...

  • Ich halte es für ziemlich bedenklich, wenn ein Encoder/Codec YV12 direkt einfach so nimmt. Warum? Ganz einfach, anders als bei RGB oder YUY2 muss bei YV12 absolut feststehen, ob es interlaced oder progressives Video ist.
    Außerdem spaltet jeder Encoder das Bild in seine Farbbestandteile auf, bekanntlich auf 6 Blocks pro Makroblock - und da soll er doch die Farbinformationen (oder Farb- und Helligkeitsinformationen) in der größtmöglichen Genauigkeit geliefert bekommen.
    Oder weiß jemand zufällig, wie die Encoder beim Aufsplitten denn nun exakt vorgehen?
    Wie auch immer, meines Wissens kann kein einziger MPEG2-Encoder direkt mit YV12 umgehen, es findet immer eine Wandlung statt bzw. muss vorgenommen werden.
    Irgendwie sehe ich in der YV12-"Manie" außer dem etwas höheren Verarbeitungstempo keine echten Vorteile, eher ein paar Risiken.

  • Dito.

    Wie auch scharfis_brain die Erfahrung gemacht hat: Interlaced-Video (selbst "möglicherweise") läßt sich sicherer weiterverarbeiten, wenn man AviSynth am Ende ein gepacktes Format ausgeben läßt. Also "ConvertToYUY2" als letzte Zeile in das Skript.

  • Es geht dabei ja nicht nur ums gepackte Format, sondern den Farbraum an sich. YUY2 und YV12 liefern ja nun unterschiedliche Formate. Das eine YUV4:2:2, das andere YUV 4:2:0.
    Bei digitalem Source von DVD oder DVB macht das, bis auf die Interlace-Problematik ja keine Schwierigkeiten, bei Aufnahmen von analogen Quellen sieht das schon anders aus.
    Etliche Skripte, die ich inzwischen gesehen habe, wandeln direkt nach dem Öffnen des Videos dasselbe in YV12 um - wodurch schon mal die vertikale Farbauflösung um die Hälfte reduziert wird. Geht zwar schneller, aber ist das auch sinnvoll? Ich glaube nein. Scharfi sagt das ja auch.
    Im Klartext: Ist der Source bereits YV12, dann ist (fast) alles OK, ist er das aber nicht, dann Finger weg von YV12.

  • Zitat von Kika

    [...]Im Klartext: Ist der Source bereits YV12, dann ist (fast) alles OK, ist er das aber nicht, dann Finger weg von YV12.


    Dem kann ich mich nur anschließen. Die YV12-Unterstützung wurde ja hauptsächlich für DVD Backups in AviSynth eingebaut, und dafür ist's wirklich ok.

    bb

  • Dann muss man sich aber auch etwas genauer danach erkundigen, welche AviSynth-Filter welche Farbraum-Varianten unterstützen. Ich hoffe mal, alle gängigen Filter unter AviSynth 2.5 können sowohl YUY2 als auch YV12 bedienen. Wahrscheinlich eher YUY2 als YV12. Oder gibt es da auch Ausnahme-Filter, die nur YV12 unterstützen (und man u.U. bei WarpEnterprises nach einer anderen Variante forschen müsste, wenn man damit YUY2 bearbeiten wollte)?

Jetzt mitmachen!

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