feat: criado modo explícito de análise do Scanner para separar som

- criado modo explícito de análise do Scanner para separar som, imagem ou ambos

Resumo:
- 5 arquivos alterados
- 0 novos
- 5 modificados
- 0 removidos

 5 files changed, 68 insertions(+), 11 deletions(-)

Arquivos:
  - code/cep-plugin/index.html
  - code/cep-plugin/main.js
  - code/cep-plugin/styles.css
  - code/engine/executar_scanner.py
  - code/engine/scanner/configuracao_visual.py
This commit is contained in:
João Henrique
2026-09-09 17:04:49 -04:00
parent 53a8307f38
commit 89288d95f0
5 changed files with 68 additions and 11 deletions
+17 -5
View File
@@ -260,8 +260,22 @@
<!-- ============================== SCANNER =============================== -->
<div class="tab-panel" id="tabScanner" role="tabpanel" aria-labelledby="tabBtnScanner" hidden>
<p class="tab-intro">Escolha o que será lido no arquivo original. O Scanner usa os tempos da timeline, mas não exporta frames pelo Premiere.</p>
<section class="card scanner-mode-card">
<div class="card-head"><h2>Tipo de análise</h2><span class="card-kicker">Primeiro escolha o fluxo</span></div>
<div class="scanner-mode-options" role="radiogroup" aria-label="Tipo de análise do Scanner">
<label class="scanner-mode-option"><input type="radio" name="scannerMode" value="som" checked onchange="scannerAtualizarModo()"><span><strong>Somente áudio</strong><small>Transcrição e fala com Whisper</small></span></label>
<label class="scanner-mode-option"><input type="radio" name="scannerMode" value="imagem" onchange="scannerAtualizarModo()"><span><strong>Somente imagem</strong><small>Frames, cenas e evidências visuais</small></span></label>
<label class="scanner-mode-option"><input type="radio" name="scannerMode" value="ambos" onchange="scannerAtualizarModo()"><span><strong>Áudio + imagem</strong><small>Executa os dois fluxos</small></span></label>
</div>
<p class="field-help" id="scannerModeHelp">O Scanner vai ignorar completamente a análise de frames e processar apenas as faixas de áudio.</p>
</section>
<section class="card scanner-track-discovery">
<div class="card-head"><h2>Timeline e faixas</h2></div>
<button class="button button-ghost" id="btnScannerDetectTracks" onclick="scannerDetectTracks()" type="button">Detectar faixas da sequência</button>
<p class="field-help" id="scannerTracksHelp">Abra a sequência desejada e detecte as faixas para selecioná-las.</p>
</section>
<div class="scanner-media-grid">
<section class="card scanner-media-card">
<section class="card scanner-media-card" id="scannerImageOptions">
<div class="card-head"><h2>Imagem</h2><span class="card-kicker">Vídeo e cenas</span></div>
<p class="field-help">Escolha as faixas e os recursos visuais que o Scanner deve analisar.</p>
<label class="field-label" for="scannerInterval">Segundos por quadro</label>
@@ -277,8 +291,6 @@
<option value="720">720p — mais rápido</option>
</select>
<p class="field-help">Reduzir a resolução acelera a extração e a leitura Vision sem perder precisão no rosto, pose ou objetos.</p>
<button class="button button-ghost" id="btnScannerDetectTracks" onclick="scannerDetectTracks()" type="button">Detectar faixas da sequência</button>
<p class="field-help" id="scannerTracksHelp">Abra a sequência desejada e detecte as faixas para selecioná-las.</p>
<div class="scanner-track-list"><span class="field-label">Faixas de vídeo</span><div id="scannerVideoTracks"></div></div>
<div class="scanner-subsection"><div class="card-head"><h3>O que detectar</h3></div>
<label class="checkbox-field"><input type="checkbox" data-scanner-resource="faces" checked><span>Rostos e qualidade facial</span></label>
@@ -296,7 +308,7 @@
<label class="checkbox-field"><input id="scannerInterpret" type="checkbox" checked><span>Descrever a cena com Foundation Models</span></label>
</div>
</section>
<section class="card scanner-media-card">
<section class="card scanner-media-card" id="scannerAudioOptions">
<div class="card-head"><h2>Som</h2><span class="card-kicker">Áudio e fala</span></div>
<p class="field-help">Escolha as faixas de áudio e configure a transcrição local do Whisper.</p>
<div class="scanner-track-list"><span class="field-label">Faixas de áudio</span><div id="scannerAudioTracks"></div></div>
@@ -309,7 +321,7 @@
</section>
</div>
<section class="card scanner-execution-card">
<div class="button-row"><button class="button button-ghost" onclick="saveScannerProfile()" type="button">Salvar perfil</button><button class="button button-primary" id="btnScannerProcess" onclick="scannerProcess()" type="button" disabled>Processar</button></div>
<div class="button-row"><button class="button button-ghost" onclick="saveScannerProfile()" type="button">Salvar perfil</button><button class="button button-primary" id="btnScannerProcess" onclick="scannerProcess()" type="button" disabled>Processar áudio</button></div>
<p class="field-help" id="scannerProfileStatus">Perfil padrão pronto.</p>
<div class="callout callout-info" id="scannerReportCard" hidden><strong>Relatório pronto</strong><p id="scannerReportPath"></p><div class="button-row"><button class="button button-ghost" onclick="scannerOpenReport()" type="button">Abrir JSON</button><button class="button button-ghost" onclick="scannerCopyReport()" type="button">Copiar conteúdo</button></div></div>
</section>