Análise de vídeo — o que é visto, o que é dito
Você não tem entrada direta de vídeo ou áudio. Você lê imagens extraídas do vídeo e uma transcrição do seu áudio. Tudo abaixo transforma um vídeo nessas duas coisas e depois informa como lê-las sem fazer afirmações exageradas.
Onde as coisas vão — regra rígida do proprietário
Todo o material extraído vai para uma única pasta de trabalho ao lado do vídeo:
<pasta do vídeo>\<nome do vídeo>.analysis\ — nunca para uma área de trabalho temporária, um diretório temporário ou o projeto.
O proprietário a exclui quando o trabalho naquele vídeo termina, para recuperar espaço em disco.
Nunca a exclua você mesmo. Se for solicitado a limpar, use a skill trash exatamente nessa pasta
(Lixeira, nunca rm). Sua análise escrita (o resultado final) pertence onde o projeto quiser,
não dentro da pasta .analysis, para que excluí-la não perca nada de valor.
1. Ferramentas (uma vez por máquina)
python ~/.claude/skills/video-analysis/scripts/setup_tools.py --check # verificar
python ~/.claude/skills/video-analysis/scripts/setup_tools.py # instalar o que falta
Instala com pip --user: imageio-ffmpeg (um binário ffmpeg empacotado — sem ffmpeg do sistema, sem administrador,
sem winget/choco), Pillow, numpy, faster-whisper, e armazena em cache o modelo Whisper small (o
único acesso à rede; depois disso tudo é offline). Código de saída 0 = PRONTO.
Teste automático (vídeo sintético, 9 verificações, --full adiciona Whisper):
python ~/.claude/skills/video-analysis/scripts/selftest.py
2. Extrair
python ~/.claude/skills/video-analysis/scripts/extract_video.py "<caminho do vídeo>" --language pt
Execute em segundo plano para vídeos com mais de alguns minutos: a transcrição roda ~5x mais rápido
que o tempo real na CPU (um vídeo de 15 min leva ~3 min). Opções: --interval 5 (segundos entre
quadros; use 2 para movimentos rápidos na tela, 10-15 para cabeças falantes), --model small (medium = melhor,
3x mais lento), --skip-frames, --skip-transcript, --at HH:MM:SS[.mmm] (repetível, quadro em resolução
completa em um instante exato — usado na etapa 3d).
Produz em <vídeo>.analysis\: frames\ (a cada intervalo), sheets\ (folhas de contato 3x3, cada
imagem carimbada com mm:ss em amarelo), keyframes.txt + keysheets\ (apenas quadros que mudaram visivelmente —
as mudanças de slide/tela), audio.wav, transcript.txt ([mm:ss] texto) + transcript.json,
at\, manifest.json. Reexecutar retoma e pula estágios concluídos; parâmetros alterados ou um
vídeo diferente são recusados (código de saída 3) em vez de misturar saídas. Código de saída 1 = falha de processamento,
2 = entrada inválida.
3. Ler — nesta ordem
a. A transcrição completa primeiro (transcript.txt). Em cursos e demonstrações, o conteúdo decisivo
(números, regras, exceções, o método real) está muito frequentemente na voz, não na tela.
b. As folhas de quadros-chave (keysheets\) para ver cada slide/tela distinta uma vez.
c. As folhas de contato (sheets\) — todas elas, em ordem, para acompanhar o que se move entre quadros-chave
(cursor, desenhos, gráficos sendo atualizados).
d. Amplie onde a fala aponta: quando o palestrante diz "aqui", "esta vela", "olhe para…",
reexecute com --at <carimbo de data/hora> e as mesmas opções da primeira execução (caso contrário, a verificação do manifesto
recusa com código de saída 3), depois leia esse quadro em resolução completa. As folhas têm 640 px por célula —
muito pequenas para rótulos de gráficos ou texto pequeno.
e. Escreva a análise (etapa 4).
4. Relatório — mantenha três coisas separadas
Para cada trecho, cite carimbos de data/hora e classifique cada afirmação como um dos seguintes:
- NA TELA — o que uma imagem realmente mostra (texto do slide, gráfico, anotação, interface).
- DITO — o que a voz afirma (citação ou paráfrase próxima, com
[mm:ss]). - INFERÊNCIA — sua interpretação ligando os dois. Nunca a apresente como visto ou dito.
Inclua sempre:
- as lacunas entre o que está escrito e o que é dito (ex.: um slide diz uma coisa e a voz adiciona a regra que realmente importa, ou a contradiz);
- o que é mostrado apenas uma vez (um único exemplo demonstrado é uma ilustração, não evidência);
- limites: os quadros são amostrados a cada N s e podem perder eventos breves; o carimbo de um quadro é seu índice × intervalo, portanto é aproximado (± meio intervalo, mais em gravações com taxa de quadros variável); a deduplicação de quadros-chave pode ocultar pequenas edições; o Whisper escreve nomes e jargões incorretamente (verifique com as imagens); sem leitura confiável de tom, emoção, música, identidade do falante ou movimento.
5. Depois
Informe ao usuário o caminho da pasta de trabalho e seu tamanho (impresso ao final da extração). Deixe-a
no lugar até que ele diga que o trabalho no vídeo terminou; então jogue-a na lixeira com a skill trash.
Armadilhas conhecidas (já tratadas pelos scripts)
faster_whispermodel.transcribe("<caminho>")levantaTypeError: open() got an unexpected keyword argument 'metadata_errors'com PyAV recente. O script extrai um WAV PCM16 mono de 16 kHz com ffmpeg e passa um array float32.imageio-ffmpegfornece ffmpeg, mas não ffprobe: duração e presença de áudio são lidos do banner do próprio ffmpeg.- Detecção de cena via
select='gt(scene,N)'+showinfonão imprime nada com-loglevel error; quadros-chave usam diferenças de thumbnail.