Communitygithub.com

Análise de Vídeo

Analisa um arquivo de vídeo local — o que é VISTO (quadros amostrados, folhas de contato, mudanças de slide, quadros em instantes exatos) e o que é DITO (transcrição offline com carimbo de data/hora) — e descreve ambos com referência cruzada por carimbo de data/hora. Útil quando o usuário pede para assistir, ler, analisar, resumir ou extrair regras de um vídeo / mp4 / mkv / gravação de tela / curso / webinar. Funciona totalmente offline no Windows sem ffmpeg do sistema.

O que é Análise de Vídeo?

Esta skill permite que um agente de IA analise vídeos locais (como gravações de tela, cursos, webinars, arquivos MP4/MKV) separando o que é mostrado visualmente do que é dito no áudio, e cruzando essas informações por carimbo de data/hora. Ela é útil para desenvolvedores e usuários que precisam extrair regras, resumos ou transcrições detalhadas de vídeos sem depender de serviços em nuvem ou instalação global de ffmpeg. A skill funciona em Windows, macOS e Linux, e extrai quadros em intervalos configuráveis, gera folhas de contato, detecta mudanças de slide, produz transcrições offline usando Whisper (modelo small/medium) e permite capturar quadros em resolução total em instantes exatos. Todo o material extraído é organizado em uma pasta `.analysis` ao lado do vídeo, que pode ser descartada quando o trabalho terminar. A análise final deve distinguir claramente entre 'na tela', 'dito' e 'inferência', citando sempre os carimbos de data/hora para manter a precisão.

Funciona com✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/alfibano/video-analysis/tree/HEAD/video-analysis

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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_whisper model.transcribe("<caminho>") levanta TypeError: 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-ffmpeg fornece 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)' + showinfo não imprime nada com -loglevel error; quadros-chave usam diferenças de thumbnail.

Habilidades Relacionadas