Leserartikel Deinterlacing mit QTGMC

michi.o

Lieutenant
Registriert
Aug. 2010
Beiträge
1.003
Viele ältere Camcorder geben Videos mit dem sogenannten Zeilensprungverfahren (Interlaced) aus. Bei diesem Verfahren werden 2 aufeinander folgende Frames zu einem kombiniert, in dem von jedem Quellbild nur jede zweite Zeile gezeichnet wird. Alle geraden Zeilen stammen somit von einem, alle ungeraden Zeilen vom anderen Bild. Das Verfahren hat historische Gründe und stammt noch aus der Analogtechnik. Zum einen, konnte mit derselben Bandbreite die doppelte Framerate erreicht werden, zum anderen wurde das Flackern von Röhren reduziert.

Auf heutigen Bildschirmen macht Interlace keinen Sinn und sorgt für unschöne Artefakte (Kammeffekt), wenn der Videoplayer nicht damit umgehen kann. Für die Entfernung des Kammeffekts, dem Deinterlacing, gibt es verschiedene Verfahren. Deinterlacer von Software Videoplayern sind auf Schnelligkeit ausgelegt und arbeiten ungenau. Dadurch erscheint das Bild unscharf oder es bleiben Artefakte im Bild.

Einer der besten kostenlosen Deinterlacer ist QTGMC. Dabei handelt es sich um ein größeres Skript welches verschiedene Filter miteinander kombiniert. Um QTGMC zu verwenden ist jedoch einiges an Vorbereitung nötig. Genau hierfür soll dieser Artikel helfen.

QTGMC ist ein Skript für AviSynth. Bei AviSynth handelt es sich um einen Frameserver. Dieser erzeugt anhand von Skripten und verschiedenen Quelldateien einen Videostrom, der wiederrum von anderen Programmen verwendet werden kann. Zunächst müssen wir also AviSynth installieren.
Hierfür laden wir uns die *.exe Datei des neuesten Releases von GitHub runter:
https://github.com/AviSynth/AviSynthPlus/releases
Stand Januar 2020 muss die Datei " AviSynthPlus_3.4.0_20191020.exe" geladen und ausgeführt werden. Windows 10 verweigert natürlich sofort die Ausführung. Hier hilft ein Rechtsklick auf die *.exe Datei und ein Klick auf "Eigenschaften". Hier klicken wir ganz unten bei "Sicherheit" auf "Zulassen".

avisynthInstall.png


Nach Auswahl der Sprache und Zustimmen der Lizenz müssen wir die Komponenten auswählen. Als Installationstyp sollte "Standard" stehen bleiben. Der Haken bei "Dateizuordnungen auswählen" kann weg. Nach Abschluss der Installation startet der PC neu.

Als nächstes benötigen wir einige Plugins für AviSynth, die von QTGMC genutzt werden. Diese sind unter folgendem Link in der Tabelle "Core Plugins and scripts" aufgelistet. http://avisynth.nl/index.php/QTGMC

Es handelt sich dabei um die Plugins:
  • MaskTools2
  • MVTools2
  • nnedi3
  • RgTools
  • SMDegrain
Die Download Links in der Tabelle führen fast alle zu GitHub. Hier ist vom jeweiligen Release die *.7z Datei herunterzuladen. Von SMDegrain wird nur eine Skriptdatei benötigt. Wir folgen also dem Link zu pastebin, laden die Textdatei herunter und benennen sie auf "SMDegrain.avsi" um.

Nun müssen die Plugins installiert werden. Die *.7z Dateien sind Zip Archive die mit 7-Zip entpackt werden müssen. 7-Zip kann man unter https://www.7-zip.org/ herunterladen. Sämtliche Plugins müssen in das Verzeichnis "C:\Program Files (x86)\AviSynth+\plugins64+" kopiert werden. Die *.7z Archive enthalten aber mehr Dateien als nötig. Folgende werden tatsächlich benötigt:

  • Von MaskTools2 die Datei "masktools2.dll" aus dem x64 Ordner.
  • Von MVTools2 die Dateien "DePan.dll". "DePanEstimate.dll" und "mvtools2.dll" aus dem x64 Ordner.
  • Von nnedi3 die Datei "nnedi3.dll" aus dem "x64\Release_W7_AVX\" Ordner. Wenn Ihr einen neueren Prozessor mit AVX2 oder einen Intel habt, könnt Ihr einige der anderen Dateien versuchen. Siehe ReadMe. Für diese DLL muss noch eine Bibliothek von Microsoft installiert werden: https://aka.ms/vs/16/release/VC_redist.x64.exe
  • Von RgTools die Datei "RgTools.dll" aus dem "x64" Ordner.
  • Die Datei SMDegrain.avsi kommt auch ins Plugins Verzeichnis.

Wenn Ihr wollt, könnt ihr denselben Spaß noch einmal mit den x86 (32-bit) Versionen der Plugins machen. Diese müssen dann in den Ordner "C:\Program Files (x86)\AviSynth+\plugins+". In den *.7z Dateien muss dann der entsprechende x86 Ordner genommen werden.

Jetzt können wir endlich QTGMC selbst installieren. Es ist hier erhältlich: http://avisynth.nl/index.php/QTGMC
In der Box rechts oben ist ein Download Link. Die Datei "QTGMC.avsi" aus der *.zip Datei muss ebenfalls ins Plugin Verzeichnis.

Euer Plugin Verzeichnis sollte nun so aussehen:

plugins.png


Nun benötigen wir noch einen Videoeditor, der AviSynth Skripte in Videodateien umwandeln kann. Die Auswahl ist nicht sehr groß. Ich kenne nur VirtualDub und Avidemux, wobei der Import in VirtualDub einfacher ist. Also müssen wir noch VirtualDub installieren. Die aktuelle Version finden wir hier: https://sourceforge.net/projects/vdfiltermod/
Die *.zip Datei muss in einen beliebigen Ordner entpackt werden. Gestartet wird VirtualDub über die Datei "VirtualDub64.exe".

Fast geschafft! Alles was noch fehlt, ist ein AviSynth Skript, welches eine Videodatei öffnet und QTGMC aufruft. Dafür erstellen wir eine neue Textdatei mit der Endung ".avs" und folgendem Inhalt.

Code:
ConvertToYV12(DirectShowSource("V:\Videoalbum\Schweden2003.avi"), interlaced=true)
AssumeBFF()
QTGMC( Preset="Slower", Sharpness=0.4, EdiThreads=4 )

Die erste Zeile öffnet eine Videodatei und wandelt sie in den Farbraum YV12 um. Das ist wichtig, da QTGMC sonst eine Fehlermeldung wegen fehlender Funktionen anzeigt (weitere Plugins würden benötigt). Ihr müsst noch den Pfad für Eure Videodatei ändern.
Die zweite Zeile legt die Halbbildreihenfolge fest. BFF ist Bottom-Field-First und eignet sich für Material von DV-Camcordern. Wenn Ihr analoges Video von einer Capture Card verwendet, dann ändert bitte die Zeile nach "AssumeTFF()". TFF ist Top-Field-First.
Die dritte Zeile ruft QTGMC auf. Dabei können verschiedene Parameter verwendet werden. Mehr Infos stehen unter http://avisynth.nl/index.php/QTGMC. Die Zahl bei EdiThreads sollte auf die halbe Zahl eurer Prozessorkerne eingestellt werden. Sharpness ist auf 0.4 weil QTGMC das Bild standardmäßig zu aggressiv schärft. Standardwert wäre 1.

Speichert die Datei ab, öffnet VirtualDub und wählt "File/Open Video File". Danach sucht Ihr das Skript aus, das Ihr gerade erstellt habt. Wenn Ihr jetzt 2 Kästen mit dem Inhalt eurer Videodatei seht, hat alles funktioniert. Herzlichen Glückwunsch!

vdub.jpg


Vielleicht wollt Ihr jetzt noch wissen, wie man das ganze als Videodatei speichert:

  • Schritt 1 (optional?): Klick auf "Video/Decode Format...". Hier "4:2:0 planar YCbCr (YV12)" wählen.
  • Schritt 2: Klick auf "Video/Compression". Hier euren favorisierten Videocodec auswählen und konfigurieren (Configure Button). Es steht zum Beispiel x264 zur Auswahl (siehe Update im 2. Post). Falls Ihr euer Video später noch in einen anderen Videoeditor laden wollt, empfehle ich das gute alte XVid: https://www.xvid.com/download/. Das sollte mit den meisten Editoren kompatibel sein. Falls ihr XVid nehmt, stellt folgendes ein:
    Profile: unrestricted
    Target quantizer: 1 (2 wenn wenig Festplattenspeicher vorhanden).
  • Schritt 3: "File/Save video..."

Sollte es zu Artefakten oder Sprüngen im Video kommen, fügt den Parameter seekzero in die erste Zeile vom AviSynth Skript ein:
Code:
ConvertToYV12(DirectShowSource("V:\Videoalbum\Schweden2003.avi", seekzero=true), interlaced=true)
Falls das ganze Video flackert, war die Halbbildreihenfolge falsch. In dem Fall die zweite Zeile vom Skript auf "AssumeTFF()" ändern.

Vergleich mit anderen Deinterlacing Methoden:

Hier sind zwei Bilder, die QTMC mit zwei der schnelleren Methoden vergleichen, die häufig in Software Videoplayern zum Einsatz kommen.
  • YADIF versucht beide Felder zu kombinieren und dabei Artefakte zu vermeiden. Die Framerate wird dadurch halbiert.
  • BOB zeigt beide Bilder nacheinander und skaliert die Halbbilder auf volle Größe.
vgl1.jpg


vgl2.jpg


Von links nach rechts: Original, QTGMC, YADIF, BOB.
Wie man sehen kann, erzeugt YADIF pixelige Artefakte, die an Rastergrafik erinnern. Bei BOB sind Treppenartefakte an Kanten am stärksten ausgeprägt.

Ich hoffe, dieses kleine Tutorial war für Euch hilfreich. Viel Spaß beim Bearbeiten Eurer Videos!
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: mdPlusPlus, ph0b0z, KenshiHH und 11 andere
Kleines Update:
Hatte total vergessen, dass die aktuelle Version von VirtualDub auch MP4 Container ausgeben kann. In dem Fall würde ich mir XVid sparen und x264 mit folgenden Einstellungen nehmen.

x264.png

Dann kann man noch auf "Audio/Full processing mode" klicken und dann unter "Audio/Compression" den AAC Codec wählen.

aac.png

Beim Speichern des Videos dann MP4 als Format nehmen ("MP4 +faststart"). Das sollte sich auch in allen gängigen Videoeditoren öffnen lassen.

Update 2:
Habe gerade gesehen, dass AviSynth und QTGMC mit StaxRip mitgeliefert werden. Die Software kannte ich nicht. Wäre eine Alternative: https://github.com/staxrip/staxrip
Update 2b: In Post #8 ist eine Kurzanleitung für Staxrip

Update 3:
Wurde gerade per PM gefragt, was die beste Option ist, wenn man Handbrake verwendet und QTGMC nicht einrichten will. Hier würde ich die Option "Decomb" mit der Voreinstellung "EEDI2 Bob" empfehlen. Beim Video muss dann noch die Bildfrequenz passsend eingestellt werden. Bei 25i müsste da 50BpS stehen. Hier ist ein Vergleich von 2 Handbrake Optionen mit QTGMC. Das Bild ist 2x hochskaliert:

handbrakeVergleich.jpg
EEDI2 ist nah an QTGMC dran, erzeugt aber immer noch leichte Fehler, z.B. sind die horizontalen Linien vom "E" etwas zerfranst. Yadif sieht zwar auf den ersten Blick schärfer aus, diese scheint mir aber durch die Artefakte vorgetäuscht. Das Video wird durch die Artefakte mehr Bitrate brauchen.
 
Zuletzt bearbeitet:
Vielen Dank
ist aber viel Arbeit .
Ich lege die alten Videos mal wieder in die Kiste und warte auf "bessere Zeiten";) -))
 
Ah cool,also das ganze hat bei mir nicht geklappt.Wo ich Handbrake mit allen Deinterlacing getestet hatte,ging alle Deinterlacing Filter nicht.Entweder es zeigte dann kein Bild an,es war BIld und Ton unsyncron,Bild war verzerrt,es zeigte ne Falsche darstellung bei der Bildausgabe oder noch schlimmer,es ruckelte beim wiedergeben höllisch.
Ich habe halt das Problem ich nehme per Humax Icord HD+ Reciver TV aufnahmen auf.Diese Liegen dann am Pc durch das kopieren als BDAV FOrmat bei mir da.Als Video-Stream steht da BVOP.
Ich schneide es bei Videoredo.Dieser gibt dann das Material dann am ende als Mpeg 2 TS aus.Das alles sind Interlacing behaftete als 50 Halbbilder mit 720x576.
Ich nehme dann Xmedia Recode,damit stelle ich dann den libav Deinterlace Filter mit Deinterlace Linear Blending.Zwar wird dann das Bild unscharf,aber wenigstens kein Interlacing mehr und auch kein geruckel.
Zwar schade weil ich halt da die Schärfe beim Umwandeln verliere.Aber gut,das fällt zum glück bei Animes und Filme wie ALarm für Cobra 11 ebenfalls aus dem TV zum glücl nicht so störend aus.
Weil animes ja eh schon einen Comic lock haben.Das verstärkt es ja dann durch das.
Anders konnte ich das leider nicht lösen.Ne Komandozeilen Umwandlung des eigenen WIndows Tools mit dos Fenster ,brachte leider ebenfalls nichts.Er nahm immer das falsche Deinterlacing und so war ich mit den selben Problemen Konfronitert gewesen.

Es war echt nicht leicht mit dieser Schier vielen Deinteracing das richtige zu finden.Ich finde es bescheuert was die TV Industrie einem Nutzer da zumutet.Ich sage ja nichts gegen die 576 aber man könnte es doch wohl hinkriegen da anstatt 50 halbbilder doch mit 25 Vollbildern.Die Bandbreite wird ja wohl dadurch ja auch nicht wirklich ansteigen wie ich finde.Es ist somit also kein Hexenwerk.DIe TV Sender wollen halt blos leider nicht.Weil sie dann angst haben,das sich dann keiner mehr für HD oder Full HD im Tv mehr interessieren würde.Das ist ne Gängelung an den Zuschauern.Kein Wunder das immer weniger Menschen wirklich Fernsehen.Wundert mich somit ja nicht mehr.
 
Wenns höllisch ruckelt, war vielleicht die Halbildreihenfolge falsch. Bei nicht synchronen Audio evtl. falsche Bildrate, die muss je nach Filter manuell auf 25 oder 50 fps gesetzt werden.

Anime und PAL Frequenzen ist furchtbar. Im Original sind die meist 23.976 fps. Wenn man Glück hat wurden die auf 25 fps konvertiert und das Audio angepasst. Hab bei DVDs schon erlebt, dass da stattdessen einmal pro Sekunde ein gemischter Frame eingefügt wurde, z.B bei Cowboy Bebop und Pokémon. Ruckelt dann schön bei Kameraschwenks. Bei den Amis ist's fast noch schlimmer. Da wurden Filme mit 3:2 Pulldown auf 29.97 fps konvertiert.
 
Ja genau das Problem habe ich ja mit z.b Pokemon.Genauso ist es.Bei Sendungen im Fernsehen habe ich das seelbe Problem.Entweder es wird nicht alles geglättet oder wenn doch,dann Flackert das Bild und es wiederholt sich.
Wie kann ich das Problem denn wirklich loswerden.Denn du scheinst dich ja in dieser Hinsicht wirklich gut auszukennen.Ich bin bei sowas echt an verzweifeln.Bei den Serien habe ich es schon aufgeben ne gute Lösung zu finden und bei Sendung bin ich noch immer am Überlegen wie ich das am besten mache.Mir fällt keine gute Lösung ein.Besonders Ersichtlich bei sowas wie Wer wird Millionär oder bei Sendung die ich eigentlich auf Hd aufnehmen wollte,jedoch ausversehen auf SD Qualität aufgenommen hatte.Oder Sowas wie Nachrichtenjournal wo doch manchmal interessante Berichte zu sehen sind.All da wirkt mein Belnding FIlter machtlos dagegen.Aber immer noch besser als diese ganzen Problem beim abspielen durch andere Deinterlacing FIlter.
Wie gesagt,ein guter Rat ist echt wichtig in der Situiation für mich.Wie würdest du das denn an meiner stelle denn am besten Vorgehen?
 
Super beitrag, nutzte QTGMC auch schon lange und bin bis heute begeistert wie gut es doch funktioniert.
 
latiose88 schrieb:
Wie gesagt,ein guter Rat ist echt wichtig in der Situiation für mich.Wie würdest du das denn an meiner stelle denn am besten Vorgehen?

Hab gerade gesehen, dass die Deinterlace Einstellungen in Handbrake Mist sind. Da fehlt eine Option, die Halbbildreihenfolge einzustellen.

Probiers mal mit Staxrip. Das ist sehr einfach zu bedienen. Hier runterladen und entpacken:
https://github.com/staxrip/staxrip/releases

  • Staxrip starten
  • Videodatei links oben in das Feld "Source "ziehen
  • Haken bei QTGMC setzen
  • Links in der Liste mit der rechten Maustaste klicken und "Add->Field->Assume" auswählen. Dann öffnet sich ein Popup mit der Frage BFF oder TFF. Ich würde erst mal TFF probieren.
staxripAssume.png

  • Assume nach oben schieben, so dass es vor QTGMC steht
staxripQTGMC.png

  • Rechts das x265 anklicken und auf x264 ändern
  • Rechts unten auf Next klicken und in dem sich öffnenden Fenster auf Start

Habs gerade mit einer alten MPEG2 Datei probiert. Klappt 1a.

Wenn das Video übelst flackert. Das ganze nochmal wiederholen, aber diesmal bei der Frage BFF wählen.
 
  • Gefällt mir
Reaktionen: JiSiN und Bob.Dig
Hm ,also ich habe es mal getestet.Ich habe es dann weil es ja so lange braucht ja auch dann wo es bei 5 oder so 10 % war,abgebrochen.Das Video Ruckelt und ich höre überhaupt kein Ton,dabei spielt es halt keine Rolle was ich von den beide nsachen auswähle oder muss man es immer zuerst ganz umwandeln ,damit man es abspielen kann?
 
Der müsste schon die Datei fertig kodieren. Nimm zum Testen am besten einen kurzen Clip.
Bei mir kodiert Staxrip eine 720x576i Datei mit QTGMC und x264 mit 300 fps.
 
QTGMC kann man in Staxrip beschleunigen, indem man statt avisynth vaporsynth nimmt, besseres Multithreading.
Clipboard01.png
 
  • Gefällt mir
Reaktionen: JiSiN
Danke für diesen Tipp. Kann die Meldung: "Script exceeded memory limit. Consider raising cache size." eigentlich ignoriert werden?
 
Die Meldung hatte ich noch nie. Wenn kein Fehler passiert, kann man das wohl ignorieren. Auf die Schnelle habe ich folgenden Tipp gefunden:
Code:
core = vs.get_core()
core.max_cache_size = 4000
 
Ich beschäftige mich gerade mit dem Thema, meine alten Hi8 Kassetten, die ich vor langer Zeit digitalisiert habe, zu Deinterlacen. Vielen Dank zunächst für den ausführlichen Beitrag und die gezeigten Beispiele! Mit Yadif konnte ich über ffmpeg schon ein ganz gutes Ergebnis erreichen. Jetzt wollte ich natürlich Vergleichen, wie das ganze unter QTGMC wird. Nach der Anleitung im 1. Beitrag bin ich leider mit einer Fehlermeldung beim laden der .avs Skriptdatei gescheitert. Ich habe es dann weiter mit Staxrip (#8) versucht und leider sind die exportierten Dateien ruckelig, abgeschnitten und der Sound fehlt teilweise komplett, egal ob BFF oder TFF. Gleiches nach der Methode von @Bob.Dig in Beitrag #11. Meine Frage jetzt: kann ich über Staxrip einstellen, dass er z.B. nur die ersten 30 Sekunden rendert um die Einstellungen zu testen? Vielen Dank.
 
@rfcy Ja, in der Preview den gewünschten Bereich markieren. Wichtig bei staxrip, QTGMC explizit per Rechtsklick auswählen, dann fragt es auch ab, ob die Quelle interlaced ist, das dann bestätigen. Wenn die Quelle aber nicht mehr wirklich interlaced ist, zu sehen unter Source, dann hilft auch QTGMC nicht mehr viel.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: rfcy
Vielen Dank! Diesmal hat es (unter AviSynth) funktioniert.

01.jpg


02.jpg
 
  • Gefällt mir
Reaktionen: Bob.Dig
rfcy schrieb:
Mit Yadif konnte ich über ffmpeg schon ein ganz gutes Ergebnis erreichen.
Wenn die Berechnungsdauer zweitrangig ist, würde ich yadif auch mit mcdeint kombinieren. Das Ergebnis ist noch mal ein gutes Stück besser.
 
  • Gefällt mir
Reaktionen: rfcy
Ah interessant , wo kann man bei den ganzen denn noch an Zeit sparen ohne das die Qualität schlechter wird.
 
@latiose88 Die verschiedenen QTGMC durchprobieren. Aber im Ernst, bei diesen Verfahren wird halt Bildmaterial dazugerechnet. Wenn man wirklich eine gute Quali haben will, ist das denke ich alternativlos.

Die andere Möglichkeit wäre noch das Interlacing zu erhalten. Dann macht letztlich der Player das Deinterlacing und das sieht i.d.R. auch nicht schlecht aus. Was man halt nie machen sollte ist das interlacete Material nichtdeinterlacet in progressive umzuwandeln oder einen Deinterlacer nutzen, der 50i zu 25p macht, damit richtet man bleibenden Schaden an. Ziel für hiesiges DVB-Material sollte immer sein 50i zu 50p oder 50i erhalten.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: rfcy
Zurück
Oben