Ce script Python est un outil polyvalent pour extraire des captures d'écran de haute qualité à partir de vidéos YouTube, de fichiers vidéo locaux ou de toute autre source vidéo à laquelle vous pouvez penser ! Il est particulièrement utile pour préparer des ensembles de données pour des projets d'apprentissage automatique, tels que la formation de Loras ou de points de contrôle, ou simplement pour récupérer l'image parfaite de votre film préféré.
requirements.txt
Clonez ce dépôt :
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
Installez les dépendances requises :
pip install -r requirements.txt
Installez FFmpeg (requis pour l'extraction d'images clés et certains filtres) :
(Facultatif) Installez PyCUDA pour l'accélération GPU :
pip install pycuda>=2022.1
Remarque : PyCUDA nécessite que CUDA soit installé sur votre système. Pour les instructions d'installation, reportez-vous à la documentation PyCUDA.
Syntaxe de base :
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
Où [SOURCE]
peut être soit une URL YouTube, soit un chemin d'accès à un fichier vidéo local.
Remarque : Si vous prévoyez d'utiliser l'accélération GPU (option --use-gpu), assurez-vous que PyCUDA est installé.
Extrayez des images toutes les 5 secondes d'une vidéo YouTube et enregistrez-les dans un dossier personnalisé :
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --output my_awesome_screenshots
C'est aussi simple que ça ! Passons maintenant à toutes les options configurables.
--method {interval,all,keyframes,scene}
: Méthode d'extraction d'image (par défaut : intervalle)--interval INTERVAL
: Intervalle entre les images en secondes (par défaut : 5.0, utilisé uniquement avec la méthode 'interval')--quality QUALITY
: Seuil de qualité pour la sélection des images (0-100, par défaut : 12,0)--blur BLUR
: Seuil de flou pour la sélection d'image (par défaut : 10.0)--detect-watermarks
: Activer la détection de filigrane de base--watermark-threshold THRESHOLD
: Sensibilité de détection du filigrane (0-1, par défaut : 0,8)--max-resolution RESOLUTION
: Résolution maximale pour le téléchargement de vidéos YouTube (par exemple, 720, 1080). Ignoré pour les fichiers locaux.--output OUTPUT
: Nom du dossier de sortie personnalisé--png
: Enregistre les images au format PNG au lieu de JPG--disable-parallel
: Désactive le traitement parallèle des images--use-gpu
: Utiliser l'accélération GPU si disponible--fast-scene
: Utiliser le mode rapide pour la détection de scène (résultats moins précis)--resume
: Reprendre un processus d'extraction interrompu--thumbnail
: Générer un montage miniature des images extraites--verbose
: Activer la journalisation détaillée--dry-run
: Montre ce qui serait fait sans réellement traiter--config CONFIG
: Charger les paramètres depuis un fichier de configuration--gradfun
: appliquez le filtre gradfun pour réduire les bandes de couleur (moins agressif, préserve plus de détails)--deblock
: Appliquer un filtre de déblocage pour réduire les artefacts de compression--deband
: appliquez un filtre de débandage pour réduire les bandes de couleur (plus agressif, meilleur pour les bandes sévères)Extrayez les images clés d'un fichier vidéo local :
python youtube-screenshot-script.py path/to/your/video.mp4 --method keyframes
Utilisez la détection de scène sur une vidéo YouTube avec un dossier de sortie personnalisé :
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --method scene --output my_scene_shots
Extrayez les images toutes les 10 secondes avec un seuil de qualité inférieur et une sortie PNG :
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --interval 10 --quality 30 --png
Utilisez l'accélération GPU et générez un montage miniature :
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
Téléchargez une vidéo YouTube à une résolution maximale de 720p et extrayez les images :
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --max-resolution 720
Extrayez les images avec des filtres de post-traitement :
python youtube-screenshot-script.py path/to/your/video.mp4 --gradfun --deblock --deband
Temps de traitement :
Résolution vidéo :
--max-resolution
pour limiter la qualité du téléchargement si nécessaire.--max-resolution
est ignorée.Sortie : les images sont enregistrées sous forme d'images JPG ou PNG dans le dossier de sortie spécifié (ou un dossier par défaut nommé d'après le titre de la vidéo).
Noms de fichiers de cadres : suivez le format frame_NNNNNN_qXX_bYY[_watermarked].(jpg|png)
, où :
NNNNNN
: Numéro de trameXX
: Score de qualité (0-99, plus c'est élevé, mieux c'est)YY
: score de flou (des nombres plus élevés indiquent moins de flou)_watermarked
: Suffixe ajouté si un filigrane est détectéFiltres de post-traitement :
--dry-run
pour prévisualiser le processus d'extraction sans réellement enregistrer les images.--resume
au cas où le processus serait interrompu.--max-resolution
pour limiter la qualité du téléchargement afin d'accélérer le traitement et d'économiser l'espace de stockage.--quality 30 --blur 50
) et ajustez si nécessaire.--fast-scene
pour des résultats de détection de scène plus rapides (mais moins précis).Aucune image extraite :
--quality 20 --blur 30
).Problèmes d'extraction d'images clés :
Détection de scène extrêmement lente ou crash :
--fast-scene
pour des résultats plus rapides mais moins précis.L'accélération GPU ne fonctionne pas :
pip install pycuda
).--use-gpu
.Détection de filigrane produisant des faux positifs :
--watermark-threshold 0.9
pour une détection plus stricte).--detect-watermarks
.Le processus s'arrête de manière inattendue pour les vidéos volumineuses :
--resume
pour continuer là où elle s'est arrêtée.Sortie de mauvaise qualité ou floue :
Les filtres de post-traitement ne fonctionnent pas :
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.
Les contributions sont les bienvenues ! N'hésitez pas à soumettre une Pull Request.