VHS filtern mit Avisynth
Avisynth installieren
Deutsche Hilfedateien für Avisynth
Avisynth Skripte zur Nachbearbeitung von VHS
Duplicate Frames im VHS grabbing ersetzen durch interpolierte Zwischenbilder
Skriptbaukasten
Avisynth-Beispielskript zum Bearbeiten von VHS-Video
Audio abtrennen
Gradationskurven übernehmen aus Virtualdubfilterkette
Links
Avisynth installieren
Du benötigst
- Avisynth+ – aktueller Zweig, installiert bei Bedarf x86 und x64 Version gleichzeitig (empfohlen)
- AvsPmod – Skripteditor für Avisynth mit Syntaxhighlighting und Vorschau des Videos – sollte ebenfalls als x86 und x64 Version installiert werden
- Plugins, die dein Skript benötigt:
x86 Plugins für Avisynth
x64 Plugins für Avisynth – derzeit noch wenig -
VirtualDub2
– Kann Videos laden, schneiden, umkopieren und bringt auch selbst Filter zur
Bearbeitung mit (die jedoch meist nicht ganz so hochwertig wie die
Algorhithmen von Avisynth sind).
Dieses Programm ist sehr hilfreich, denn du kannst Avisynth-Scripte laden, siehst das Ergebnis und kannst sehr komfortabel verschiedene Codecs für Video und Audio auswählen.
Weil Avisynth beim Öffnen der VideoRohdaten manchmal Frames verliert, empfielt sich ein Umkodieren der Videorohdaten mit VirtualDub2, bevor das Video weiter in Avisynth bearbeitet wird.
Mehr dazu steht unter: Vermeiden von Bildverlusten (Dropped Frames) beim Importieren.
Auch von VirtualDub2 solltest du sowohl die x86 und die x64 Version installieren
Installiere die Programme. Bei Avisynth müssen die Verzeichnisse angegeben werden, in denen Du die Plugins vorrätig hälst.
Die x86- und x64 Version sind zwei völlig getrennte Ökosysteme. Um ein
Avisynth-x64 Skript laufen zu lassen, benötigtst du Avisynth+ x64,
Virtualdub x64 und auch die Plugins als x64-Version.
Hingegen kann das
eigentliche Avisynth-Skript prinzipiell in beiden Umgebungen laufen,
solange darin nicht explizit Plugins über ihre Verzeichnisse addressiert
werden.
Derzeit (2019) laufen Skripte in der Regel in der x86 Version von
Avisynth etwas schneller, als in der x64 Version.
Allerdings kann sich
in der x86 Version schneller ein Speichermangel bemerkbar machen, da eine
x86-Software nur bis zu 4 GB nutzen kann.
Über Avisynth
Avisynth ist ein FrameServer, also eine Software, die andere Programme mit vorverarbeiteten Frames (Bildern und Ton eines Videos) versorgen kann. Daher kannst du Avisynth Scripte mit einigen Videoplayern und mit VirtualDub öffnen, die sich dann im Hintergrund die Videoframes aus Avisynth abholen.
Der Editor AvsPmod kennt
Syntaxhighlighting für die Avisynth Scriptbefehle. Er kann beliebig
wählbare Bereiche deines Scripts aktivieren und deaktivieren. Das ist
praktisch, um die Wirkung bestimmter Bearbeitungsschritte
auszuprobieren. Er kann auch Schieberegler bereitstellen, mit denen du
bequem Werte für Filter verändern kannst.
Sehr praktisch ist die bildweise Vorschau des fertigen Films. Kombiniert mit den
Tabs kann man so verschiedene Varianten des eigenen Skripts gleichzeitig öffnen,
und durch Umschalten direkt die Auswirkungen der Veränderungen auf das Bild begutachten.
Dem Programm AvsP musst du den Pfad zum Kommandozeilenwerkzeig AVS2AVI
mitteilen. Dieses kannst du verwenden, wenn du nicht vorhast, einen
Film in Echtzeit zu betrachten (das geht bei aufwändiger Bearbeitung
sowieso oft nicht, da Avisynth schleichend langsam ist), sondern
wenn der Film so schnell wie möglich vor sich hin gerendert werden
soll.
Praktischer ist es jedoch, das fertige Avisynth-Skript mit Virtualdup zu
öffnen, und dann mit Virtualdup zu rendern.
Abbildung: AvsPmod mit einem geöffneten Avisynth Script, Vorschau des bearbeiteten Videoclips und Schiebereglern
Wenn alles installiert ist, öffne die mitgelieferte Hilfe und arbeite dich am Besten anhand der Beispiele schrittweise ein.
Avisynth erfordert einiges an Einarbeitungszeit und du wirst am Anfang sehr viele Beiträge im Internet lesen müssen, bevor du mit der Sache vertrauter wirst. Als Anfänger solltest du nicht gleich in Foren um Rat fragen. Die anderen mussten sich zunächst auch in Avisynth allein einarbeiten, und sie erwarten so viel Disziplin auch von dir.
Deutsche Hilfedateien für Avisynth
Die von Avisynth mitgelieferten deutschen Hilfedateien sind sehr mager.
Erweiterte deutsche Hilfe für Avisynth runterladen
(Changelog, Hinweise zur Mithilfe)
Entpacke das Archiv in einen freien Ordner und kopiere dann die Hilfedateien nach
Avisynt\Docs\German.
WICHTIG! Vermeiden von Bildverlusten (Dropped Frames) beim Importieren
Vor der ersten Bearbeitung sollten die Video-Rohdaten mit Hilfe von
VirtualDub2 eingelesen und umkodiert werden!
Sonst können Frames verloren
gehen, wodurch Bild und Ton auseinanderlaufen.
Mehr dazu steht unter:
Vermeiden von Bildverlusten (Dropped Frames) beim Importieren.
Avisynth Skripte zur Nachbearbeitung von VHS aus verschiedenen Foren
In den einschlägigen Foren wurden schon einige einfache Skripte gepostet, die speziell für VHS Grabbings gedacht sind.
Bevor du beginnst, eigene Skripte zu schreiben, solltest du diese erst einmal ansehen, verstehen und ausprobieren.
- Avisynth Skripte zur VHS Bearbeitung runterladen - Skripte zur Bearbeitung von VHS Grabbings, gefunden in verschiedenen Foren
- Script von Didée mit Beispielscreenshots 2011 - die dazu gehörigen Dateien sind in obigem Download enthalten
- VHS Restauration Neuanfang mit Avisynth - mit Beispielscreenshots
Duplicate Frames im VHS grabbing ersetzen durch interpolierte Zwischenbilder
USB Video Grabber ersetzen schlecht synchronisierte Bilder automatisch durch Kopien des letzten noch korrekt gelesenen Frames. Im Ergebnis sind Teile des resultierenden Videos mit einzelnen oder mehreren doppelten Frames aufgefüllt.
Bei längeren Lücken scheint das Bild kurzzeitig einzufrieren.
Vor allem bei VHS-Aufnahmen tritt dieses Problem auf.
Pro Stunde Aufzeichung von VHS habe ich schon bis zu 1500 doppelte Frames gefunden.
Hier gibt es eine Lösung: MorphDups ist ein Avisynth Skript, das solche doppelten Frames findet. Es erzeugt bei der Suche ein zweites Skript (morphmydups.avs) mit einer Funktion, die diese Duplikate ersetzt. Dazu wird die Funktion Morph von Mud Funky genutzt, die künstliche Zwischenbilder errechnet, und mit ihnen die Duplikate ersetzt. Man erhält eine fließende Bewegung zwischen dem ersten Frame der Lücke und dem ersten Frame nach der Lücke.
Replace duplicated frames with Interpolation – Diskussionsthread mit Verweisen auf mehrere ähnliche Lösungen.
Die Duplikate in der Lücke werden durch interpolierte Zwischenbilder ersetzt
Das generierte Script sieht so aus:
function morphmydups (clip c) { c # morph(56,67) # YDiffNext=10.803629, length = 10========== morph(103,105) # YDiffNext=4.838520, length = 1= morph(106,108) # YDiffNext=4.491889, length = 1= morph(109,111) # YDiffNext=4.452096, length = 1= } # End of function
Im deinem eigenen Script kannst du morphmydups.avs dann so verwenden:
#0. Imports, Loadplugin .....................................................
#import ("J:\plugins\Morph1b.avs") # überlagert einen Infotext auf interpolierten Frames
import ("J:\plugins\Morph.avs")
loadplugin ("J:\plugins\mvtools2.dll") #Pfad zu deinen Plugins hier anpassen
import ("morphmydups.avs") # evtl. Pfad zum Skript hier angeben
stack=true #true= Debug-Ansicht: Quelle und interpolierte Version gleichzeitg ansehen
#1. Datei öffnen .......................................................................
AVIFileSource("J:\test\test79400.avi")
source=last
#morph function...................................................................
morphmydups(source)
#Debug view ...........................................................................
stack ? stackvertical(last, source.subtitle("Input (unprocessed)")).\
+BilinearResize(width(source)/2, height(source)):last
Eigene Skripte schreiben
Im Prinzip sind Avisynth-Skripte nach genau dem selben Schema aufgebaut, wie die typische Filterreihenfolge in Virtualdub. Der Unterschied liegt eher in der Qualität der Filter. Für Avisynth gibt es Interlacer, die mehr Details des Bildes erhalten und ausgeklügelte adaptive Rauschfilter, adaptive Schärfefilter und Filter für einige spezielle Bildstörungen.
Bevor wir uns an die Reparatur wagen, wollen wir uns vergegenwärtigen, mit welchen Störungen wir bei VHS rechnen müssen.
Typische Störungen in VHS Aufnahmen
Öffne ein VHS Grabbing in Virtualdub und bewege dich langsam frameweise durch das Video. Du wirst wahrscheinlich folgende Störungen sehen:
- Die Zeilen wackeln und stehen nicht hart an einer Position (besonders zu erkennen am dunklen Zeilenrand). Dies liegt an mechanischen Verzögerungen. Abhilfe: Signal durch einen Hardware TBC (Time base corrector) vor dem Grabben leiten. Hinterher so gut wie nicht zu reparieren.
- Das überlagerte Rauschen unterscheidet sich von Frame zu Frame. Das kann das Deinterlacing bei intelligenten (Bob)Interlacern stören, wenn Rauschen fälschlich als Bewegung interpretiert wird und Zeilen dann falsch interpoliert werden.
- Chroma-Shift, Farbe ist gegenüber dem Bild nach unten und rechts versetzt.
- Chroma-Unschärfe, Chroma-Bleeding, Farbe wird über die Ränder der Objekte verschmiert.
- Zeilenweise Bildstörungen, die im VHS Recorder durch ein Duplicat der Vorgängerzeile überdeckt wurden.
- Fehlende Frames durch Bandknitter (vom Grabber durch Duplicate des letzten erfassten Frames ersetzt).
- Audio-Versatz, da die Bildrate nie genau 25 fps beträgt.
Zusätzliche Probleme durch Mehrfachüberspielungen (Kaufkassetten):
Zeilenstörungen, VHS Überschärfung (Halos), Weichzeichung und Chroma-Versatz vervielfachen sich.
Zusätzliche Probleme bei Aufnahme von Analog-TV:
stärkeres Rauschen, Geisterbilder, Chroma-Störungen (Moiree, Regenbögen), Interferenz durch Nachbarsender (Diagonale Streifen)
Zusätzliche Probleme bei alten Filmen:
Helligkeitsschwankungen (Flicker), Wackeln des Bildes, senkrechte Kratzer, Flecken (Spots), ausgeblichene Farben, Farbstich
Avisynth Scriptbaukasten
Dies sind die wichtigsten Skripte und Filter für typische Aufgaben der Videonachbearbeitung.
8 mm Schmalfilm restaurieren: alter Thread mit Beispielscripten: The power of Avisynth: restoring old 8mm films neuer Thread ab 2017: The power of Avisynth: new 8mm film restoring examples exotische Formate öffen: siehe avisynth.org/mediawiki/FAQ_loading_clips Deinterlace: das oben erwähnte Script von Didée interpoliert die verwackelten Zeilen von VHS besser, als alles andere, und erledigt dabei auch noch Chromashift, Chroma nachschärfen, schärfen und temporal filtern TDeint (schnell und scharf, reicht für VHS) scharfe Deinterlacer für gute Digitalquellen: QTGMC, MCBob, MvBob, TDeint Folgen von Normwandlungen beseitigen (falsche Zwischenbilder) Srestore ersetzt überblendete Zwischenbilder (siehe hier) RestoreFPS, Exblend - entfernen bei Frameratekonversion eingefügte Blendings Blockartefakte aus Videos mit schlechter Bitrate entfernen amDCT ist adaptiv auf Frame, Block- und Pixelebene Deblock QED (Didée), DeBlock (Manao, Fizick), qqfix Chroma Delay: ChromaShiftSP.avsi (erlaubt Verschiebung mit Subpixel-Genauigkeit) Farbe an Kanten versteilern: mt_edge Farben anpassen Colormill aus Virtualdub2 verwenden Flatterzeilen gerade richten (schlechte Zeilensync): bisher keine Softwarelösung Das TBC Script von 2008 und Dejitter leisten dies nicht! (siehe Diskussion) Der Versatz entsteht nicht, wenn das Signal vor dem Capturen einen Hardware-TBC durchläuft. Bild stabilisieren: Depan (nur bei wackligen Kameraufnahmen und altem Film), Deshaker3D (mit perspektivischer Entzerrung), Deshaker Flackern entfernen: ReduceFlicker (nur bei altem Film nötig) Flecken (Spots) entfernen: RemoverdirtMC(), DeSpot Levels anpassen: SmoothAdjust (SmoothLevels) Kratzer entfernen siehe dieses Posting Temporal Entrauschen: mdegrain2 - temporal Smoother mit Bewegungskompensation, entspricht etwa temporal 5 in Vdub mdegrain - temporal Smoother mit Bewegungskompensation, entspricht etwa temporal 3 in Vdub die verschiedenen Varianten fast das super-Script SMDegrain zusammen (SMDegrainMod, 2) Neat Video for Virtualdub (zaubert viele Details hervor) VHS-Störungen entfernen: weiße oder schwarze horizontale Störzeilen: deVCR (Ricardo Garcia), Depulse, DepulseC Halos bzw VHSÜberschärfung entfernen: (nur wenn nötig) HaloBuster BlindDeHalo, BlindDeHalo3 (mit Strength < 70) FixVHSOversharp, YAHR (Didée) Schärfen: SeeSaw, LSFmod, limitedsharpen faster (schärfen 3x3 Area, bei VHS erst nach verkleinern sinnvoll) für sehr scharfe Quellen von DVD (nicht für VHS): iiP FQFocusDeFocus, FQRestore (schwer einzustellen) erhöhen feiner Details in DVD-Quellen: Plum for VapourSynth Für Cartoons/Animee: SuperToon, aWarpSharp2, Toon1.1 Echtzeitschärfen von HQ Quellen während Wiedergabe: FineSharp Finales Beschneiden: Crop Resize auf Endgröße: LanczosResize oder das schärfere Lanczos4Resize(512,384 oder 480,352) bei starken Vergößerungen (Faktor 2) Interpolation mit NNEDI3 noch besser: AviSynthShader + SuperRes - erzeugt feinere Details Szenenwechsel automatisch finden: verschiedene Ansätze (siehe Forumsbeitrag) Broadcast Störungen beseitigen (bei Aufzeichnung von Analogempfang) Geisterbilder entfernen: Ghostbuster oder Virtualdub Exorcist Chroma-Rauschen entfernen: CNR2 (Nur bei Aufnahme von verrauschen TV Broadcasts) Farben anpassen: (nur bei altem Film oder eigenen Videos nötig) GamMAC streckt automatisch die Histogramme in RGB auf den selben Bereich manuell erfolgt dies am besten mit dem Virtualdub Plugins Gradition und ColorMill vorübergehend in Graustufen anzeigen: Greyscale Gamma, Levels anpassen: Levels, SmoothLevels (zeigt auch Histogramm) Farbsättigung ändern (auch für einzelne Farben): Tweak Farbsättigung und Farbbalance ändern (Ge-Bl, R-G): SmoothTweak Gradationskurve (auch für R,G,B separat): SmoothGradationRGB.avs (von dieser Seite) HDR Effekt (lokalen Kontrast erhöhen): HDRAGC Helligkeit, Kontrast ändern: Nicht angeraten, besser mit Levels und Gradationskurven arbeiten Farben: ausgeblichene Highlights korrigieren: siehe improve overexposed Filmrauschen simulieren (macht Videos mit wenig Details lebendiger) Grainfactory3 Blending zwischen Frames beseitigen: Exblend (macht weniger Artefakte als die anderen), srestore, FixBlendIVTC Geometrische Verzerrung: perspektische Trapezverzerrung: Reform (V. C. Mohan) schräger Zeilenversatz: SkewRows Drehen: rotate (Fizick) Duplicate Frames durch Interpolationen ersetzen: MorphDups Framerate conversion (Bildrate/s umwandeln) Sammlung (PAL->NTSC, TNSC-> Pal und andere), Verdopplung in Echtzeit, interframe Hohe Bittiefe (10 bit) verwenden High bit-depth Support with Avisynth Bildelemente überlagern mt_merge (aus Masktools 2, für YV12 video, YUY2 nur mit Tricks, RGB gar nicht) Overlay() (langsam und vielseitig, alle Farbräume) Layer() für RGB und YUY2 clips, kann bei RGB32 den Alphakanal als Maske verwenden
Verwende eine Suchmaschine, um die Plugins zu finden. Die meisten sind auf der Avisynth-Webseite verlinkt.
Manche Skripte benötigen ältere Versionen eines Plugins. In diesen Skripten musst du dann explizit die nötigen Plugins laden (mittels loadplugin ("Pfad zum Plugin") ).
Avisynth-Beispielskript zum Bearbeiten von VHS-Video
Dieses Skript enthält folgende Bearbeitungsschritte. Je nach Qualität des gegrabbten Videos benötigst du nur einzelne von diesen Schritten. Nur sehr selten wird alles notwendig sein:
VHS Script 2018 –
Version des Skriptes, in der explizit alle benötigten Plugins adressiert
und geladen werden.
Die Befehle zum Laden sind auskommentiert, können
aber durch Löschen der "#"-Zeichen am Zeilenanfang freigeschaltet werden.
In dem Fall musst du die Pfadangaben anpassen, so dass sie zum richtigen
Verzeichnis auf deinem System zeigen.
Natürlich kann noch sehr viel mehr nötig sein: Verwackler reduzieren, Rainbowing entfernen, Farbanpassungen, ...
Audio abtrennen
Bei komplexen Bearbeitungen des Videos lasse ich gern die Audiospur völlig außen vor und füge sie erst am Schluss dem fertigen Video hinzu (nach dem Rendern). Je nach Herkunft des Videos (Videokamera, Internet, DVD) kann die Audiospur in irgendeinem exotischen Format vorliegen. Nicht immer passt dieses zum später anvisierten Container.
Es gibt mehrere Möglichkeiten, um exotische Formate wie aac umzuwandeln. Wenn du für die Umwandlung das Programm Avidemux nutzt, musst du dich nicht in Spezialsoftware einarbeiten.
So gehts: Öffne das Ausgangsvideo mit Avidemux. Wähle links unter dem Punkt Audio deinen Zielcodec. Bei MP3 sollte die Bitrate etwas höher als im komprimierten Original liegen, um Qualitätsverluste zu vermeiden. Dann wähle Audio > Tonspur speichern … und gib den Namen an, unter dem du die konvertierte Audiospur speichern willst.
Ins fertige Video kannst du diese Audiospur einmuxen mit Hilfe von Virtualdub oder auch mit Avidemux. Beide Programme musst du anweisen, die externe Audiospur zu laden, und die geladene Videospur zu übernehmen (copy). Dann das Ausgangsvideo speichern.
Gradationskurven übernehmen aus Virtualdub-Filterkette
Mit dem hier präsentierten Werkzeug kannst du in Avisynth die Farbveränderungen deine Lieblingsprozesses aus Virtualdub nachbilden. Es besteht aus zwei Teilen:
- Gradationstest ist ein Werkzeug, mit dem du Mithilfe eines Photoverarbeitungsprogramms eine Über-alles Gradationskurve aus einer Virtualdub-Filterkette erzeugen kannst.
Es verwendet dabei eine Vorlage von www.simplefilter.de
(Farbveränderungen, die in einem anderen Farbraum als RGB vorgenommen wurden, können davon nicht erfasst werden) - SmoothGradationRGB ist ein Avisynth-Script für AvsP, das Schieberegler für eine 5-Punkt Gradationskurve im RGB Farbraum bereitstellt:
Lichter, Mitten und Schatten aufhellen oder abdunkeln (Einsatzpunkte und Stärke),
Alle Arten von S-Kurven, Korrektur für jeden der 5 Punkte für R,G,B separat einstellbar
auf Wunsch wird die resultierende Gradationskurve angezeigt
Damit lässt sich die aus Virtualdub extrahierte Gradationskurve nachbauen.
Abbildung: Alter Film und bearbeitete Variante in Virtualdub,
die Wirkung der selben Filter auf einen Graukeil und die daraus resultierende Gradationskurve
Links
- Avisynth.nl Wiki mit englischen Erklärungen, Übersichten über eingebaute und als Plugin erhältliche Filter:
shared functions, Externe Filter,
Hinweis: Nutze die Suchfunktion, wenn du etwas nicht findest. Die eingebaute Verlinkung ist etwas unübersichtlich.
Generell sind die Beispiele hier oft längst überholt, weil jemand in der Zwischenzeit was Besseres programmiert hat.
- chaosking.de/avisynth-filter-db - eine deutsche Avisynth-Filter Datenbank
- Doom9.org - die wichtigste Anlaufstelle zu allen Fragen von Videograbbing, Videonachbearbeitung und Avisynth Scripten, umfangreiches Forum ,
- Gleitz.info - ein deutsches Doom9 Forum. Hier diskutieren eher die Insider und Anfängerfragen werden oft nur ungern beantwortet. Antworten auf manches lassen sich über die Suchfunktion finden. Beiträge von Einsteigern werden oft wochenlang nicht freigeschaltet (Stand 2012)
- www.movie2digital.at - deutschsprachiges Forum zur Videobearbeitung.
- www.super-8.be - eine geradezu unglaubliche Verbesserung holt das dort vorgestellte Script aus gegrabbten 8 mm Filmen heraus (Beispiel), deutsche Hilfe zu diesem Skript, Forum 1, Forum 2
eine modifierte schnelle Version von JohnMeyer - Reasons to hate Avisynth - viel wahres dran
- Vapoursynth - ist eine 2012 kreierte Videoverarbeitungssprache auf der Basis von Python, die Avisynth ablösen könnte (unter anderem deutlich schneller), siehe auch Thread im Avisynth forum dazu, Sammlung von konvertierten Avisynth Skripten