Guten Abend liebe Foristen,
ich bin Plexer, encode gerne Filme und insbesondere auch ältere Filme mit viel Bildrauschen und möchte Euch zeigen, wie man mit meinem liebsten Denoiser anstatt mit Singlecore-Leistung, mit Multicore-Leistung rendert und so viel performantere Ergebnisse erzielt.
Mir geht es darum, meine aktuell gewonnenen Kenntnisse mitzuteilen und festzuhalten, damit man ggfs. auf diese verweisen kann, bzw. ich sie nicht vergesse.
1. Was ist Temporal Degrain 2?
Temporal Degrain 2 ist erst mal ein Denoiser wie diverse andere Denoiser, basiert allerdings auf AviSynth und ist daher keine kompilierte Binary eines Programms, sondern ein anpassbares Skript. Dass es anpassbar ist, ermöglicht es überhaupt, von Single- auf Multicoreleistung zu "wechseln".
Temporal Degrain 2 ist außerdem eine Weiterentwicklung von Temporal Degrain, wie man auch vermuten kann. Das ursprüngliche Temporal Degrain wurde geschrieben, um das Bildrauschen aus dem Film "300" zu beseitigen. Dabei bietet TDG2 diverse qualitative Verbesserungen, um auch generisch anwendbar zu sein.
2. Wieso Temporal Degrain 2?
Ich schätze das in diesem Abschnitt subjektiv ein: Ich habe diverse Filme vorliegen, welche unter verschiedenen "Problemen" mit Bezug zum Bildrauschen "leiden". TDG2 hat mich von allen getesten Denoisern bisher von Qualität und Dateigröße am meisten überzeugt.
Dagegen sprach immer die extrem niedrige Leistung, da AviSynth-Skripte regulär auf einem CPU-Kern laufen und damit im Zeitalter von Multicore-CPUs enorm Leistung verschenkt wird. Aber dazu später mehr.
3. Wieso Denoising betreiben?
Ich empfehle Denoising aus zwei Gründen:
1. Die Optik:
Ich empfinde Bildrauschen als unangenehm und störend beim anschauen eines Films, auch dies ist wieder subjektiv. Das entrauschte Bild wirkt viel ruhiger und gleichmäßiger.
2. Die Dateigröße:
Dies ist der eigentliche Punkt, weshalb man Denoising erwägen sollte. Selbst moderne Encoder wie h.264/AVC, bzw. h.265/HEVC haben große Probleme, ihre Algorithmen auf verrauschtes Filmmaterial effizient anzuwenden und im schlimmsten Fall ist die Ausgabedatei größer als die Quelldatei. Dann kann man sich die Arbeit sparen.
Fakt ist allerdings, dass aktuelle Filme auf Blu-ray im FullHD- oder gar UltraHD-Format sehr groß ausfallen, z.B. 35, respektive 60 GiB pro Film. Ein Streaming via Plex übers Internet ist damit fast ausgeschlossen, außer man darf sich als Glücklicher mit einer Glasfaserleitung und üppigem Upload bezeichnen. Daher ergibt das Durchlaufen eines Kompressionsalgorithmus schon Sinn, so lassen sich immerhin moderate Dateigrößen erzielen, insofern das Bild ruhig ist und der Algorithmus gut arbeiten kann.
4. Das Programm StaxRip
Ich fasse mich hier kurz, StaxRip ist vereinfacht gesagt, eine mächtige Open Source-Tool-Sammlung von Audio-, Bild- und Videobearbeitungsprogrammen und vereinheitlicht dies in einer GUI.
Der Quellcode und das Programm kann über GitHub heruntergeladen werden: StaxRip
Wenn Ihr das aktuelle Release heruntergeladen habt, müsst Ihr es zunächst entpacken und anschließend die StaxRip.exe öffnen. Danach werdet Ihr gefragt, wo StaxRip seine Konfigurationsdateien hineinschreiben soll, hier empfehle ich die erste Option in der Liste auszuwählen, dies ist der Speicherort der .exe. Danach könnt Ihr noch entscheiden, ob Ihr über Updates informiert werden wollt und dann solltet Ihr dieses Fenster erblicken:
Das sieht erst mal sehr unübersichtlich aus, da man mit vielen Informationen bombardiert wird, wir brauchen aber nur eine Handvoll Einstellungen, der Rest kann für die erste Verwendung vernachlässigt werden.
Folgende Bereiche werden interessant:
Zuerst nehmen wir uns "Apps" vor, bzw. das Untermenü "Manage", welches wir auch auf der initialen Seite mit "F9" aufrufen können
Dort geben wir oben links ins Suchfeld "TemporalDegrain2" ein, so wie im Bild abgebildet und damit öffnet sich die Übersicht der Anwendung. Dort gehen wir dann auf "Launch" im Untermenü und es öffnet sich der Editor von Windows.
Dort müssen wir genau einen Wert anpassen und das machen wir, indem wir folgende Zeile mit Strg + F suchen:
und ändern diese 1 zu einer 2, speichern die Datei und schließen sie wieder.
Dies verbessert schon die Auslastung der CPU und sorgt für eine kleine Leistungssteigerung, aber noch nicht so wie wir es gern hätten.
Wieder im vorherigen Menü angelangt, klickt Ihr einmal auf "Version" und hängt an die vorgegebene Version einfach "-1" an und besstätigt mit "OK".
Damit habt Ihr den ersten Schritt zur besseren Auslastung der CPU bereits getan und Ihr könnt das mit "F9" geöffnete Fenster wieder schließen und könnt Euch wieder dem Hauptfenster widmen.
Nun klickt Ihr oben links auf "File" und dann auf die erste Option im Untermenü "Open Video Source File(s)", welche auch über das Shortcut "Strg + O" direkt erreichbar ist.
Damit öffnet sich folgendes Fenster und Ihr wählt wieder die erste Option des Menüs aus:
Jetzt sucht Ihr Eure zu bearbeitende Film- oder Seriendatei auf dem Rechner und öffnet diese.
StaxRip beginnt jetzt im gleichen Verzeichnis einen Ordner zu erstellen und extrahiert Video- und Tonspur(en) in dedizierte Dateiein, das ist für diesen speziellen Film das Arbeitsverzeichnis. Je nachdem wie schnell Eure Festplatte oder SSD arbeitet und je nachdem wie groß die File ist, kann dies ein paar Momente dauern.
Fertig geladen, sieht das so aus:
Im roten Kästchen erkennt man jetzt alle Details zum geöffneten Filmmaterial, Dauer, Größe, Bitrate, FPS, Codec, Auflösung und diverse Bild- und Videoinformationen.
Direkt darunter befindet sich das Feld "AVS Filters":
Dort findet der eignetliche "Zauber" statt.
Ihr macht über dem Feld "Noise" einen Rechtsklick es öffnet sich dieses Menü:
Dort navigiert Ihr zu TemporalDegrain2 und wählt dieses aus, damit wird es ins Projekt eingebunden, das kann einen kurzen Augenblick dauern.
Wenn dies erfolgreich geklappt hat, erscheint es in der Filterliste mit einem vorangehenden Häkchen und Ihr macht bitte nochmal einen Rechtsklick über dem Bereich "AVS Filters" dann erscheint wieder das Kontextmenü von eben, nur dieses Mal klickt Ihr auf "Edit Code", damit öffnet sich wiederum dieses Fenster:
Hier müsst Ihr genau eine Änderung durchführen, diese betrifft den eingerahmten Bereich. Dort wird die Funktion "TemporalDegrain2" mit default Parametern aufgerufen. Wir packen diesen Funktionsaufruf in folgende AviSynth-Funktionen, sodass die Zeile dann so ausschaut:
ABER ACHTUNG!
An diesem Snippet muss eine individuelle Änderung, je nach Eurer verbauten CPU erfolgen. Und zwar Am Ende wird Prefetch() aufgerufen, diese Funktion übergeben wir die Anzahl der Threads unserer CPU. Mein Desktoprechner hat z.B. den Intel i9 9900K verbaut, dieser hat 8 Cores und 16 Threads, also ersetze ich die 8 durch eine 16.
Ihr klickt dann auf "OK" und bestätigt damit die allerwichtigste Änderung in dieser Anleitung.
Als Letztes empfehle ich Euch die Encoding-Einstellungen zu überarbeiten und nach Eurem Geschmack anzupassen, dies hat den allergrößten Einfluss auf die Filesize, wenn einmal der Grain beseitigt wurde.
Ich versuche mich kurz zu fassen, da die Anleitung schon lang genug ist.
Oben links im eingerahmten Bereich könnt Ihr zwischen den verschiedensten Encodern wählen.
Oben rechts könnt Ihr den Container für Eure Videofile bestimmen.
Unten links könnt Ihr die Encodereinstellungen anpassen, aber ich empfehle nur eine Änderung:
In den Default-Einstellungen sind bei der Farbtiefe 10 Bit vorausgewählt, die meisten Produktionen werden aber nach wie vor in 8 Bit Farbtiefe veröffentlicht, wenn Eurer Material den Zusatz "HDR" hat, könnt Ihr die Option bei 10-Bit belassen.
Bestätigt wieder einmal mit "OK" und Ihr kommt zum Ausgangsfenster zurück.
Damit seid Ihr fast fertig. Jetzt müsst Ihr den Job nur noch zur Warteschlange hinzufügen und diese Starten:
Nun müsstet Ihr im Taskmanager eine tüchtig arbeitende CPU sehen:
Nachwort:
Ich werde allerdings keine Bildvergleiche für den Filter einfügen, da ich mir nicht sicher bin, wie das bei urheberrechtlich geschütztem Material im Forum ausschaut, falls mir ein Forist dies beantworten kann, werde ich diese ggfs. nachreichen.
Falls Ihr außerdem Verbesserungsvorschläge habt, könnt Ihr diese gern äußern. Ich denke dieses Thema ist schon sehr spezifisch, daher wird das allgemeine Interesse eher gering ausfallen, aber da ich noch nirgends im Netz eine Anleitung wie diese gefunden habe, dachte ich mir, ich halte es für alle und für mich einmal fest.
Viele Grüße
ich bin Plexer, encode gerne Filme und insbesondere auch ältere Filme mit viel Bildrauschen und möchte Euch zeigen, wie man mit meinem liebsten Denoiser anstatt mit Singlecore-Leistung, mit Multicore-Leistung rendert und so viel performantere Ergebnisse erzielt.
Mir geht es darum, meine aktuell gewonnenen Kenntnisse mitzuteilen und festzuhalten, damit man ggfs. auf diese verweisen kann, bzw. ich sie nicht vergesse.
1. Was ist Temporal Degrain 2?
Temporal Degrain 2 ist erst mal ein Denoiser wie diverse andere Denoiser, basiert allerdings auf AviSynth und ist daher keine kompilierte Binary eines Programms, sondern ein anpassbares Skript. Dass es anpassbar ist, ermöglicht es überhaupt, von Single- auf Multicoreleistung zu "wechseln".
Temporal Degrain 2 ist außerdem eine Weiterentwicklung von Temporal Degrain, wie man auch vermuten kann. Das ursprüngliche Temporal Degrain wurde geschrieben, um das Bildrauschen aus dem Film "300" zu beseitigen. Dabei bietet TDG2 diverse qualitative Verbesserungen, um auch generisch anwendbar zu sein.
2. Wieso Temporal Degrain 2?
Ich schätze das in diesem Abschnitt subjektiv ein: Ich habe diverse Filme vorliegen, welche unter verschiedenen "Problemen" mit Bezug zum Bildrauschen "leiden". TDG2 hat mich von allen getesten Denoisern bisher von Qualität und Dateigröße am meisten überzeugt.
Dagegen sprach immer die extrem niedrige Leistung, da AviSynth-Skripte regulär auf einem CPU-Kern laufen und damit im Zeitalter von Multicore-CPUs enorm Leistung verschenkt wird. Aber dazu später mehr.
3. Wieso Denoising betreiben?
Ich empfehle Denoising aus zwei Gründen:
1. Die Optik:
Ich empfinde Bildrauschen als unangenehm und störend beim anschauen eines Films, auch dies ist wieder subjektiv. Das entrauschte Bild wirkt viel ruhiger und gleichmäßiger.
2. Die Dateigröße:
Dies ist der eigentliche Punkt, weshalb man Denoising erwägen sollte. Selbst moderne Encoder wie h.264/AVC, bzw. h.265/HEVC haben große Probleme, ihre Algorithmen auf verrauschtes Filmmaterial effizient anzuwenden und im schlimmsten Fall ist die Ausgabedatei größer als die Quelldatei. Dann kann man sich die Arbeit sparen.
Fakt ist allerdings, dass aktuelle Filme auf Blu-ray im FullHD- oder gar UltraHD-Format sehr groß ausfallen, z.B. 35, respektive 60 GiB pro Film. Ein Streaming via Plex übers Internet ist damit fast ausgeschlossen, außer man darf sich als Glücklicher mit einer Glasfaserleitung und üppigem Upload bezeichnen. Daher ergibt das Durchlaufen eines Kompressionsalgorithmus schon Sinn, so lassen sich immerhin moderate Dateigrößen erzielen, insofern das Bild ruhig ist und der Algorithmus gut arbeiten kann.
4. Das Programm StaxRip
Ich fasse mich hier kurz, StaxRip ist vereinfacht gesagt, eine mächtige Open Source-Tool-Sammlung von Audio-, Bild- und Videobearbeitungsprogrammen und vereinheitlicht dies in einer GUI.
Der Quellcode und das Programm kann über GitHub heruntergeladen werden: StaxRip
Wenn Ihr das aktuelle Release heruntergeladen habt, müsst Ihr es zunächst entpacken und anschließend die StaxRip.exe öffnen. Danach werdet Ihr gefragt, wo StaxRip seine Konfigurationsdateien hineinschreiben soll, hier empfehle ich die erste Option in der Liste auszuwählen, dies ist der Speicherort der .exe. Danach könnt Ihr noch entscheiden, ob Ihr über Updates informiert werden wollt und dann solltet Ihr dieses Fenster erblicken:
Das sieht erst mal sehr unübersichtlich aus, da man mit vielen Informationen bombardiert wird, wir brauchen aber nur eine Handvoll Einstellungen, der Rest kann für die erste Verwendung vernachlässigt werden.
Folgende Bereiche werden interessant:
Zuerst nehmen wir uns "Apps" vor, bzw. das Untermenü "Manage", welches wir auch auf der initialen Seite mit "F9" aufrufen können
Dort geben wir oben links ins Suchfeld "TemporalDegrain2" ein, so wie im Bild abgebildet und damit öffnet sich die Übersicht der Anwendung. Dort gehen wir dann auf "Launch" im Untermenü und es öffnet sich der Editor von Windows.
Dort müssen wir genau einen Wert anpassen und das machen wir, indem wir folgende Zeile mit Strg + F suchen:
Code:
fftThreads = default( fftThreads, 1)
Dies verbessert schon die Auslastung der CPU und sorgt für eine kleine Leistungssteigerung, aber noch nicht so wie wir es gern hätten.
Wieder im vorherigen Menü angelangt, klickt Ihr einmal auf "Version" und hängt an die vorgegebene Version einfach "-1" an und besstätigt mit "OK".
Damit habt Ihr den ersten Schritt zur besseren Auslastung der CPU bereits getan und Ihr könnt das mit "F9" geöffnete Fenster wieder schließen und könnt Euch wieder dem Hauptfenster widmen.
Nun klickt Ihr oben links auf "File" und dann auf die erste Option im Untermenü "Open Video Source File(s)", welche auch über das Shortcut "Strg + O" direkt erreichbar ist.
Damit öffnet sich folgendes Fenster und Ihr wählt wieder die erste Option des Menüs aus:
Jetzt sucht Ihr Eure zu bearbeitende Film- oder Seriendatei auf dem Rechner und öffnet diese.
StaxRip beginnt jetzt im gleichen Verzeichnis einen Ordner zu erstellen und extrahiert Video- und Tonspur(en) in dedizierte Dateiein, das ist für diesen speziellen Film das Arbeitsverzeichnis. Je nachdem wie schnell Eure Festplatte oder SSD arbeitet und je nachdem wie groß die File ist, kann dies ein paar Momente dauern.
Fertig geladen, sieht das so aus:
Im roten Kästchen erkennt man jetzt alle Details zum geöffneten Filmmaterial, Dauer, Größe, Bitrate, FPS, Codec, Auflösung und diverse Bild- und Videoinformationen.
Direkt darunter befindet sich das Feld "AVS Filters":
Dort findet der eignetliche "Zauber" statt.
Ihr macht über dem Feld "Noise" einen Rechtsklick es öffnet sich dieses Menü:
Dort navigiert Ihr zu TemporalDegrain2 und wählt dieses aus, damit wird es ins Projekt eingebunden, das kann einen kurzen Augenblick dauern.
Wenn dies erfolgreich geklappt hat, erscheint es in der Filterliste mit einem vorangehenden Häkchen und Ihr macht bitte nochmal einen Rechtsklick über dem Bereich "AVS Filters" dann erscheint wieder das Kontextmenü von eben, nur dieses Mal klickt Ihr auf "Edit Code", damit öffnet sich wiederum dieses Fenster:
Hier müsst Ihr genau eine Änderung durchführen, diese betrifft den eingerahmten Bereich. Dort wird die Funktion "TemporalDegrain2" mit default Parametern aufgerufen. Wir packen diesen Funktionsaufruf in folgende AviSynth-Funktionen, sodass die Zeile dann so ausschaut:
Code:
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE) TemporalDegrain2(degrainTR=2, postFFT=3, postSigma=3) Prefetch(8)
ABER ACHTUNG!
An diesem Snippet muss eine individuelle Änderung, je nach Eurer verbauten CPU erfolgen. Und zwar Am Ende wird Prefetch() aufgerufen, diese Funktion übergeben wir die Anzahl der Threads unserer CPU. Mein Desktoprechner hat z.B. den Intel i9 9900K verbaut, dieser hat 8 Cores und 16 Threads, also ersetze ich die 8 durch eine 16.
Code:
SetFilterMTMode("DEFAULT_MT_MODE", MT_MULTI_INSTANCE) TemporalDegrain2(degrainTR=2, postFFT=3, postSigma=3) Prefetch(16)
Ihr klickt dann auf "OK" und bestätigt damit die allerwichtigste Änderung in dieser Anleitung.
Als Letztes empfehle ich Euch die Encoding-Einstellungen zu überarbeiten und nach Eurem Geschmack anzupassen, dies hat den allergrößten Einfluss auf die Filesize, wenn einmal der Grain beseitigt wurde.
Ich versuche mich kurz zu fassen, da die Anleitung schon lang genug ist.
Oben links im eingerahmten Bereich könnt Ihr zwischen den verschiedensten Encodern wählen.
Oben rechts könnt Ihr den Container für Eure Videofile bestimmen.
Unten links könnt Ihr die Encodereinstellungen anpassen, aber ich empfehle nur eine Änderung:
In den Default-Einstellungen sind bei der Farbtiefe 10 Bit vorausgewählt, die meisten Produktionen werden aber nach wie vor in 8 Bit Farbtiefe veröffentlicht, wenn Eurer Material den Zusatz "HDR" hat, könnt Ihr die Option bei 10-Bit belassen.
Bestätigt wieder einmal mit "OK" und Ihr kommt zum Ausgangsfenster zurück.
Damit seid Ihr fast fertig. Jetzt müsst Ihr den Job nur noch zur Warteschlange hinzufügen und diese Starten:
Nun müsstet Ihr im Taskmanager eine tüchtig arbeitende CPU sehen:
Nachwort:
Ich werde allerdings keine Bildvergleiche für den Filter einfügen, da ich mir nicht sicher bin, wie das bei urheberrechtlich geschütztem Material im Forum ausschaut, falls mir ein Forist dies beantworten kann, werde ich diese ggfs. nachreichen.
Falls Ihr außerdem Verbesserungsvorschläge habt, könnt Ihr diese gern äußern. Ich denke dieses Thema ist schon sehr spezifisch, daher wird das allgemeine Interesse eher gering ausfallen, aber da ich noch nirgends im Netz eine Anleitung wie diese gefunden habe, dachte ich mir, ich halte es für alle und für mich einmal fest.
Viele Grüße
Anhänge
Zuletzt bearbeitet: