O que Construtor de Montagens Sincronizadas com Batida faz?
Visão Geral
Use este skill depois que uma música foi analisada com $song-edit-analysis, ou quando dados equivalentes de batida/marcadores de corte já existirem. O objetivo não é apenas renderizar clipes sob a música; a edição deve soar autoral em relação à música, com mudanças de assunto, impactos, reações da multidão e acentos visuais caindo em marcadores musicais significativos.
A Regra de Efeitos Integrados (innegociável, aprendida em campo em 2026-07)
Efeitos e filmagens nunca devem estar separados. Nada de alternância entre segmentos de efeitos em tela cheia e clipes reais em tela cheia — isso parece dois vídeos emendados. Cada efeito deve ancorar (a) no matte do assunto (máscaras de pessoa por quadro — VNGenerateForegroundInstanceMaskRequest no macOS, ou equivalente), (b) na geometria da cena (portais no céu, telas com cantos fixados, reflexos na água, vazamento de luz nas bordas) ou (c) nos próprios pixels da cena (caleidoscópio/espelho do quadro ao vivo, manchas de realce, ondulações temporais do histórico do quadro). Renders procedurais entram nas cenas como elementos da cena — através de céus, telas, portas, reflexos — nunca como segmentos de corte. Um elemento não rastreado com blend de tela parece um adesivo. Leis relacionadas: ficar bonito supera seguir parâmetros (reestruture em vez de enviar uma falha de coesão); uma linguagem de efeito por corte, escalada com a estrutura da música — looks únicos por corte quebram a coesão; uma correção de cor rica e comprometida sobre cada cena (a pura contenção parece desbotada e chata; a fórmula funcional é correção densa e rica + uma distorção dura da realidade por cena). Para peças emocionais no 'share-lane', prefira UM único plano contínuo com uma transformação fotométrica (rampa de cor / chegada de luz / bloom impulsionado pelos envelopes da música) — costuras impossíveis por construção.
Armadilha de composição que vai te queimar: blends de tela devem rodar em RGB (format=gbrp) — em YUV, o preto tem croma 128 e o blend inunda o quadro de magenta. Faça a opacidade como uma multiplicação lutrgb em RGB.
Mecanismos de Corte
Dois relógios, escolha por faixa:
- Sincronizado com ataques (preferido para faixas de energia/retenção):
librosa.onset.onset_detect(onset_envelope=onset_strength(...), hop_length=512, backtrack=False, delta=0.02, units="time"); mescle ataques com menos de 0.13s mantendo o mais forte; quantizeint(round((t-t0)*FPS)); force quadro 0; corte em CADA ataque sobrevivente — segure quando esparso, exploda quando intenso; acentos de soco nos ataques do quartil superior. Precisa de um pool profundo (~60+ tomadas). Prefira isso a predefinições de densidade. - Baseado em marcadores/prioridades (mecanismo original deste kit): corte nos marcadores primários/secundários conforme a tabela de prioridades abaixo — ainda adequado para cortes de prova de gameplay paisagem e edições de densidade moderada.
- Ajuste qualquer grade de batida estimada para ataques reais detectados quando dentro de 60ms; para momentos de mudança de estilo/transformação, use
floorem vez deroundpara que a mudança caia no quadro que contém a transiente.
Arquiteturas de Construção
- Segmento-render → concat → pós-grafo (apenas ffmpeg): mp4s por tomada com cover-crop (
scale=W:H:force_original_aspect_ratio=increase:flags=lanczos,crop=W:H, fontes HDR com tonemap para bt709 primeiro,tpad=stop_mode=clonepara estender clipes curtos congelando — nunca encurte a grade musical), concat demuxer-c copy, umfilter_complexde correção geral (eq=contrast=1.05:saturation=1.08, vinheta, grão de filme vianoise=alls=5:allf=t+u), áudio multiplexado por último com fades. - Frame-pipe numpy (efeitos integrados por pixel): decodifique ffmpeg→rawvideo rgb24→loop numpy→codifique stdin do ffmpeg em CRF 17. O pipeline de matte comprovado: renderize um
base.mp4corrigido e limpo (corte fixo) → gere mattes de pessoa SOBRE o base → conduza efeitos a partir de uma tabela de efeitos por quadro → multiplexe o áudio original. A sincronia é perfeita por construção. - Fusão em shader (GLSL moderngl): filmagem decodificada em uma textura e o mundo procedural renderizado no mesmo shader de fragmento, cortes passados como
--cutspara que caiam como socos de warp no shader. Integração mais profunda; veja$generated-media-sourcingpara o esqueleto do renderizador.
Entradas
Prefira estas entradas:
- Arquivo de áudio ou uma janela de trecho.
*_cut_markers_30fps.csvde$song-edit-analysis.- Fontes de filmagem ou um manifesto de fontes com caminhos de clipes, categorias, pesos e notas de uso.
- Manifesto de mídia gerada ou pasta de ativos gerados de
$generated-media-sourcing, quando o usuário pedir clipes/imagens gerados ou as fontes de filmagem estiverem incompletas. - Formato desejado:
9:16,16:9ou ambos. - Duração alvo, geralmente
30-40spara cortes de prova sociais.
Se não houver CSV de marcadores de corte ainda, execute primeiro $song-edit-analysis.
Fluxo de Trabalho
- Escolha a janela musical antes de renderizar. Use a análise da música para selecionar um trecho de
30-40sde alta energia ou narrativamente coerente. - Faça um inventário das filmagens. Use
scripts/scan_video_sources.pypara pontuar vídeos candidatos quanto a movimento, brilho, saturação e tempos de início promissores. - Se faltarem filmagens reais ou o usuário pedir mídia gerada, use
$generated-media-sourcingpara criar ou planejar clipes gerados e placas estáticas antes do mapeamento final das fontes. - Crie uma taxonomia de fontes. Tipos comuns:
gameplay,crowd,real_laser,photos_festival,photos_nature,character_select,menu,reaction,product,broll,generated_video,generated_still. - Construa o plano de segmentos a partir de marcadores de corte adjacentes. Pule microsegmentos abaixo de cerca de
0.17sa menos que a faixa realmente exija cortes stutter. - Combine a intensidade da filmagem com a prioridade do marcador:
- Prioridade 1-2: configuração, contexto, seguras, movimento suave.
- Prioridade 3: ação média, mudanças de ângulo, B-roll rítmico.
- Prioridade 4: ação ativa, cortes rápidos, respostas de reação.
- Prioridade 5: melhores impactos, revelações, KOs, acertos da multidão, flashes de laser.
- Use acentos como pontuação, não como preenchimento. Lasers reais, reações da multidão, flashes da natureza, momentos de menu, placas geradas e luzes abstratas devem amplificar mudanças de frase, caixas, preenchimentos e quedas.
- Renderize segmentos, concatenate, anexe o trecho de áudio limpo e então produza:
- vídeo final
- CSV de linha do tempo
- folha de contato
- JSON de brief com mix de fontes, mix de tipos, dimensões, janela musical e intenção criativa
- Execute
$edit-delivery-qaantes de considerar a edição finalizada.
Padrões de Renderização
Para edições verticais que incluem filmagens paisagem, mantenha a ação principal legível:
- Use um fundo com bleed total e desfocado/melhorado do mesmo clipe.
- Sobreponha o primeiro plano nítido centralizado com escala e posição y estáveis.
- Adicione separadores sutis no topo/base apenas se necessário.
- Evite cortes verticais apertados que percam o palco, direção de lançamento, rostos ou UI importante.
Para filmagens de destaque com bleed total:
- Escale/corte para preencher o formato de entrega.
- Aumente contraste/saturação o suficiente para ser lido rapidamente.
- Mantenha acentos de laser/festival/reação curtos: frequentemente
2-12quadros ou uma batida.
Para edições de gameplay paisagem:
- Mantenha a ação em tela cheia visível.
- Prefira
1920x1080,30fpsmínimo. - Use cortes rápidos de uma batida em seções de alta energia, mas preserve a legibilidade da fonte.
Regras de Seleção de Fontes
Prefira ação óbvia na tela: impactos, colisões, picos, revelações, combos rápidos, reações expressivas ou momentos de luz de alto movimento.
Guarde tomadas de reação humana explosivas para chamada-e-resposta após impactos principais. Não rejeite automaticamente filmagens apenas com multidão; rejeite apenas reações fracas, lentas ou visualmente planas.
Use filmagens reais para acentos finais de laser/festival sempre que possível. Placeholders gerados são aceitáveis para exploração, mas substitua-os antes da entrega final se existirem fontes reais.
Rejeite ou priorize fortemente para baixo: cartões de título, entrevistas, menus sem função deliberada, palcos vazios, slates planos, ação muito cortada e configuração de baixo movimento em seções de pico.
Clipes e imagens gerados devem ser rotulados nas saídas de linha do tempo/brief com generated_video ou generated_still, o prompt usado e se o ativo é final_ok, replace_if_real_source_found ou placeholder_only.
Heurísticas de Tempo
- Use marcadores primários para cortes duros, mudanças de assunto, impactos, revelações e aterrissagens de rampa de velocidade.
- Use marcadores secundários para cortes de continuação, mudanças de ângulo, pequenas trocas de B-roll e inícios de rampa de velocidade.
- Durante seções de alta energia, comprimento médio de segmento em torno de
0.35-0.50sfunciona bem para uma montagem social densa. - Para um corte de prova de
35s,70-90segmentos é um alvo forte quando o material de origem pode suportá-lo. - Reserve as filmagens mais fortes para a seção de maior energia; não gaste todo o material de pico durante a configuração.
Padrão de Vídeo Musical Vertical (2026-07)
Para promoção musical 9:16 (a nova faixa junto com o padrão Smash): 1080×1920@30 sempre; final com loop contínuo (estado fotométrico retorna ao quadro 0 ao longo dos últimos ~22 quadros); texto de chamada com cinética de segunda linha (linha 1 estática no quadro 0, linha 2 aparecendo ligada à batida dentro de ±100ms de um ataque real em 0.8–1.3s); ou um contêiner estilo Sweeps (tela preta, janela de filmagem centralizada, chamada em monoespaço acima, crédito abaixo) ou cinematográfico com bleed total. Itere como versões numeradas em infraestrutura estável — mude apenas a linguagem de efeito entre versões; quando o cliente amar um momento de 2 segundos, faça desse momento a linguagem inteira da próxima versão.
Padrão de Projeto do Conteto Machino
A forma reutilizável do projeto Smash Mash:
- Janela musical: cerca de
52.98s-88.17s, um trecho de alta energia de35.19s. - Edição densa baseada em marcadores: aproximadamente um segmento por batida ou marcador principal.
- Gameplay/ação principal é dominante.
- Multidão, lasers reais, natureza e momentos de contexto de menu/fonte aparecem como pontuação breve.
- Entregáveis incluem MP4s finais, folhas de contato, CSVs de linha do tempo e arquivos JSON de brief.
Para o padrão detalhado, leia references/conteto-edit-standard.md.
Referências opcionais:
references/example-prompts.md: prompts reutilizáveis para futuras tarefas de edição.references/file-schemas.md: formatos flexíveis de CSV de linha do tempo e JSON de brief.references/render-recipes.md: receitas FFmpeg/layout adaptadas deste projeto.references/gui-vision.md: visão de produto para um fluxo de trabalho gráfico futuro.
Script
Use scripts/scan_video_sources.py quando precisar de um inventário de filmagens reutilizável:
python3 scripts/scan_video_sources.py /caminho/para/videos --out /caminho/para/inventario_fontes
Ele escreve um CSV e JSON com duração da mídia, pontuações brutas de movimento/brilho e tempos de início recomendados. Use a saída para construir pools de fontes e evitar cortar repetidamente dos mesmos momentos mortos.