¿Qué hace Constructor de Montajes Sincronizados al Ritmo?
Resumen
Usa esta habilidad después de que una canción haya sido analizada con $song-edit-analysis, o cuando ya existan datos de beats/marcadores de corte equivalentes. El objetivo no es solo renderizar clips bajo la música; la edición debe sentirse autorada para la canción, con cambios de sujeto, impactos, reacciones del público y acentos visuales que aterricen en marcadores musicales significativos.
La Regla Integrada de FX (no negociable, aprendida en campo 2026-07)
Los efectos y el metraje nunca deben estar separados. Sin alternancia de beats entre segmentos de FX de fotograma completo y clips reales de fotograma completo — se lee como dos videos empalmados. Cada efecto debe anclarse a (a) la máscara del sujeto (máscaras de persona por fotograma — VNGenerateForegroundInstanceMaskRequest de Apple Vision en macOS, o equivalente), (b) la geometría de la escena (portales en cielos, pantallas con pin de esquina, reflejos en agua, sangrado de luz envuelto en bordes), o (c) los propios píxeles de la toma (caleidoscopio/espejo del fotograma en vivo, manchas de resaltes, ondas temporales del historial del fotograma). Los renders procedimentales ingresan a las tomas como elementos en escena — a través de cielos, pantallas, puertas, reflejos — nunca como segmentos de corte. Un elemento sin seguimiento con mezcla de pantalla se lee como una pegatina. Leyes relacionadas: verse bien supera a seguir parámetros (reestructurar en lugar de enviar una falla de cohesión); un lenguaje de efecto por corte, escalado con la estructura de la canción — looks únicos por toma rompen la cohesión; una gradación rica y comprometida sobre cada toma (la pura moderación se ve lavada y aburrida; la fórmula de trabajo es gradación densa y rica + una distorsión de realidad dura por toma). Para piezas de carril emocional para compartir, prefiere UNA toma continua con una transformación fotométrica (rampa de gradación / llegada de luz / bloom impulsado por los envelopes de la canción) — las costuras son imposibles por construcción.
Peligro de composición que te quemará: las mezclas de pantalla deben ejecutarse en RGB (format=gbrp) — en YUV, el negro tiene croma 128 y la mezcla de pantalla inunda el fotograma de magenta. Haz la opacidad como una multiplicación lutrgb en RGB.
Motores de Corte
Dos relojes, elige por carril:
- Bloqueado por ataques (preferido para carriles de energía/retención):
librosa.onset.onset_detect(onset_envelope=onset_strength(...), hop_length=512, backtrack=False, delta=0.02, units="time"); fusiona ataques más cercanos que 0.13s manteniendo el más fuerte; cuantizaint(round((t-t0)*FPS)); fuerza el fotograma 0; corta en CADA ataque superviviente — mantén cuando escaso, ráfaga cuando ocupado; acentos de golpe en ataques de intensidad del cuartil superior. Necesita un grupo profundo (~60+ tomas recortadas). Prefiere esto sobre los ajustes preestablecidos de densidad. - Impulsado por marcadores/prioridad (el motor original de este kit): corta en marcadores primarios/secundarios según la tabla de prioridad a continuación — sigue siendo adecuado para cortes de prueba de gameplay horizontal y ediciones de densidad moderada.
- Ajusta cualquier cuadrícula de beat estimada a los ataques reales detectados cuando esté dentro de 60ms; para momentos de cambio de estilo/transformación usa
flooren lugar deroundpara que el cambio caiga en el fotograma que contiene el transitorio.
Arquitecturas de Construcción
- Segmento-render → concat → post-grafo (solo ffmpeg): mp4s por toma con recorte de cubierta (
scale=W:H:force_original_aspect_ratio=increase:flags=lanczos,crop=W:H, fuentes HDR mapeadas a bt709 primero,tpad=stop_mode=clonepara extender congelando clips cortos — nunca acortar la cuadrícula de música), concat demuxer-c copy, unfilter_complexde gradación base (eq=contrast=1.05:saturation=1.08, viñeta, grano de película víanoise=alls=5:allf=t+u), audio multiplexado al último con fundidos. - Frame-pipe numpy (FX integrados por píxel): decodifica ffmpeg→rawvideo rgb24→bucle numpy→codifica ffmpeg stdin a CRF 17. La tubería de máscara probada: renderiza un
base.mp4limpio y gradado (corte bloqueado) → genera máscaras de persona SOBRE el base → impulsa efectos desde una tabla de efectos por fotograma → multiplexa el audio original. La sincronía es perfecta por construcción. - Fusión en shader (moderngl GLSL): el metraje se decodifica en una textura y el mundo procedural se renderiza en el mismo shader de fragmento, los cortes se pasan como
--cutspara que aterricen como golpes de deformación en el shader. La integración más profunda; consulta$generated-media-sourcingpara el esqueleto del renderizador.
Entradas
Prefiere estas entradas:
- Archivo de audio o una ventana de extracto.
*_cut_markers_30fps.csvde$song-edit-analysis.- Fuentes de metraje o un manifiesto de fuentes con rutas de clips, categorías, pesos y notas de uso.
- Manifiesto de medios generados o carpeta de activos generados de
$generated-media-sourcing, cuando el usuario solicite clips/imágenes generados o el metraje fuente esté incompleto. - Formato deseado:
9:16,16:9, o ambos. - Duración objetivo, usualmente
30-40spara cortes de prueba sociales.
Si no hay un CSV de marcadores de corte, primero ejecuta $song-edit-analysis.
Flujo de Trabajo
- Elige la ventana musical antes de renderizar. Usa el análisis de la canción para seleccionar un tramo de
30-40sde alta energía o narrativamente coherente. - Inventario de metraje. Usa
scripts/scan_video_sources.pypara puntuar videos candidatos por movimiento, brillo, luminosidad, saturación y tiempos de inicio prometedores. - Si falta metraje real o el usuario solicita medios generados, usa
$generated-media-sourcingpara crear o planificar clips generados y placas fijas antes del mapeo final de fuentes. - Crea una taxonomía de fuentes. Tipos comunes:
gameplay,crowd,real_laser,photos_festival,photos_nature,character_select,menu,reaction,product,broll,generated_video,generated_still. - Construye el plan de segmentos a partir de marcadores de corte adyacentes. Omite micro-segmentos por debajo de aproximadamente
0.17sa menos que la pista realmente requiera cortes de tartamudeo. - Empareja la intensidad del metraje con la prioridad del marcador:
- Prioridad 1-2: configuración, contexto, planos mantenidos, movimiento suave.
- Prioridad 3: acción media, cambios de ángulo, metraje de relleno rítmico.
- Prioridad 4: movimiento activo, cortes rápidos, respuestas de reacción.
- Prioridad 5: mejores impactos, revelaciones, KOs, golpes de multitud, destellos de láser.
- Usa acentos como puntuación, no como relleno. Láseres reales, estallidos de multitud, destellos de naturaleza, momentos de menú, placas generadas y luces abstractas deben amplificar giros de frase, cajas, rellenos y caídas.
- Renderiza segmentos, concatena, adjunta el extracto de audio limpio, luego genera:
- video final
- CSV de línea de tiempo
- hoja de contacto
- JSON de brief con mezcla de fuentes, mezcla de tipos, dimensiones, ventana de canción e intención creativa
- Ejecuta
$edit-delivery-qaantes de dar la edición por terminada.
Patrones de Renderizado
Para ediciones verticales que incluyen metraje horizontal, mantén la acción principal legible:
- Usa un fondo desenfocado/mejorado a sangre del mismo clip.
- Superpón el primer plano nítido centrado con escala y posición y estables.
- Añade solo separadores sutiles arriba/abajo si es necesario.
- Evita recortes verticales ajustados que pierdan el escenario, la dirección de lanzamiento, las caras o la interfaz de usuario importante.
Para metraje de acento a sangre:
- Escala/recorta para llenar el formato de entrega.
- Aumenta el contraste/saturación lo suficiente para que se lea rápidamente.
- Mantén los acentos de láser/festival/reacción cortos: a menudo
2-12fotogramas o un beat.
Para ediciones de gameplay horizontal:
- Mantén la acción de fotograma completo visible.
- Prefiere
1920x1080,30fpscomo mínimo. - Usa cortes rápidos de un beat en secciones de alta energía, pero preserva la legibilidad de la fuente.
Reglas de Selección de Fuentes
Prefiere la acción obvia en pantalla: impactos, colisiones, picos, revelaciones, cadenas de combos rápidas, reacciones expresivas o momentos de luz de alto movimiento.
Mantén las tomas de reacción humana explosivas para llamada y respuesta después de impactos importantes. No rechaces automáticamente el metraje solo de multitud; rechaza solo reacciones débiles, lentas o visualmente planas.
Usa metraje real para acentos finales de láser/festival siempre que sea posible. Los marcadores de posición generados son aceptables para exploración, pero reemplázalos antes de la entrega final si existen fuentes reales.
Rechaza o desprioriza fuertemente tarjetas de título, entrevistas, menús sin un papel deliberado, escenarios vacíos, pizarras planas, acción recortada en exceso y configuración de bajo movimiento en secciones pico.
Los clips e imágenes generados deben etiquetarse en los resultados de línea de tiempo/brief con generated_video o generated_still, el prompt utilizado, y si el activo es final_ok, replace_if_real_source_found o placeholder_only.
Heurísticas de Temporización
- Usa marcadores primarios para cortes duros, cambios de sujeto, impactos, revelaciones y aterrizajes de rampa de velocidad.
- Usa marcadores secundarios para cortes de continuación, cambios de ángulo, pequeños intercambios de metraje de relleno e inicios de rampa de velocidad.
- Durante secciones de alta energía, una longitud de segmento promedio de alrededor
0.35-0.50sfunciona bien para un montaje social denso. - Para un corte de prueba de
35s,70-90segmentos es un objetivo sólido cuando el material fuente puede soportarlo. - Reserva el metraje más fuerte para la sección de mayor energía; no gastes todo el material pico durante la configuración.
Patrón de Video Musical Vertical (2026-07)
Para promoción musical 9:16 (el carril más nuevo junto al patrón Smash): 1080×1920@30 siempre; final de bucle sin costura (el estado fotométrico regresa al fotograma 0 durante los últimos ~22 fotogramas); texto de gancho con cinética de caída de segunda línea (línea 1 estática en el fotograma 0, línea 2 apareciendo fusionada con el beat dentro de ±100ms de un ataque real en 0.8-1.3s); ya sea un contenedor estilo Sweeps (lienzo negro, ventana de metraje centrada, gancho monoespaciado arriba, crédito abajo) o cinematográfico a sangre. Itera como versiones numeradas en infraestructura estable — cambia solo el lenguaje de efecto entre versiones; cuando al cliente le encanta un momento de 2 segundos, haz que ese momento sea el lenguaje completo de la siguiente versión.
Patrón de Proyecto De Conteto Machino
La forma reutilizable del proyecto Smash Mash:
- Ventana de canción: aproximadamente
52.98s-88.17s, un extracto de alta energía de35.19s. - Edición densa impulsada por marcadores: aproximadamente un segmento por beat o marcador principal.
- El gameplay/acción principal es dominante.
- Las multitudes, los láseres reales, la naturaleza y los momentos de menú/contexto de fuente aparecen como puntuación breve.
- Los entregables incluyen MP4s finales, hojas de contacto, CSVs de línea de tiempo y archivos JSON de brief.
Para el estándar detallado, lee references/conteto-edit-standard.md.
Referencias opcionales:
references/example-prompts.md: prompts reutilizables para futuras tareas de edición.references/file-schemas.md: formas flexibles de CSV de línea de tiempo y JSON de brief.references/render-recipes.md: recetas de FFmpeg/diseño adaptadas de este proyecto.references/gui-vision.md: visión de producto para un futuro flujo de trabajo gráfico.
Script
Usa scripts/scan_video_sources.py cuando necesites un inventario de metraje reutilizable:
python3 scripts/scan_video_sources.py /ruta/a/videos --out /ruta/a/inventario_fuentes
Escribe un CSV y JSON con duración de medios, puntuaciones gruesas de movimiento/brillo y tiempos de inicio recomendados. Usa la salida para construir grupos de fuentes y evitar cortar repetidamente de los mismos momentos muertos.