Communitygithub.com

Remotion a Resolve / Convertir código de Remotion en línea de t…

Convierte el código de un video de Remotion en una línea de tiempo editable de DaVinci Resolve, utilizando fotogramas clave reales de Inspector para movimientos de cámara sobre capturas de pantalla, títulos Fusion para subtítulos, tarjetas y resaltes, y la misma sincronización de escenas; luego compara el resultado con el render original de Remotion fotograma a fotograma.

¿Qué es Convertir código de Remotion en línea de t…?

Esta habilidad toma un proyecto de Remotion (un framework de React para videos) y lo reconstruye en una línea de tiempo de DaVinci Resolve conservando la estructura de escenas y elementos visuales. No busca copiar píxeles, sino traducir los componentes de React a herramientas nativas de Resolve: capturas de pantalla completas como imágenes clavefotogramas, movimientos de cámara como fotogramas clave de Inspector, títulos y subtítulos como títulos de Fusion, y transiciones como fundidos. El proceso comienza leyendo la composición de Remotion, mapeando cada elemento a un formato intermedio (`film.json`), escribiendo un adaptador que exporta ese formato, construyendo el timeline en Resolve y finalmente comparando el resultado con el render original usando métricas SSIM. Es útil para desarrolladores y editores que quieren pasar de un prototipo automatizado en Remotion a un proyecto editable en Resolve, manteniendo la fidelidad de la sincronización y los elementos clave. Funciona junto con la habilidad `resolve-screen-tutorial` para la construcción del timeline. Se recomienda usar proyectos de Remotion con estructura clara y evitar elementos como gráficos, partículas o animaciones letra por letra, que no se transfieren bien.

Compatible con✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/MusicProWorkshop/davinci-resolve-skills/tree/HEAD/plugins/davinci-resolve-timelines/skills/remotion-to-resolve

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Convertir video de Remotion a línea de tiempo de Resolve

Lee un proyecto de Remotion, escribe un pequeño adaptador que convierte sus datos de escena en el film.json que la habilidad resolve-screen-tutorial construye, ejecuta esa construcción y compara el resultado con el render de Remotion.

Es una reconstrucción con las herramientas de Resolve, no una copia de píxeles. React puede dibujar cualquier cosa, mientras que la línea de tiempo tiene imágenes, fotogramas clave y títulos Fusion. Por lo tanto, la parte honesta de este trabajo es informar al usuario qué se mapea limpiamente, qué se aproxima y qué no se traslada.

Antes de comenzar

  • resolve-screen-tutorial se encuentra junto a la carpeta de esta habilidad. Lee su SKILL.md y references/film-format.md ahora, ya que escribirás ese formato y seguirás esos pasos de construcción. Si falta, dile al usuario que esta habilidad lo necesita.
  • El proyecto de Remotion tiene sus dependencias instaladas. Su propio código no se modifica: el adaptador solo lo lee.

Pasos

1. Lee el video. Empieza en src/Root.tsx para obtener el id de la composición, fps, width, height y durationInFrames, luego sigue a través de los componentes de escena y sus datos. Pregunta qué composición si hay varias y la solicitud no lo especifica. Encuentra todos los assets en public/.

2. Enumera lo que hay en pantalla y mapealo. references/mapping.md contiene la tabla desde los bloques de construcción de Remotion hasta film.json. Léelo ahora. Clasifica cada elemento en uno de tres grupos:

  • Se mapea directamente: capturas de pantalla completas, movimientos de cámara, cursor, anillos, subtítulos, tarjetas de título, fundidos.
  • Aproximado: otros tipos de easing, otras transiciones, fuentes web que no están instaladas, estilizado elaborado de subtítulos.
  • No se traslada: gráficos, partículas, 3D, Lottie o texto animado letra por letra.

Si algo importante está en el tercer grupo, informa al usuario antes de construir y ofrece las opciones en references/mapping.md. Si el video consiste principalmente en ese grupo, este enfoque no es adecuado, así que dilo en lugar de construir una copia pobre.

3. Obtén un video de referencia. Busca un render de esta composición en out/. Es bueno si es más reciente que los archivos fuente de la composición y tiene durationInFrames fotogramas (verifica con ffprobe). Una codificación web más pequeña es aceptable y solo reduce ligeramente las puntuaciones. De lo contrario, renderiza uno con la configuración de la composición:

npx remotion render <id de composición> out/<id de composición>.mp4

4. Escribe el adaptador. Colócalo en <proyecto>/resolve/<id de composición>/export-film.mjs, y haz que escriba film.json junto a él. Esa carpeta es la carpeta de la película para la construcción. Agrega build/ a la lista de ignorados del proyecto solo si el usuario quiere mantener estos archivos en el repositorio, y no hagas commit a menos que te lo pidan.

El adaptador debe importar los datos reales del video, para que cuando cambie la copia o la sincronización, al ejecutarlo nuevamente se refleje el cambio. references/mapping.md tiene un esqueleto y la aritmética. Solo copia valores manualmente cuando estén enredados dentro de JSX, e indica al usuario cuáles son, ya que esos no seguirán cambios futuros en el código.

Establece la marca visual (brand) a partir de los colores, fuentes y logo del código. Enumera cada fuente que carga el video y verifica cada una con fonts_available. Si alguna no está instalada, pregunta si instalarla o usar una instalada similar. Una fuente instalada con el mismo nombre puede ser una versión diferente de la fuente web, con anchos ligeramente distintos.

5. Construye. Sigue la sección de Construcción del SKILL.md de resolve-screen-tutorial desde el paso 1 hasta el 4, con WORK configurado en la carpeta de la película. El paso 4 (review_frames) es una verificación rápida antes de renderizar. Luego renderiza, como en su paso 5, porque la comparación necesita el video completo. Omite su llamada a review.py, porque el paso 6 aquí lo hace con la referencia, y elimina tu trabajo de renderizado una vez que termines de comparar. Sus decisiones aplican aquí también: informa al usuario en qué proyecto cae esto, y nunca reemplaces una línea de tiempo que no hayas construido. Configura fps a la velocidad de fotogramas del proyecto. Los tiempos en film.json están en segundos, por lo que la sincronización se mantiene incluso cuando difiere de la composición.

6. Compara con el render de Remotion. Pasa la referencia a review.py:

python "<resolve-screen-tutorial>/scripts/review.py" "<WORK>" "<WORK>/build/render/review.mp4" "<video de referencia>"

Imprime SSIM (una puntuación de similitud donde 1 es idéntico) para la película y cada escena, con el fotograma donde cada escena es más débil. Escribe hojas lado a lado en build/review/, Resolve a la izquierda, y ssim-by-half-second.txt, que muestra problemas que el fotograma más bajo de una escena oculta. Abre las hojas. Para una visión más cercana, agrega --at <segundos> para obtener un momento a tamaño completo, Resolve arriba.

Como guía, las películas basadas en capturas de pantalla reconstruidas fielmente obtuvieron una puntuación general de 0.96 a 0.97. Una escena muy por debajo de sus vecinas tiene una diferencia real, así que mira su fotograma más bajo:

Lo que vesCausa habitual
Todo desplazado o del tamaño incorrectoEscala u origen de transformación en el adaptador
Toda la película desplazada en el tiempoInicio de escenas o superposición de transición en el adaptador
Cámara en reposo correcta, incorrecta en movimientoEasing
Un anillo ligeramente demasiado grandeEl borde CSS está dentro de su caja, ver film-format.md
Solo el texto difiereFuente: cambiada, o el mismo nombre en una versión diferente

Algunas diferencias son esperadas y no necesitan corrección:

  • Un resalte aparece tarde, porque espera a que la cámara se detenga.
  • El brillo de un anillo tiñe el interior del anillo, ya que un desenfoque Fusion se extiende en ambas direcciones.
  • Los subtítulos, el cursor y los anillos terminan en medio de una disolución en lugar de permanecer en la escena saliente.
  • Una tarjeta después de la primera anima medio disolución tarde.

Corrige el adaptador, ejecútalo de nuevo, luego ejecuta plan.py y build_film nuevamente. Detente cuando lo que quede sean diferencias que puedas nombrar.

7. Informe. Todo lo que está en la sección de Finalización de resolve-screen-tutorial, más:

  • las puntuaciones SSIM
  • la lista de diferencias del paso 6, cada una con su causa
  • cualquier elemento del grupo "no se traslada" y lo que hiciste al respecto
  • dónde está el adaptador, cómo ejecutarlo de nuevo, y que una reconstrucción reemplaza la línea de tiempo, perdiendo las ediciones realizadas en ella

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Skills relacionados