AviSynth - Grundlagen&Filter

Mod: Dieser Guide findet sich auch hier:
https://animemusikvideos.de/inhalt/guides/avisynth-grundlagenfilter/

HalloHallo,
beim Panel in diesem Jahr auf der Connichi wurde die Zeit ja ziemlich knapp;
Deshalb wird jetzt im Groben das, was ich erzählen wollte in schriftlicher Form dargeboten.
Hier wurde eigentlich nicht viel geschrieben, was nicht auch in JCDs Guide oder in den Guides auf amv.org schon zu finden wäre.
Der, den es wirklich interessiert, ist auch im doom9-Forum gut aufgehoben.


Auf jeden Fall benötigt werden Avisynth sowie avspMod.

Avisynth

Avisynth (auch oft als ‚AVS‘ abgekürzt) ist ein Videobearbeitungsprogramm ohne grafische Oberfläche.
Sämtliche befehle werden in Form eines *.avs-Skriptes übergeben, woraufhin das entstehende Video von geeigneten Programmen weiterverarbeitet werden kann.
Es existieren Plugins für ‚Sony Vegas‘ und ‚Adobe Premiere‘, die es ermöglichen direkt mit *.avs-Skripten zu editieren. Solange man aber nicht über einen NASA-Rechner verfügt ist davon abzuraten.
In dem ‚normalen‘ Workflow wird unter anderem das Ausgangsmaterial mithilfe des Skriptes in VirtualDub in eine .avi-Datei mit lossless-Codec überführt (s.hier).

Bei den Skript-Dateien handelt es sich lediglich um *.txt-Dateien mit *.avs-Endung. Zur besseren Handhabung empfiehlt es sich immer, die Skripte in avspMod zu öffnen.
Die Befehle in des Skripts werden von oben nach unten nacheinander angewandt.
Der besseren Lesbarkeit halber sollten die einzelnen Befehle durch Zeilenumbrüche voneinander getrennt werden, wobei keine zusätzlichen Trennzeichen notwendig sind.
Zeilen können mit ‚#‘ auskommentiert aka deaktiviert werden.

Befehl_1() Befehl_2() ... Befehl_x()

Videoquellen in AviSynth importieren

Es gibt verschiedene Methoden, ein Quellvideo in AVIsynth zu ‚importieren‘.
Wenn man diese erste Zeile in seinem Skript erstellt hat, kann man in avspMod bereits eine Preview erstellen.
Um diese zu erstellen und bei Skriptänderungen zu aktualisieren reicht ein Druck auf die F5-Taste.

Anmerkung: Der Dateipfad ist generell nicht notwendig, wenn sich die *.avs-Datei im selben Verzeichnis wie die Videodatei befindet.

  • AVISource
    Für .avi-Dateien reicht der Befehl:
AVIsource("...Dateipfad...\DeineVideoDatei.avi")
  • FFMpegSource
    Für die heute vorherrschenden Formate *.mkv und *.mp4 wird das Plugin FFMpegSource verwendet.
    Zur Installation muss lediglich die passende ‚ffmsindex.exe‘ und ‚ffms2.dll‘ in den ‚plugin‘ Ordner im AVIsynth-Verzeichnis kopiert werden.
    Wenn man bei dieser Methode das erste mal eine Preview erstellt wird, wird zuerst eine *.ffindex-Datei im selben Ordner erstellt.
    Das kann je nach Videodatei und System schon mal bis zu 10 Minuten in Anspruch nehmen, in denen avspMod nicht mehr reagiert … keine Panik, das ist normal.
    Der Befehl lautet:
FFVideoSource("...Dateipfad...\DeineVideoDatei.mkv")
  • DirectShowSource
    Diese Methode kommt zum Einsatz, wenn eine Datei aus irgendwelchen Gründen nicht mit den beiden vorherigen Verfahren verwendet werden kann,
    sie allerdings von beispielsweise dem MPC-HC oder auch Windows-Mediaplayer wieder gegeben werden kann.
    Dabei wird auf die systeminternen Codecs zurück gegriffen, was eine ‚relativ‘ unzuverlässige Variante im Bezug auf Qualität und Frame-Genauigkeit darstellt.
DircetShowSource("...Dateipfad...\DeineVideoDatei.xxx")
Grundlegende Operationen
  • Crop
    Wenn in der Source Schwarze Ränder vorhanden sind, sollten diese zuallererst abgeschnitten werden.
    In DVD-Quellen waren so gut wie immer Ränder, aber auch in BD-Quellen und vor allem HDTV-Rips sind sie vorhanden.
    Im YUV-Farbraum kann aber nur um gerade Zahlen an Pixel-reihen abgeschnitten werden (0,2,4,6,…).
    Außerdem sind die Vorzeichen zu beachten.
crop(links,oben,-rechts,-unten)
  • Resize
    Faustregel: Nicht Upscalen.
    Die optimale Auflösung für Moderne Animes ist meistens 720p (1280x720 Pixel).
    Um Komplikationen zu vermeiden sollten alle Quellen auf die Selbe Auflösung gebracht werden:
spline36resize(1280,720)
  • Framerate
    Die Framerate sollte auf die Geschwindigkeit im AMV angepasst werden und auf jeden Fall bei allen Quellen auf den selben Wert gesetzt werden.
    Sinnvolle Frameraten sind: 23.976 - 25 - 29.970 - 50 - 59.940 … 29.970 ist häufig ein guter Kompromiss (und das Maximum auf Youtube).
assumefps(29.97)

Ein Skript bei optimaler Source sieht dann also wie folgt aus:

FFVideoSource("...Dateipfad...\DeineVideoDatei") crop(x,x,-x,-x) spline36resize(1280,720) assumefps(29.97)

Die Filter im Folgenden beeinträchtigen das Bild teilweise sehr stark.
Es ist sehr sinnvoll zwischendurch mit ‚#‘ immer mal wieder den Filter zu deaktivieren um sicher zu gehen, dass man es nicht übertrieben hat.
Außerdem sollte Grain und Banding vor dem Croppen und Resizen zu minimiert werden.

Grain

Grain ist bei Animes häufig ein bewusst eingesetztes Stilmittel.
Daher sollte man immer zwei mal überlegen, ob eine Source tatsächlich ‚gesäubert‘ werden muss
Das gilt insbesondere, wenn dabei zu viele Details zerstört werden.

Häufig bleiben bei komprimierten Videos (mit denen wir nun einmal arbeiten müssen) aber auch Körner zurück, die mit den selben Filtern entfernt werden können.

Diese Filter werden an einem Fansub-Encode von ‚To Aru Majutsu no Index‘ angewendet.
Die Bilder sollten in Voller Auflösung angesehen werden um ‚irgendetwas‘ zu erkennen.

  • FFT3DFilter Download
    Dieser Filter berechnet aus den vorhergegangenen und folgenden Frames ein ‚sauberes‘ Bild. Dies kann allerdings zu ‚Ghostframes‘ führen.
    Meistens ist der FFT3DFilter die Standardlösung, obwohl er im Vergleich zu den anderen relativ langsam ist.
    Das Endergebnis weist in der Regel Banding auf, welches anschließend noch entfernt werden sollte.
FFT3DFilter(sigma=x,plane=4,bt=3)
  • sigma - Dies ist der ‚Stärke‘-Wert des Filters und daher der, an dem hauptsächlich gedreht werden sollte.
    Bei modernen Produktionen reichen in der Regel Werte bis 2. Kommazahlen sind möglich.

  • plane - Hiermit werden die Farbkanäle eingestellt, auf die der Filter angewendet wird.
    0 - Luma, 3 - Chroma, 4 - Alle Kanäle

  • bt - Mit diesem Wert wird bestimmt, wie viele Frames in der Umgebung in die Berechnung einbezogen werden.
    Wenn Ghostframes auftreten sollte dieser wert 1 angenähert werden
    0 - Alle vorherigen, 1 - nur aktueller, 2 - aktueller und ein vorheriger, 3 - aktueller und ein vorheriger+folgender, …
    Die bereits eingesetzten Werte müssen nur bei absoluten Härte-/Sonderfällen verändert werden.

  • dfttest Download - Benötigt die passende libfftw3f-3.dll im Systemverzeichnis
    Dieser Filter ist sehr brachial, weshalb man hier besonders darauf achten sollte, es nicht zu übertreiben.
    Durch die eingebaute Dither-Funktion muss nur selten ein weiterer Filter heran gezogen werden um das Banding zu entfernen.
    Kann in leicht bewegten Szenen zu sehr unruhigen Farbflächen führen.

dfttest(sigma=x,dither=x)
  • sigma - Auch hier der Wert für die Stärke des Filters. Kommazahlen sind möglich.
    Im Gegensatz zum FFT3DFilter können hier die Werte etwas höher angesetzt werden.
    Werte über 10 sind in der Regel aber dennoch zu hoch.

  • dither - Mit dieser Funktion wird das Banding ‚entfernt‘. Die genaue Erklärung ist im Abschnitt ‚Banding‘ zu finden.
    Werte über 1 sind in der Regel schon viel zu krass. Nur ganze Zahlen möglich.

  • TTempSmoothF Download
    Dieser Filter weicht die Kanten ein ganz kleines bisschen auf und hilft eigentlich nur bei sehr wenig Grain.
    Dafür ist er äußerst schnell und macht nichts kaputt :wink:

TTempSmoothF(maxr=x)
  • maxr - Der Radius um die einzelnen Pixel die zur Berechnung heran gezogen werden. Nur ganze Zahlen von 1 bis 7 möglich.
Colorbanding

Colorbanding tritt eigentlich immer bei komprimierten Quellen auf.
Durch die Kompressionsverfahren wird in der Regel Grain und Dither verringert, was dann die natürlichen Kanten eines 24-bit Farbraums (8-Bit/Kanal) zur Geltung bringt.
Häufig hat aber auch einfach jemand schlecht gearbeitet und das Banding im Encode verursacht.
Da es sich teilweise um eine technische Limitierung handelt ist die einfachste Möglichkeit,
die Kanten an den Farbverläufen ineinander zu ‚verpixeln‘ - zu dithern. Eintrag im deutschen Wikipedia

  • GradFun2DB(mod)
    Das Schweizer Taschenmesser für diesen Fall. Es gibt keinen besseren/schnelleren/zuverlässigeren Filter als diesen.
    Außerdem ist er, wenn er erstmal läuft, fast 100% Idiotensicher (ausgenommen ist ein spezieller Russe).
    Verwendet wird das Script Gradfun2DBmod, dass Gradfun2DB mit verschiedenen Filtern kombiniert, die daher ebenfalls installiert werden müssen.
    GradFun2DB Download
    GradFun2DBmod Download (einfach die *.avsi in das avisynth-Pluginverzeichnis kopieren)
    MaskTools Download (achtet darauf, dass ihr die neuste Version benutzt - 2.0a48)
    RemoveGrain Download (auch hier die neuste Version benutzen - v1.0PR)
    AddGrain Download
GradFun2DBmod(thr=x,str=x)
  • thr - Hier wird die Stärke der Dither-Fuktion eingestellt. Möglich sind Kommazahlen ab 1, wobei Werte über 1.5 kaum noch Verbesserungen mit sich bringen.
  • str - Das ist die Stärke/Menge des zusätzlich generierten Grains, um Banding zu ‚verschleiern‘. Möglich sind Kommazahlen, wobei der Standardwert von 0.8 oft okay ist.
    Wenn möglich sollte der Wert aber auf 0 gesetzt werden

Der Filter hat noch wesentlich mehr zu bieten, was man(du!) im Zweifelsfall aber direkt in der ‚GradFun2DBmod.v1.5.avsi‘ nachlesen kann.
Das folgende Vergleichsbild stammt direkt von der deutschen BluRay des ersten ‚Garden of Sinners‘-Teils.

Hier noch einmal mit der Zeile

GradFun2DBmod()

Das war es dann so weit;
Falls ihr Fehler findet oder Fragen habt, immer her damit :wink:

Noch mal vielen Dank für die Mühe, die du dir für den Vortrag und den hiesigen Beitrag gemacht hast.
Bin froh, dass der Inhalt so doch noch sein Publikum findet. Chapeau!

Bravo Cedric!
Echt schade dass es auf der Con nichts wurde, wenn ich mir das so ansehen kann ich Andi nur beipflichten - da steckt Mühe drin.
Nichtsdestotrotz wird sich hoffentlich jeder der avisynth immernoch nich rallt hierher verirren, eine gute Zusammenfassung haste da allemal.
Ich würds auch nicht für die nächste Con verwerfen. :wink:

juche update für mich :3
ich finds auch sehr klasse das du das ausgearbeitet hast obgleich ich noch nicht in die zeit geraten bin mir das an zu schaun… zukünftige videos werden aber davon profitieren :3
danke dafür ^^

oh WoW also mir wurde zwar avisynth geratten ,kappiert habe ich es aber nie , glaube das werde ich mal mit dem Grundlagen Tutorial hier ausprobieren :slight_smile:

Falls du nicht verstehst wie man es ankriegt, kann ich es dir als Anfänger für Anfänger doch noch helfen, weil ich zuerst auch net geschnallt habe, dann durch Zufall un rumprobieren ging alles, obwohl ich der Meinung bin, dass Avisynth irgendwie in unserer HD Zeit sinnlos ist xD (vllt liegt es daran, dass ich Videos in 1920x1080 immer besorge und direkten BD rips, die man wahrscheinlich easy lossless macht (ich nehme an, das sind die lossles Videodateien, die ich habe, mit UT Codec gerendert und dabei kam avi Videodatei mit etwa 16-22 GB raus , falls ich mich täusche, korriegiert mich jemand) :whistling: .
Interlacing krige ich mit Sony so aus ( Deinterlacing aus) , Farbkorektur jeglicher Art ist in SV auch möglich, Frames der Videos kann man auch ändern und kA. Vllt liege ich da falsch, aber Avisynth überzeugt mich net so , obwohl ich haufen codes ausprobiert habe, nichts drastisches passierte ,was die Videoqualität angeht, konnte ich leider keinen Unterschied feststellen…leider net -.-. Ich glaube. man merkt es, wenn man den Anime von DVD hat oder vllt in niedrige Auflösung, dann ist wahrscheinlich Avisynth mächtig…

Ich wüsste echt NICHT, was zarx264, virtualDub, Any Video Converter und Sony vegas pro 12 nicht könnte was das AVS kann ( dazu noch habe ich in Sony vegas Ut Video Codec reingepackt, zum testen und damit gerendert… ) ^^

Avisynth gehört in die Quellenvorbereitung.
Mir fallen spontan in dem Gebiet also viele Dinge ein, die man damit anstellen kann, die mit zarx264, VDub und irgendeinem dubiosen Videokonverter (von dem niemand weiß, was er eigentlich genau tut) nicht gehen (s.o.).

Sicher könnte man auch mit dem Dampfhammer eines Editing-Programms ankommen und das selbe Resultat erzielen … das ist aber nicht das Ziel.

Hat mir was gebracht. Arbeite zwar seit Jahren mit fft3d, aber hatte immer meine 2 standart Zeilen code, die ich je nach Footage eingesetzt und nicht groß modifiziert habe. Gut simplifiziert, sollte so imo auch für Einsteiger verständlich sein. Top auch die Bilder. Schade, dass ich das Panel auf der Connichi verpasst habe.

Super Zusammenfassung, vielleicht sollte man noch für das ffvideosource plugin den Link auf die neuste version angeben :slight_smile:

Werde ich sicherlich noch gebrauchen können um banding zu entfernen.