Vídeo sobreposição conforme a fala
Use quando precisar manter a voz e a presença do narrador, mas priorizar quadro reduzido, texto e gráficos. Leia CLAUDE.md, revise o conteúdo e as fontes, proponha o formato e aguarde a escolha, se ainda não escolhido. Não processe mídia com dados de identificação; interrompa essa parte para que o responsável os remova antes. Não publique, envie, faça commit ou push por conta própria.
- Execute
python3 scripts/chuan_bi_giong.py <video> Output/video/<slug>. Leia o relatório e ouça a voz original; é obrigatório detectar gaguejos usandoscripts/tim_loi_noi.pyantes de cortar (o script de preparação de voz já chamou, pode ser executado separadamente ao corrigir). Não deduza todos os gaguejos a partir de legendas já simplificadas. - Normalize o vídeo fonte para o canvas vertical 9:16 usando letterbox, sem cortar o rosto. Meça o rosto neste mesmo canvas:
{x,y,radius}normalizado 0–1, raio em relação à largura, padrão 0.14. Fontes com proporção diferente devem ser convertidas antes; verifique novamente se o rosto mudou de posição. Não há rastreamento facial automático; use uma região que cubra todas as posições do rosto ou divida a composição quando o layout mudar. Use apenas vídeos que já tiveram os dados de identificação removidos de acordo com as regras do projeto. - Converta words
{w,s,e}em{text,startMs,endMs}, sendo ms = segundos × 1000. Mantenha as words originais junto com os segments originais; o áudio do vídeo é cortado junto com os segments. Não use voz pré-cortada simultaneamente com as words originais. A mídia deve estar empublic, com caminhos relativos.audiopode ficar vazio porquePhuHinhusa a voz dentro do vídeo;musicemusicVolumesão opcionais, a música não faz parte da camada de vídeo com estiramento. - Crie beats
{atPhrase,nth?,untilPhrase,untilNth?,mode,content,source?,box?}. A frase final termina emendMsda última palavra;nthconta a partir de 0. Não sobreponha beats, os marcos devem ser crescentes. Intervalos sem beat voltam automaticamente para card; é recomendado cobrir toda a fala com beats para verificar o ritmo claramente.full: narrador ocupa todo o quadro, contain, sem corte no rosto, no máximo 8 segundos mesmo com vários beats full consecutivos;card: narrador pequeno no canto superior, gráficos abaixo;over: gráficos transparentes, caixa evitando o rosto mesmo durante transições de quadro;cover: cobre totalmente com fundo e gráficos, mas o áudio do vídeo continua. A transição entre quadros leva 650 ms. - O content tem
kindigual aword,number,list,compare,steps,barsetext.numberadicionavalueespoken, que é a sequência numérica falada, ex.: value 12, spoken “doze”.spokenNthopcional conta as ocorrências da sequência numérica dentro do mesmo beat, a partir de 0; o marconthdo beat ainda segue toda a fala cortada. O valor sobe e só é totalmente alcançado quando a sequência numérica termina de ser falada. Tipos com múltiplos itens usamitems:[{text,atPhrase,nth?,value?,spoken?}], cada item só aparece quando é falado;barsusa value,comparedivide colunas,stepstem setas.spokené um mapeamento manual que requer verificação humana para confirmar o significado com o value; o script não entende o significado semântico de números escritos por extenso. Não coloque números precocemente em títulos ou rótulos de itens; deixe que o value se encarregue de exibir o número. Mantenha no máximo alguns itens curtos para não transbordar a área. O texto principal tem 72 px ou mais. - Box
{x,y,width,height}é calculado em px 1080×1920, com limites x 64–1016, y 100–1260; o padrão card em y620, over y900. Legenda em y1330 dentro da área 1300–1520. Fontes abaixo da legenda devem ter autor/organização, ano, link e data de acesso para informações médicas; dados não verificados devem ser marcados como aguardando aprovação. UseaiVoice:truepara etiqueta de voz IA, se necessário. - Escreva um JSON contendo as props, execute
python3 scripts/kiem_phu_hinh.py <du-lieu.json>; corrija marcos não encontrados, full muito longo, over cobrindo o rosto, números que não estão na fala. Código de saída 0 significa dados válidos, 1 erro de validação, 2 erro de leitura. A ferramenta de verificação facial opera em quadro estável e amostra a 30 fps durante 650 ms após cada transição de quadro; o componente verifica quadro a quadro durante a renderização. Abra um quadro real para verificar movimento facial e texto transbordando. Depois crie o arquivo TS no studio/data exportandodefault {id:'VideoPhu',format:'PhuHinh',props:...}. Vejamau-moi.ts;MauPhuHinhé um modelo mudo com vídeo placeholder, não é vídeo aprovado. - Execute
cd remotion && npx --no-install tsc --noEmit; renderize um rascunho comnpx --no-install remotion render src/index.ts VideoPhu out/nhap.mp4 --codec h264. Verifique todos os tipos de gráficos, quadros de transição entre modos, início/fim de cada segmento, ouça a voz atravessando covers, verifique se os números são exibidos corretamente na hora certa, se as listas não aparecem antes da fala. Execute a detecção de fala novamente na versão final, se necessário, e ouça os pontos de junção. - Normalize o áudio para −14 LUFS usando loudnorm em duas passagens, medindo true peak −1.5 dBTP, conforme a seção de normalização de áudio em
video-thuy-mac/SKILL.md; sempre grave em um arquivo diferente e meça a versão final novamente. Entregue a versão de visualização, fontes, dados e partes não verificadas. Verifique scripts e imagens não substituem a aprovação médica/publicitária do responsável antes da publicação.