¡Este script de Python es una herramienta versátil para extraer capturas de pantalla de alta calidad de videos de YouTube, archivos de video locales o cualquier otra fuente de video que se te ocurra! Es particularmente útil para preparar conjuntos de datos para proyectos de aprendizaje automático, como entrenar Loras o puntos de control, o simplemente para capturar el fotograma perfecto de su película favorita.
requirements.txt
Clona este repositorio:
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
Instale las dependencias requeridas:
pip install -r requirements.txt
Instale FFmpeg (requerido para la extracción de fotogramas clave y algunos filtros):
(Opcional) Instale PyCUDA para la aceleración de GPU:
pip install pycuda>=2022.1
Nota: PyCUDA requiere que CUDA esté instalado en su sistema. Para obtener instrucciones de instalación, consulte la documentación de PyCUDA.
Sintaxis básica:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
Donde [SOURCE]
puede ser una URL de YouTube o una ruta a un archivo de video local.
Nota: Si planea utilizar la aceleración de GPU (opción --use-gpu), asegúrese de tener PyCUDA instalado.
Extraiga fotogramas cada 5 segundos de un vídeo de YouTube y guárdelos en una carpeta personalizada:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --output my_awesome_screenshots
¡Es así de fácil! Ahora profundicemos en todas las opciones configurables.
--method {interval,all,keyframes,scene}
: método de extracción de fotogramas (predeterminado: intervalo)--interval INTERVAL
: Intervalo entre cuadros en segundos (predeterminado: 5.0, solo se usa con el método 'intervalo')--quality QUALITY
: Umbral de calidad para la selección de fotogramas (0-100, predeterminado: 12,0)--blur BLUR
: Umbral de desenfoque para la selección de cuadros (predeterminado: 10.0)--detect-watermarks
: habilita la detección básica de marcas de agua--watermark-threshold THRESHOLD
: Sensibilidad de detección de marca de agua (0-1, predeterminado: 0,8)--max-resolution RESOLUTION
: Resolución máxima para descarga de videos de YouTube (por ejemplo, 720, 1080). Ignorado para archivos locales.--output OUTPUT
: Nombre de carpeta de salida personalizada--png
: guarda marcos como PNG en lugar de JPG--disable-parallel
: deshabilita el procesamiento paralelo de fotogramas--use-gpu
: usa la aceleración de GPU si está disponible--fast-scene
: utiliza el modo rápido para la detección de escenas (resultados menos precisos)--resume
: reanuda un proceso de extracción interrumpido--thumbnail
: genera un montaje en miniatura de los fotogramas extraídos.--verbose
: habilita el registro detallado--dry-run
: muestra lo que se haría sin procesar realmente--config CONFIG
: carga la configuración desde un archivo de configuración--gradfun
: aplica el filtro gradfun para reducir las bandas de color (menos agresivo, conserva más detalles)--deblock
: aplica un filtro de desbloqueo para reducir los artefactos de compresión--deband
: aplica un filtro de eliminación de bandas para reducir las bandas de color (más agresivo, mejor para bandas severas)Extraiga fotogramas clave de un archivo de vídeo local:
python youtube-screenshot-script.py path/to/your/video.mp4 --method keyframes
Utilice la detección de escenas en un vídeo de YouTube con una carpeta de salida personalizada:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --method scene --output my_scene_shots
Extraiga fotogramas cada 10 segundos con un umbral de calidad más bajo y salida PNG:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --interval 10 --quality 30 --png
Utilice la aceleración de GPU y genere un montaje en miniatura:
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
Descarga un vídeo de YouTube a una resolución máxima de 720p y extrae fotogramas:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --max-resolution 720
Extraiga fotogramas con filtros de posprocesamiento:
python youtube-screenshot-script.py path/to/your/video.mp4 --gradfun --deblock --deband
Tiempo de procesamiento :
Resolución de vídeo :
--max-resolution
para limitar la calidad de la descarga si es necesario.--max-resolution
.Salida : los fotogramas se guardan como imágenes JPG o PNG en la carpeta de salida especificada (o en una carpeta predeterminada con el nombre del título del vídeo).
Nombres de archivos de cuadros : siga el formato frame_NNNNNN_qXX_bYY[_watermarked].(jpg|png)
, donde:
NNNNNN
: Número de fotogramaXX
: Puntuación de calidad (0-99, cuanto más alto, mejor)YY
: puntuación de desenfoque (los números más altos indican menos desenfoque)_watermarked
: sufijo agregado si se detecta una marca de aguaFiltros de posprocesamiento :
--dry-run
para obtener una vista previa del proceso de extracción sin guardar fotogramas.--resume
en caso de que se interrumpa el proceso.--max-resolution
para limitar la calidad de la descarga para un procesamiento más rápido y conservar espacio de almacenamiento.--quality 30 --blur 50
) y ajústelos según sea necesario.--fast-scene
para obtener resultados de detección de escenas más rápidos (pero menos precisos).No se extrajeron fotogramas :
--quality 20 --blur 30
).Problemas de extracción de fotogramas clave :
Detección de escena extremadamente lenta o falla :
--fast-scene
para obtener resultados más rápidos pero menos precisos.La aceleración de GPU no funciona :
pip install pycuda
).--use-gpu
.Detección de marcas de agua que producen falsos positivos :
--watermark-threshold 0.9
para una detección más estricta).--detect-watermarks
.El proceso muere inesperadamente para videos grandes :
--resume
para continuar desde donde lo dejó.Salida borrosa o de baja calidad :
Los filtros de posprocesamiento no funcionan :
Este proyecto tiene la licencia MIT; consulte el archivo de LICENCIA para obtener más detalles.
¡Las contribuciones son bienvenidas! No dude en enviar una solicitud de extracción.