Este script Python é uma ferramenta versátil para extrair capturas de tela de alta qualidade de vídeos do YouTube, arquivos de vídeo locais ou qualquer outra fonte de vídeo que você possa imaginar! É particularmente útil para preparar conjuntos de dados para projetos de aprendizado de máquina, como treinamento de Loras ou pontos de verificação, ou apenas para capturar aquele quadro perfeito do seu filme favorito.
requirements.txt
Clone este repositório:
git clone https://github.com/EnragedAntelope/youtube-screenshot-extractor.git
cd youtube-screenshot-extractor
Instale as dependências necessárias:
pip install -r requirements.txt
Instale o FFmpeg (necessário para extração de quadros-chave e alguns filtros):
(Opcional) Instale PyCUDA para aceleração de GPU:
pip install pycuda>=2022.1
Nota: PyCUDA requer que CUDA esteja instalado em seu sistema. Para obter instruções de instalação, consulte a documentação do PyCUDA.
Sintaxe básica:
python youtube-screenshot-script.py [SOURCE] [OPTIONS]
Onde [SOURCE]
pode ser um URL do YouTube ou um caminho para um arquivo de vídeo local.
Nota: Se você planeja usar aceleração de GPU (opção --use-gpu), certifique-se de ter o PyCUDA instalado.
Extraia frames a cada 5 segundos de um vídeo do YouTube e salve-os em uma pasta personalizada:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --output my_awesome_screenshots
É muito fácil! Agora vamos mergulhar em todas as opções configuráveis.
--method {interval,all,keyframes,scene}
: Método de extração de quadros (padrão: intervalo)--interval INTERVAL
: Intervalo entre frames em segundos (padrão: 5.0, usado apenas com o método 'interval')--quality QUALITY
: Limite de qualidade para seleção de quadros (0-100, padrão: 12,0)--blur BLUR
: Limite de desfoque para seleção de quadros (padrão: 10.0)--detect-watermarks
: habilita a detecção básica de marca d'água--watermark-threshold THRESHOLD
: Sensibilidade de detecção de marca d'água (0-1, padrão: 0,8)--max-resolution RESOLUTION
: Resolução máxima para download de vídeos do YouTube (por exemplo, 720, 1080). Ignorado para arquivos locais.--output OUTPUT
: nome da pasta de saída personalizada--png
: salva quadros como PNG em vez de JPG--disable-parallel
: Desativa o processamento paralelo de frames--use-gpu
: Use aceleração de GPU, se disponível--fast-scene
: Use o modo rápido para detecção de cena (resultados menos precisos)--resume
: Retoma um processo de extração interrompido--thumbnail
: Gera uma montagem em miniatura dos quadros extraídos--verbose
: Habilita registro detalhado--dry-run
: mostra o que seria feito sem realmente processar--config CONFIG
: carrega configurações de um arquivo de configuração--gradfun
: Aplique o filtro gradfun para reduzir faixas de cores (menos agressivo, preserva mais detalhes)--deblock
: aplica filtro de desbloqueio para reduzir artefatos de compactação--deband
: Aplique filtro de debanding para reduzir faixas de cores (mais agressivo, melhor para faixas severas)Extraia quadros-chave de um arquivo de vídeo local:
python youtube-screenshot-script.py path/to/your/video.mp4 --method keyframes
Use a detecção de cena em um vídeo do YouTube com pasta de saída personalizada:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --method scene --output my_scene_shots
Extraia quadros a cada 10 segundos com limite de qualidade inferior e saída PNG:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --interval 10 --quality 30 --png
Use a aceleração da GPU e gere uma montagem em miniatura:
python youtube-screenshot-script.py path/to/your/video.mp4 --use-gpu --thumbnail
Baixe um vídeo do YouTube com resolução máxima de 720p e extraia os frames:
python youtube-screenshot-script.py https://www.youtube.com/watch?v=dQw4w9WgXcQ --max-resolution 720
Extraia frames com filtros de pós-processamento:
python youtube-screenshot-script.py path/to/your/video.mp4 --gradfun --deblock --deband
Tempo de processamento :
Resolução de vídeo :
--max-resolution
para limitar a qualidade do download, se necessário.--max-resolution
é ignorada.Saída : os quadros são salvos como imagens JPG ou PNG na pasta de saída especificada (ou em uma pasta padrão com o nome do título do vídeo).
Nomes de arquivos de quadros : siga o formato frame_NNNNNN_qXX_bYY[_watermarked].(jpg|png)
, onde:
NNNNNN
: Número do quadroXX
: Índice de qualidade (0-99, quanto maior, melhor)YY
: Pontuação de desfoque (números mais altos indicam menos desfoque)_watermarked
: Sufixo adicionado se uma marca d'água for detectadaFiltros de pós-processamento :
--dry-run
para visualizar o processo de extração sem realmente salvar os quadros.--resume
caso o processo seja interrompido.--max-resolution
para limitar a qualidade do download para um processamento mais rápido e para economizar espaço de armazenamento.--quality 30 --blur 50
) e ajuste conforme necessário.--fast-scene
para resultados de detecção de cena mais rápidos (mas menos precisos).Nenhum quadro extraído :
--quality 20 --blur 30
).Problemas de extração de quadro-chave :
Detecção de cena extremamente lenta ou travando :
--fast-scene
para resultados mais rápidos, mas menos precisos.A aceleração da GPU não funciona :
pip install pycuda
).--use-gpu
.Detecção de marca d'água produzindo falsos positivos :
--watermark-threshold 0.9
para uma detecção mais rigorosa).--detect-watermarks
.O processo morre inesperadamente para vídeos grandes :
--resume
para continuar de onde parou.Saída de baixa qualidade ou desfocada :
Filtros de pós-processamento não funcionam :
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.
Contribuições são bem-vindas! Sinta-se à vontade para enviar uma solicitação pull.