Dieses Python-Skript ist ein vielseitiges Tool zum Extrahieren hochwertiger Screenshots aus YouTube-Videos, lokalen Videodateien oder jeder anderen Videoquelle, die Sie sich vorstellen können! Es ist besonders nützlich für die Vorbereitung von Datensätzen für maschinelle Lernprojekte, wie zum Beispiel das Training von Loras oder Checkpoints, oder einfach für die Aufnahme des perfekten Bildes aus Ihrem Lieblingsfilm.
requirements.txt
aufgeführte AbhängigkeitenKlonen Sie dieses Repository:
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
Installieren Sie die erforderlichen Abhängigkeiten:
pip install -r requirements.txt
Installieren Sie FFmpeg (erforderlich für die Keyframe-Extraktion und einige Filter):
(Optional) Installieren Sie PyCUDA für die GPU-Beschleunigung:
pip install pycuda>=2022.1
Hinweis: Für PyCUDA muss CUDA auf Ihrem System installiert sein. Installationsanweisungen finden Sie in der PyCUDA-Dokumentation.
Grundlegende Syntax:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
Dabei kann [SOURCE]
entweder eine YouTube-URL oder ein Pfad zu einer lokalen Videodatei sein.
Hinweis: Wenn Sie die GPU-Beschleunigung (Option --use-gpu) verwenden möchten, stellen Sie sicher, dass PyCUDA installiert ist.
Extrahieren Sie alle 5 Sekunden Frames aus einem YouTube-Video und speichern Sie sie in einem benutzerdefinierten Ordner:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --output my_awesome_screenshots
So einfach ist das! Lassen Sie uns nun auf alle konfigurierbaren Optionen eingehen.
--method {interval,all,keyframes,scene}
: Frame-Extraktionsmethode (Standard: Intervall)--interval INTERVAL
: Intervall zwischen Frames in Sekunden (Standard: 5.0, wird nur mit der Methode „interval“ verwendet)--quality QUALITY
: Qualitätsschwelle für die Frame-Auswahl (0-100, Standard: 12,0)--blur BLUR
: Unschärfeschwelle für die Bildauswahl (Standard: 10.0)--detect-watermarks
: Grundlegende Wasserzeichenerkennung aktivieren--watermark-threshold THRESHOLD
: Empfindlichkeit der Wasserzeichenerkennung (0-1, Standard: 0,8)--max-resolution RESOLUTION
: Maximale Auflösung für YouTube-Video-Downloads (z. B. 720, 1080). Wird für lokale Dateien ignoriert.--output OUTPUT
: Benutzerdefinierter Name des Ausgabeordners--png
: Frames als PNG statt JPG speichern--disable-parallel
: Deaktiviert die parallele Verarbeitung von Frames--use-gpu
: GPU-Beschleunigung verwenden, falls verfügbar--fast-scene
: Verwenden Sie den Schnellmodus zur Szenenerkennung (weniger genaue Ergebnisse).--resume
: Einen unterbrochenen Extraktionsprozess fortsetzen--thumbnail
: Erstellt eine Miniaturansicht der extrahierten Bilder--verbose
: Detaillierte Protokollierung aktivieren--dry-run
: Zeigt an, was ohne tatsächliche Verarbeitung getan würde--config CONFIG
: Einstellungen aus einer Konfigurationsdatei laden--gradfun
: Gradfun-Filter anwenden, um Farbstreifen zu reduzieren (weniger aggressiv, mehr Details bleiben erhalten)--deblock
: Deblocking-Filter anwenden, um Komprimierungsartefakte zu reduzieren--deband
: Debanding-Filter anwenden, um Farbstreifen zu reduzieren (aggressiver, besser für starke Streifenbildung)Extrahieren Sie Keyframes aus einer lokalen Videodatei:
python youtube-screenshot-script.py path/to/your/video.mp4 --method keyframes
Verwenden Sie die Szenenerkennung für ein YouTube-Video mit benutzerdefiniertem Ausgabeordner:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --method scene --output my_scene_shots
Extrahieren Sie alle 10 Sekunden Frames mit einem niedrigeren Qualitätsschwellenwert und einer PNG-Ausgabe:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --interval 10 --quality 30 --png
Nutzen Sie die GPU-Beschleunigung und erstellen Sie eine Miniaturansicht-Montage:
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
Laden Sie ein YouTube-Video mit einer maximalen Auflösung von 720p herunter und extrahieren Sie Frames:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --max-resolution 720
Extrahieren Sie Frames mit Nachbearbeitungsfiltern:
python youtube-screenshot-script.py path/to/your/video.mp4 --gradfun --deblock --deband
Bearbeitungszeit :
Videoauflösung :
--max-resolution
um die Downloadqualität einzuschränken.--max-resolution
wird ignoriert.Ausgabe : Frames werden als JPG- oder PNG-Bilder im angegebenen Ausgabeordner (oder einem nach dem Videotitel benannten Standardordner) gespeichert.
Frame-Dateinamen : Folgen Sie dem Format frame_NNNNNN_qXX_bYY[_watermarked].(jpg|png)
, wobei:
NNNNNN
: RahmennummerXX
: Qualitätsfaktor (0–99, höher ist besser)YY
: Unschärfewert (höhere Zahlen bedeuten weniger Unschärfe)_watermarked
: Suffix hinzugefügt, wenn ein Wasserzeichen erkannt wirdNachbearbeitungsfilter :
--dry-run
um eine Vorschau des Extraktionsprozesses anzuzeigen, ohne Frames tatsächlich zu speichern.--resume
, falls der Prozess unterbrochen wird.--max-resolution
um die Downloadqualität für eine schnellere Verarbeitung zu begrenzen und Speicherplatz zu sparen.--quality 30 --blur 50
) und passen Sie sie nach Bedarf an.--fast-scene
für schnellere (aber weniger genaue) Szenenerkennungsergebnisse.Keine Frames extrahiert :
--quality 20 --blur 30
).Probleme bei der Keyframe-Extraktion :
Szenenerkennung extrem langsam oder stürzt ab :
--fast-scene
für schnellere, aber ungenauere Ergebnisse.GPU-Beschleunigung funktioniert nicht :
pip install pycuda
).--use-gpu
entfernen.Wasserzeichenerkennung führt zu falsch positiven Ergebnissen :
--watermark-threshold 0.9
für eine strengere Erkennung).--detect-watermarks
entfernen.Bei großen Videos bricht der Prozess unerwartet ab :
--resume
, um dort fortzufahren, wo Sie aufgehört haben.Geringe Qualität oder verschwommene Ausgabe :
Nachbearbeitungsfilter funktionieren nicht :
Dieses Projekt ist unter der MIT-Lizenz lizenziert – Einzelheiten finden Sie in der LIZENZ-Datei.
Beiträge sind willkommen! Bitte senden Sie gerne einen Pull Request.