Extrair Frames de Vídeo
Capture quadros de vídeos MP4, WebM e MOV e exporte em JPG, PNG ou WebP. Crie miniaturas e prints com qualidade total online.
Sobre Extrair Frames
Esta ferramenta online permite extrair frames (imagens) de arquivos de vídeo diretamente no seu navegador. Perfeito para criar miniaturas, storyboards ou capturar momentos específicos. Escolha intervalo de extração, contagem de frames ou FPS. Todo o processamento acontece localmente para privacidade completa.
Qual a melhor forma de extrair um quadro específico de um vídeo?
Especifique o tempo exato em segundos (ou HH:MM:SS.mmm) e defina o intervalo de extração como 1 quadro. Por baixo, a ferramenta busca o keyframe anterior mais próximo, decodifica adiante até o tempo alvo e exporta a imagem decodificada. Para extração única frame-accurate, use a API WebCodecs (Chrome 94+) que indexa cada quadro, ou passe ao FFmpeg a opção -ss depois de -i para modo de busca precisa. Se o resultado parecer um quadro diferente do esperado, a fonte provavelmente tem taxa de quadros variável ou reordenação PTS/DTS — converta primeiro para taxa constante. O formato de saída afeta a fidelidade: PNG é sem perdas e melhor para pôsteres/miniaturas; JPEG qualidade 92+ é menor e suficiente; WebP dá 30% melhor compressão que JPEG na mesma qualidade.
Qual formato de saída escolher: PNG, JPEG ou WebP?
PNG (Portable Network Graphics) é sem perdas: cada pixel do quadro decodificado é preservado exatamente. Melhor para miniaturas que você editará, quadros científicos ou forenses, ou capturas que precisem de transparência. Tamanho de arquivo grande (5-10x maior que JPEG). JPEG (ISO/IEC 10918, qualidade 0-100) usa compressão DCT com perdas que descarta detalhes de alta frequência invisíveis para a maioria. Use qualidade 85-95 para miniaturas de alta fidelidade e 70-85 para previews web onde o tamanho importa. WebP (Google, 2010) suporta modos com e sem perdas, dá arquivos cerca de 25-35% menores que JPEG na mesma qualidade visual, suportado por todos os navegadores modernos. AVIF vai além (50% menor) mas codifica mais devagar. Escolha PNG para edição, WebP para entrega web, JPEG para compatibilidade universal.
Como extrair um quadro a cada N segundos para um contact sheet?
Defina o intervalo de extração como N segundos (ou 1/N quadros por segundo). Para um vídeo de 10 minutos a 1 fps, você obtém 600 miniaturas — geralmente boa densidade para um índice visual rápido. Para conteúdo longo (aulas, vigilância), 1 quadro a cada 5 segundos dá 120 miniaturas gerenciáveis a cada 10 minutos. Internamente a ferramenta diz ao FFmpeg algo como -vf fps=1/N que decodifica todo o stream mas só emite quadros na cadência pedida. Para economizar tempo em fontes muito longas, baixe também a resolução (extrair miniaturas de 320 de largura é muito mais rápido que de 1920). Para uma imagem contact sheet de verdade (grade de miniaturas num arquivo), aplique depois o filtro tile do FFmpeg ou use o montage do ImageMagick.
Por que meus quadros extraídos saem borrados ou pixelados?
Várias causas típicas. Primeira, a fonte em si é de baixa resolução ou muito comprimida — extrair de um download YouTube 480p não conjura detalhe 4K. Segunda, você extraiu um P-frame ou B-frame de uma codificação muito comprimida, onde pequenos erros de predição de movimento aparecem nítidos ao ver o quadro isolado; extrair em ou perto de um keyframe (I-frame) costuma dar imagem mais limpa. Terceira, se o vídeo é entrelaçado (comum em transmissões TV antigas e DV), quadros únicos mostram artefatos pente a menos que aplique filtro de desentrelaçamento (yadif ou bwdif do FFmpeg). Quarta, a qualidade JPEG de saída foi muito baixa. Soluções: extraia de fonte de qualidade maior, prefira keyframes, desentrelace se preciso e use PNG ou JPEG qualidade 90+ para a exportação.

Posso extrair cada quadro de um vídeo?
Sim — defina o intervalo igual à taxa de quadros da fonte (fonte 30 fps = 30 quadros por segundo extraídos = cada quadro). Atenção ao espaço em disco: um clipe 30 fps de 1 minuto extraído como PNG a 1080p produz 1800 arquivos de cerca de 2-4 MB cada, totalizando 4-7 GB. Para extração total, JPEG qualidade 95 costuma ser o ponto certo (arquivos muito menores, visualmente indistinguíveis). Casos de uso: rotoscopia, datasets de treinamento de IA, análise stop-motion, revisão forense. Para vídeos muito longos, considere extrair para uma sequência dentro de um único arquivo (TAR ou ZIP) para evitar estresse do sistema de arquivos com milhões de arquivos minúsculos, já que muitos sistemas de arquivos ficam dramaticamente lentos com mais de 100.000 arquivos por diretório.
Qual a diferença entre I-frames, P-frames e B-frames ao extrair?
Codecs modernos armazenam quadros em estrutura GOP (Group of Pictures). I-frames (intra-codificados) são imagens completas independentes — os maiores e de maior qualidade. P-frames (preditos) guardam apenas diferenças com quadros anteriores; reconstruir um exige decodificar tudo desde o I-frame precedente. B-frames (bidirecionais) referenciam passado e futuro, os menores. Para extração, I-frames têm a maior fidelidade por quadro pois não têm erros de predição entre quadros. Para extrair só I-frames (frequentemente os candidatos naturais a miniatura num vídeo), use o filtro -vf "select='eq(pict_type,I)'" no FFmpeg. Isso te dá cerca de um quadro a cada 2-4 segundos para vídeo web, perfeito para marcadores de capítulo ou detecção de mudança de cena.
Como extraio quadros em timestamps exatos sem recodificar?
A extração pura é sempre uma operação de decodificação — não há modo codec-copy para quadros individuais porque é preciso descomprimir para obter dados de pixel. Porém você pode evitar recodificação escolhendo formato de saída sem perdas (PNG, WebP lossless, TIFF) para que os pixels decodificados sejam escritos literalmente. A decodificação em si não perde nada além do que o encode com perdas original já custou. Para extrair em tempos exatos, forneça os timestamps em segundos fracionários e use a API WebCodecs ou FFmpeg com -accurate_seek. Se quiser uma sequência longa de timestamps, escreva-os num arquivo de texto e use o filtro select do FFmpeg com timestamps separados por +, tudo numa única passagem — muito mais rápido que buscar N vezes separadas.
Por que os quadros extraídos não batem perfeitamente com o que vejo ao scrub o vídeo?
Reprodutores suavizam a reprodução pulando o aquecimento do decodificador, usando heurísticas próprias de busca e às vezes compondo motion blur para scrub rápido. Os valores de pixel exatos que você vê ao scrub podem vir de um quadro decodificado parcial ou interpolado. O PNG extraído é o valor real de pixel do quadro decodificado no PTS solicitado. Se a fonte usa B-frames com reordenação, o quadro mostrado em scrub-time t pode na verdade ter número diferente do mais próximo de PTS t. Outras fontes de divergência: diferenças de espaço de cor (reprodutor aplica BT.709 para BT.601, extração não), tone mapping HDR-para-SDR na reprodução, ou arredondamento de decodificação em hardware. Para extração de ground truth, confie no arquivo em vez do reprodutor.
