criado repositório jhonny-editor no Gitea adicionado script admin/deploy.command com commit automático atualizado admin/DEV-NOTES.md com template limpo Resumo: - 48 arquivos alterados - 26 novos - 19 modificados - 3 removidos 22 files changed, 658 insertions(+), 568 deletions(-) Arquivos: - AGENTS.md - admin/DEV-NOTES.md - admin/OpenCut.command - admin/commit.command - admin/deploy.command - admin/update.command - code/cep-plugin/index.html - code/cep-plugin/main.js - code/cep-plugin/styles.css - code/engine/ARQUITETURA.md - code/engine/arquitetura/README.md - code/engine/gerar_relatorio_timeline.py - code/engine/integracoes/apple_speech/apple_speech_transcriber.swift - code/engine/integracoes/apple_speech/provider_de_transcricao_apple.py - code/engine/integracoes/midia/__init__.py - code/engine/integracoes/whisper/provider_de_transcricao_local.py - code/engine/scanner/__init__.py - code/engine/scanner/coordenacao/__init__.py - code/engine/scanner/descoberta/__init__.py - code/engine/scanner/modelos.py - code/engine/scanner/transcricao_da_timeline.py - code/src/tools/discovery.ts - :memory:.ses - admin/Jhonny.command - admin/inativos/OpenCut.command - admin/inativos/update.command - code/docs/glossario-analise-emocional.md - code/docs/levantamento-apple-vision-e-apple-intelligence.md - code/docs/levantamento-ferramentas-analise-visual-local.md - code/engine/arquitetura/biblioteca-inteligente-de-videos.md - code/engine/executar_scanner.py - code/engine/integracoes/huggingface/ - code/engine/integracoes/midia/extracao_de_metadados.py - code/engine/integracoes/visual/ - code/engine/requirements-visual.txt - code/engine/scanner/configuracao_visual.py - code/engine/scanner/descoberta/descoberta_de_arquivos.py - code/engine/scanner/metadados.py - code/engine/scanner/relatorio_visual.py - code/engine/scanner/retakes/ - code/engine/scanner/visual.py - code/engine/testes/test_analise_visual_local.py - code/engine/testes/test_arquivos_e_metadados.py - code/engine/testes/test_provider_de_transcricao_apple.py - code/relatorios/analise-brools/ - code/relatorios/analise-visual/ - code/relatorios/audio/arquivos/ - code/relatorios/transcricao-timeline.md
16 KiB
Instrução de Arquitetura da Engine
Este documento define o papel de cada classe, suas responsabilidades e o que ela não deve fazer.
Estrutura do módulo scanner
O módulo scanner será responsável por analisar uma timeline completa antes que qualquer decisão de edição seja tomada.
Ele deverá apenas descobrir, processar, organizar e salvar informações sobre o material audiovisual.
O scanner não deverá decidir quais trechos serão cortados, nem aplicar cortes na timeline. Essas responsabilidades pertencem aos módulos posteriores, como o motor de decisão, o gerador de plano e o aplicador.
scanner/
├── coordenacao/
├── descoberta/
├── metadados/
├── audio/
├── transcricao/
├── visual/
├── cenas/
├── eventos/
├── retakes/
└── persistencia/
1. Submódulo coordenacao
O submódulo coordenacao será responsável por organizar a execução do scanner.
Ele não fará a análise técnica dos vídeos. Sua função será controlar o fluxo, compartilhar o contexto e garantir que as análises sejam executadas na ordem correta.
AnalisadorDeTimeline
Papel
Será a classe principal de entrada do scanner.
Ela receberá uma timeline ou uma representação dela e iniciará o processo completo de análise.
Responsabilidades
- Receber a timeline que será analisada.
- Criar o contexto inicial da análise.
- Montar ou receber o pipeline de análises.
- Iniciar a execução do pipeline.
- Retornar o resultado completo da análise.
- Informar o status geral do processo.
- Tratar erros gerais de execução.
- Permitir que a análise seja iniciada, interrompida ou retomada futuramente.
Não deve fazer
- Extrair áudio diretamente.
- Transcrever vídeos.
- Detectar cenas.
- Analisar imagens.
- Detectar retakes.
- Decidir cortes.
- Alterar a timeline original.
PipelineDoScanner
Papel
Será responsável por executar as análises na ordem definida.
Ele funcionará como o controlador do fluxo interno do scanner.
Responsabilidades
- Receber uma lista de componentes de análise.
- Executar cada componente na ordem correta.
- Entregar o mesmo contexto para a próxima análise.
- Registrar quais análises já foram executadas.
- Permitir execução parcial ou completa.
- Identificar falhas em etapas específicas.
- Permitir que determinadas análises sejam opcionais.
- Permitir futuramente execução paralela quando não houver dependências entre as análises.
Exemplo de ordem
Descoberta da timeline
↓
Descoberta de clipes
↓
Extração de metadados
↓
Extração de áudio
↓
Transcrição
↓
Análise visual
↓
Detecção de cenas
↓
Detecção de eventos
↓
Detecção de retakes
↓
Persistência
Não deve fazer
- Implementar algoritmos de análise.
- Conhecer detalhes do Whisper, OpenCV, FFmpeg ou outros providers.
- Fazer chamadas diretas para APIs de IA.
- Tomar decisões de edição.
ContextoDeAnalise
Papel
Será o objeto que transportará todos os dados durante o processo de análise.
Ele funcionará como um estado compartilhado entre as classes do scanner.
Responsabilidades
- Armazenar a timeline analisada.
- Armazenar sequências, faixas e clipes.
- Armazenar caminhos dos arquivos.
- Armazenar metadados técnicos.
- Armazenar áudios extraídos.
- Armazenar transcrições.
- Armazenar quadros extraídos.
- Armazenar cenas detectadas.
- Armazenar eventos encontrados.
- Armazenar possíveis retakes.
- Armazenar avisos, erros e status.
- Armazenar informações de execução.
- Permitir que os resultados sejam serializados.
Não deve fazer
- Executar análises.
- Chamar providers diretamente.
- Decidir cortes.
- Alterar a timeline no editor.
2. Submódulo descoberta
O submódulo descoberta será responsável por identificar o que existe na timeline e onde os arquivos estão localizados.
DescobertaDaTimeline
Papel
Será responsável por descobrir a estrutura lógica da timeline.
Responsabilidades
- Identificar a sequência ativa.
- Identificar outras sequências, quando necessário.
- Identificar as faixas de vídeo.
- Identificar as faixas de áudio.
- Identificar os clipes presentes em cada faixa.
- Identificar a ordem dos clipes.
- Identificar o posicionamento temporal dos clipes.
- Identificar os vínculos entre áudio e vídeo.
- Identificar transições e elementos existentes.
- Identificar clipes desativados ou ocultos.
- Criar uma representação interna da timeline.
Não deve fazer
- Analisar o conteúdo visual.
- Transcrever o áudio.
- Detectar retakes.
- Decidir se um clipe será mantido ou removido.
DescobertaDeClipes
Papel
Será responsável por transformar os elementos encontrados na timeline em objetos de clipe que possam ser analisados pelo sistema.
Responsabilidades
- Criar uma representação individual para cada clipe.
- Registrar o identificador do clipe.
- Registrar a faixa em que o clipe está.
- Registrar o tempo de início e fim na timeline.
- Registrar o tempo de início e fim no arquivo original.
- Registrar a duração.
- Registrar a posição relativa.
- Registrar vínculos com outros clipes.
- Identificar clipes de vídeo, áudio, imagens ou outros tipos de mídia.
Não deve fazer
- Analisar o conteúdo do clipe.
- Gerar transcrição.
- Detectar cenas.
- Alterar a posição do clipe.
DescobertaDeArquivos
Papel
Será responsável por localizar os arquivos físicos relacionados aos clipes.
Responsabilidades
- Resolver o caminho original do arquivo.
- Verificar se o arquivo existe.
- Identificar arquivos offline.
- Identificar arquivos duplicados.
- Identificar arquivos substituídos ou relinkados.
- Normalizar caminhos.
- Registrar permissões de acesso.
- Identificar o tipo de mídia.
- Preparar os arquivos para os providers.
Não deve fazer
- Extrair metadados detalhados.
- Transcrever áudio.
- Analisar imagens.
- Corrigir automaticamente arquivos ausentes sem autorização.
3. Submódulo metadados
ExtracaoDeMetadados
Papel
Será responsável por extrair informações técnicas dos arquivos de mídia.
Responsabilidades
- Identificar resolução.
- Identificar largura e altura.
- Identificar taxa de quadros.
- Identificar duração.
- Identificar codec de vídeo.
- Identificar codec de áudio.
- Identificar quantidade de canais.
- Identificar taxa de amostragem.
- Identificar profundidade de bits.
- Identificar orientação.
- Identificar timecode.
- Identificar tamanho do arquivo.
- Identificar formato do contêiner.
- Identificar informações de gravação, quando disponíveis.
- Registrar erros de leitura.
Não deve fazer
- Avaliar se a imagem está boa.
- Avaliar se o áudio está ruim.
- Detectar retakes.
- Decidir quais arquivos serão usados na edição.
4. Submódulo audio
ExtracaoDeAudio
Papel
Será responsável por preparar o áudio dos vídeos para as demais análises.
Responsabilidades
- Extrair o áudio dos arquivos de vídeo.
- Gerar arquivos temporários ou intermediários.
- Normalizar o formato de áudio quando necessário.
- Definir taxa de amostragem adequada.
- Separar canais quando necessário.
- Associar o áudio extraído ao clipe original.
- Registrar o caminho do áudio gerado.
- Evitar extrações repetidas.
- Controlar arquivos temporários.
- Validar se o áudio foi extraído corretamente.
Não deve fazer
- Transcrever o áudio.
- Avaliar o conteúdo da fala.
- Decidir se há um retake.
- Alterar o áudio da timeline.
AnaliseDeAudio
Papel
Será responsável por analisar tecnicamente e temporalmente o áudio.
Responsabilidades
- Detectar silêncio.
- Detectar pausas.
- Medir volume.
- Medir energia sonora.
- Identificar picos de áudio.
- Identificar possíveis distorções.
- Identificar ruído.
- Identificar clipping.
- Identificar trechos com baixa inteligibilidade.
- Identificar início e fim de fala.
- Identificar sobreposição de vozes, quando possível.
- Produzir marcadores temporais de eventos sonoros.
Não deve fazer
- Transcrever o áudio.
- Decidir automaticamente quais trechos serão cortados.
- Substituir a análise de conteúdo feita pela transcrição.
5. Submódulo transcricao
TranscricaoDeAudio
Papel
Será responsável por transformar o áudio em texto sincronizado com o tempo do vídeo.
Responsabilidades
- Enviar o áudio para o provider de transcrição.
- Receber segmentos transcritos.
- Registrar texto, início e fim de cada segmento.
- Registrar palavras individuais, quando disponíveis.
- Registrar nível de confiança.
- Identificar locutores, quando suportado.
- Associar a transcrição ao clipe correto.
- Detectar falhas de transcrição.
- Permitir transcrição parcial.
- Reaproveitar transcrições já existentes.
- Preservar a sincronização temporal.
Não deve fazer
- Decidir se uma fala deve ser cortada.
- Interpretar sozinho se o trecho é um retake.
- Alterar a timeline.
- Implementar diretamente o modelo de transcrição.
O modelo utilizado deverá ficar no módulo providers/transcricao/.
6. Submódulo visual
Regra de acesso ao Premiere
Sempre que o Scanner precisar acessar a timeline, a sequência ativa, as faixas
ou os clipes, deve utilizar AcessoAoEditor em
engine.integracoes.premiere.leitura. Essa classe já encapsula o cliente MCP e
é a única porta de leitura do Premiere para o Engine.
O submódulo visual recebe uma Timeline de domínio pelo
ContextoDeAnalise; seus adapters não devem chamar o MCP, o CEP ou o UXP
diretamente. Em testes, injete uma timeline pronta ou um fake de
AcessoAoEditor na etapa de descoberta.
ExtracaoDeQuadros
Papel
Será responsável por selecionar e extrair quadros representativos dos vídeos.
Responsabilidades
- Extrair o primeiro quadro.
- Extrair o quadro central.
- Extrair o último quadro.
- Extrair quadros em intervalos regulares.
- Extrair quadros próximos a eventos.
- Extrair quadros próximos a mudanças de cena.
- Redimensionar imagens para análise.
- Evitar extrações duplicadas.
- Associar cada quadro ao tempo exato do vídeo.
- Armazenar os quadros temporariamente ou em cache.
Não deve fazer
- Interpretar o conteúdo da imagem.
- Classificar a qualidade visual.
- Detectar retakes.
- Escolher o melhor quadro para a edição.
AnaliseVisual
Papel
Será responsável por coordenar a interpretação do conteúdo visual dos quadros e dos vídeos.
Responsabilidades
- Analisar enquadramento.
- Identificar objetos.
- Identificar pessoas.
- Identificar rostos, quando permitido e necessário.
- Avaliar foco.
- Avaliar exposição.
- Avaliar estabilidade.
- Identificar movimentos de câmera.
- Identificar mudanças de composição.
- Descrever o conteúdo visual.
- Comparar quadros.
- Gerar características visuais que possam ser utilizadas na detecção de cenas e retakes.
Não deve fazer
- Detectar cortes diretamente, salvo quando isso fizer parte do provider visual.
- Decidir quais tomadas serão utilizadas.
- Alterar o vídeo.
- Implementar diretamente os modelos de visão.
7. Submódulo cenas
DeteccaoDeCenas
Papel
Será responsável por identificar mudanças de cena e possíveis limites entre tomadas.
Responsabilidades
- Detectar cortes abruptos.
- Detectar transições.
- Detectar mudanças graduais.
- Identificar possíveis inícios e finais de tomadas.
- Combinar resultados de diferentes providers.
- Comparar mudanças visuais entre quadros.
- Utilizar informações de áudio quando necessário.
- Registrar o tempo de cada cena.
- Registrar o nível de confiança.
- Identificar cenas semelhantes.
- Evitar duplicidade entre resultados de providers.
Não deve fazer
- Decidir qual cena será utilizada na edição.
- Excluir clipes.
- Aplicar cortes.
- Depender de apenas uma ferramenta específica.
A classe deverá trabalhar com contratos de providers, por exemplo:
DeteccaoDeCenas
↓
ProviderDeDeteccaoDeCenas
├── ProviderPySceneDetect
├── ProviderOpenCV
└── ProviderModeloDeIA
8. Submódulo eventos
DeteccaoDeEventos
Papel
Será responsável por identificar acontecimentos relevantes dentro dos clipes.
Responsabilidades
- Identificar início de fala.
- Identificar fim de fala.
- Identificar pausas.
- Identificar silêncio.
- Identificar risadas.
- Identificar tosse.
- Identificar interrupções.
- Identificar erros de fala.
- Identificar mudanças de assunto.
- Identificar entrada ou saída de pessoas.
- Identificar alterações importantes de imagem.
- Identificar problemas técnicos.
- Registrar cada evento com início, fim e confiança.
Não deve fazer
- Decidir automaticamente o corte.
- Remover eventos.
- Alterar a timeline.
- Confundir evento detectado com decisão de edição.
O evento será apenas uma informação para o motor de decisão utilizar posteriormente.
9. Submódulo retakes
DeteccaoDeRetakes
Papel
Será responsável por identificar possíveis repetições ou versões alternativas de uma mesma gravação.
Responsabilidades
- Comparar transcrições.
- Comparar características visuais.
- Comparar áudio.
- Comparar duração.
- Comparar sequência de falas.
- Comparar enquadramento.
- Identificar tomadas próximas temporalmente.
- Identificar grupos de tomadas semelhantes.
- Identificar possíveis erros repetidos.
- Identificar versões alternativas da mesma fala.
- Calcular nível de similaridade.
- Registrar evidências que justificam a possibilidade de retake.
- Classificar o resultado como possível, provável ou confirmado, quando houver evidências suficientes.
Não deve fazer
- Decidir qual retake será utilizado.
- Excluir automaticamente uma tomada.
- Aplicar cortes.
- Considerar apenas a similaridade visual.
- Tratar toda repetição como erro.
O resultado deverá ser algo semelhante a:
Grupo de retakes:
- Tomada 01
- Tomada 02
- Tomada 03
Evidências:
- Transcrição semelhante
- Enquadramento semelhante
- Áudio semelhante
- Intervalo temporal próximo
Confiança:
0.87
10. Submódulo persistencia
PersistenciaDaAnalise
Papel
Será responsável por salvar os resultados produzidos pelo scanner.
Responsabilidades
- Salvar a estrutura descoberta da timeline.
- Salvar os metadados.
- Salvar os caminhos dos arquivos.
- Salvar as transcrições.
- Salvar os resultados visuais.
- Salvar as cenas.
- Salvar os eventos.
- Salvar os possíveis retakes.
- Salvar logs e avisos.
- Permitir retomada de uma análise interrompida.
- Evitar processamento duplicado.
- Versionar os resultados quando necessário.
- Exportar os dados em formato estruturado, como JSON.
Não deve fazer
- Gerar plano de corte.
- Aplicar alterações no editor.
- Decidir quais clipes serão mantidos.
- Alterar os arquivos originais.
Visão final das responsabilidades
AnalisadorDeTimeline
Inicia a análise completa.
PipelineDoScanner
Controla a ordem de execução.
ContextoDeAnalise
Transporta e armazena os dados.
DescobertaDaTimeline
Descobre a estrutura da timeline.
DescobertaDeClipes
Representa os clipes encontrados.
DescobertaDeArquivos
Localiza os arquivos físicos.
ExtracaoDeMetadados
Obtém informações técnicas.
ExtracaoDeAudio
Prepara o áudio.
AnaliseDeAudio
Analisa características sonoras.
TranscricaoDeAudio
Converte fala em texto sincronizado.
ExtracaoDeQuadros
Seleciona quadros para análise.
AnaliseVisual
Interpreta o conteúdo visual.
DeteccaoDeCenas
Identifica limites e mudanças de cena.
DeteccaoDeEventos
Identifica acontecimentos relevantes.
DeteccaoDeRetakes
Identifica possíveis repetições.
PersistenciaDaAnalise
Salva todos os resultados.
A regra mais importante para o programador será:
Nenhuma classe do scanner deverá tomar decisões de edição. O scanner apenas coleta e organiza evidências. A decisão sobre cortar, manter, substituir ou reorganizar trechos será feita por outro módulo.