Restauration von VHS Material mit VirtualDub, AviSynth und QTGMC, AvsP und WinFF

In diesem Artikel möchte ich zeigen wie mithilfe von VirtualDub, AviSynth und dem AviSynth-Script QTGMC, AvsP und WinFF VHS Videobänder restauriert werden können. Beginnend vom Aufnehmen (capture process) bis zum fertig restaurierten Video im entsprechenden Zielformat, werde ich die einzelnen Schritte rudimentär beschreiben.

 

Was wird benötigt?

Hardware

TV-Karte oder USB-Capture-Device, beide sollte mit S-Video Eingang ausgestattet sein.

Videorecorder zum Abspielen der VHS-Kassetten, dieser sollte einen S-Video Ausgang haben.

S-Video-Kabel zum Verbinden der beiden Komponenten.

An dieser Stelle möchte ich auf folgenden Artikel verweisen:

Software

VirtualDub: Wird benutzt als Aufnahme-Programm und als Frame-Server.

AviSynth: Wendet die jeweiligen Filter auf die einzelnen Frames an.

WinFF: Zum einfachen Konfigurieren von FFMpeg.

FFMpeg: Benutzt AviSynth, erstellt aus den fertig gefilterten Frames das Video.

AvsP: Zeigt das aktuell gefilterte Frame und wird dazu verwendet das AviSynth-Script zu erstellen.

Einen detailierteren Überblick und eine kleine Installationsanleitung findet man hier:

MediaInfo: Zum Anzeigen von Information über Media-Dateien also Video, Audio und Bild-Dateien.

VLC Media Player: Kann leider nicht kochen aber sehr gut alle möglichen Videodateien abspielen.

Codecs: Die jeweiligen Codecs die man für das Aufnehmen und das fertig gefilterte Video verwenden will müssen alle separat installiert werden.

Capture Devices

In Artikel "S-VHS Videorecorder und die Digitalisierung" habe ich bereits ein paar gute S-VHS Videorecorder vorgestellt. Für die ersten Tests habe ich mir daher einen Panasonic NV-FS200HQ Recorder besorgt. Dieser macht ein sehr gutes und scharfes Bild wenn man das möchte! Da diese Geräte nun doch schon etwas älter sind und verschließen sein könnten und ich keinen direkten Vergleich zu einem anderen S-VHS Player hatte, habe ich mir noch einen zweiten Panasonic NV-FS200HQ Rekorder besorgt um einen direkten Vergleich zweier identischer Geräte zu haben.

Man kann erkennen, dass der Grad der Schärfe bei beiden Modellen nahezu identisch ist. Die Schieber zum Einstellen der Schärfe waren bei beiden Recorder nahe dem Maximum. Man sieht jedoch auch, dass diese beiden Bilder einen leichten Unterschied in der Farbe aufweisen. Dies kann zum Einen daran liegen, dass die Farbjustierung damals noch von Hand mittels Potentiometer durchgeführt wurden, oder dass im Laufe der Zeit Bauteile (Kondensatoren) altern und zu einer Farbverschiebung führen. Welche Farbe nun aber realistischer ist muss jeder für sich entscheiden. Nichts desto trotz ist dies kein Problem, da bei nahezu allen aufgenommenen Videos ein individueller Farbabgleich von Hand gemacht werden muss!

PanasonicNV FS200HQ 1TB

Testbild PanasonicNV-FS200HQ 1 (interlaced)

PanasonicNV FS200HQ 2TB

Testbild PanasonicNV-FS200HQ 1 (interlaced)

 

Zum eigentlichen Aufnehmen auf den PC verwende ich die günstige aber dennoch sehr brauchbare Creatix CTX917 TV PCI Karte. Diese läuft bei mir absolut stabil und ohne irgendwelche Aussetzer bzw. Fehler.

Das eigentliche Aufnehmen mit VirtualDub

VirtualDub öffnen >> File->Capture AVI >> Device->(Device auswählen und Einstellen) >> Video->Video Source->Video S-Video >> File->Compression >> Kompression auswählen und Einstellen oder RAW Format wählen >> Sound am unteren Rand auf 44K/16/s einstellen >> File->Set Capture File >> Dateiname angeben >> Capture->Capture Video .

Und schon wird das Video im entsprechenden Format aufgenommen. Eine kurzes Video mit einer detailierten Anleitung dazu findet man hier: https://www.youtube.com/watch?v=jOp77tP3j64.


Welche Kompression soll ich zum Aufnehmen nutzen?

 Am besten natürlich eine verlustfreie Kompression! Heutzutage kann man auf verschiedene Codecs zurückgreifen die das Video verlustfrei kodieren. Dazu zählen unter anderem die folgenden (aber auch nur dann wenn sie korrekt eingestellt werden): HuffYUV, X264, Laggarith und UTVideo. Es gibt noch weitere Codecs, die entweder eher zu den Exoten gehören, oder sich nicht als sehr praxistauglich herausgestellt haben. Die folgende Tabelle zeigt eine kleine Übersicht über Codecs, die aktuell (Stand 31.12.2015) oft benutzt werden. Anhand von Testsequenzen wurden die folgenden Werte ermittelt. Da diese Werte von der Testsequenz bzw. dem zu kodierenden Bildmaterial abhängig sind, können die Werte zum Teil variieren!

 Codec  MB/h  Bitrate[Mbps]  Bemerkung
RAW 71285 165  YUV 4:2:2
HuffYUV 32046 73,3

 YUV 4:2:2 kann möglicherweise bei langen Aufnahmen fehlerhafte Frames erzeugen

X264 26936 61,1

 YUV 4:2:2 CABAC:No und GOP:N=1 für lossless Komprimierung

Laggarith 24278 55,5  YUV 4:2:2
UTVideo-420-601 21648 51,0  YUV 4:2:0
UTVideo-422-601 26983 61,7  YUV 4:2:2

 

 So aber welchen Codec soll man denn nun verwenden? Geschmackssache! Wovon ich jedoch abrate ist, gar keine Kompression zu verwenden. Wird keine Kompression eingesetzt werden die Dateien extrem groß. Auch für heutige Verhältnisse bei denen 1TB um die 50-60 Euro kosten, kann dies recht teuer werden wenn man eine Menge an Videos speichern will! Ich persönlich wechsle immer mal wieder zwischen den Codecs. Momentan probiere ich vermehrt mit dem UTVideo Codec herum. Müsste ich sie der Reihenfolge nach bewerten dann vielleicht so: UTVideo könnte der Beste sein, dann vielleicht der Laggarith dahinter anschließend der HuffYUV und dann der X264. Die tatsächliche Auswahl bleibt also jedem selbst überlassen.

Video Filterung und Encodierung

 Hat man nun eine VHS-Kassette aufgenommen möchte man diese Aufnahme auch als bald möglich filtern und im Zielformat abspeichern. Dazu geht man wie folgt vor: Man öffne das folgende Video und schaue es sich an, denn Bilder sagen mehr als 1000 Worte. https://www.youtube.com/watch?v=WXhLmH_ul94

 

 

 

 

 AviSynth Skript für VHS Material:

 AVISource("D:\Video-Aufnahmen\video.avs")
 ConvertToYUY2(interlaced=true) # alternative that specifies interlacing
 ColorYUV(autowhite=true) # auto white balance
 ConvertToYV12 # script below this line requires YV12
 AssumeTFF() # optional, BFF for DV source
 QTGMC(Preset="Slow", EZDenoise=1.5) 
 # Levels(0,1.000,250,2,255,true) 
 TWEAK([<"hue", -180, 180, 0>],[<"sat", 0, 4.0, 1.05>],[<"bright", -255.0, 255.0, 0.0>],[<"cont", 0.0, 5.0, 1.13>])
 Crop(16,2,-8,-10) # use both lines
 spline36resize(720,576)

 

 

 

ADD this in Sourcecode mode after finished with editing:<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?lang=css&skin=desert"></script>