Sistema de Plantillas de Rendervid - Plantillas JSON, Variables, Animaciones y Transiciones

Rendervid Video Rendering Templates Open Source

Rendervid es un motor de renderizado de video programático construido alrededor de un sistema de plantillas declarativo basado en JSON. En lugar de editar manualmente video en una línea de tiempo, defines cada aspecto de tu video – escenas, capas, animaciones, transiciones y configuración de salida – en un único documento JSON. Este enfoque hace que las plantillas sean sin estado, controlables por versión y generables por máquina, abriendo la puerta a la producción de video impulsada por IA, pipelines de renderizado por lotes y flujos de trabajo de contenido completamente automatizados.

Esta guía cubre el sistema completo de plantillas de Rendervid de arriba a abajo: configuración a nivel raíz, configuración de salida, el sistema de variables y entrada, escenas y composición, los ocho tipos de capas, más de 40 preajustes de animación, más de 30 funciones de suavizado, 17 transiciones de escena, efectos visuales, configuración de fuentes y formatos de salida.


Descripción General de la Estructura de Plantillas

Cada plantilla de Rendervid es un objeto JSON con un conjunto bien definido de campos a nivel raíz. Aquí está el esqueleto de una plantilla completa:

{
  "name": "my-template",
  "output": { ... },
  "inputs": [ ... ],
  "composition": {
    "scenes": [ ... ]
  },
  "fonts": { ... },
  "customComponents": { ... },
  "defaults": { ... }
}

Campos a Nivel Raíz

CampoTipoRequeridoDescripción
namestringIdentificador de plantilla legible por humanos
outputobjectConfiguración de salida de video o imagen (dimensiones, fps, duración, formato)
inputsarrayNoDefiniciones de entrada dinámicas para variables de plantilla
compositionobjectContiene el array scenes que define todo el contenido visual
fontsobjectNoDeclaraciones de Google Fonts y fuentes personalizadas
customComponentsobjectNoComponentes de capa personalizados registrados
defaultsobjectNoValores predeterminados aplicados a todas las capas a menos que se anulen

El campo name es para propósitos organizacionales – no afecta el renderizado. Los campos output y composition son los dos pilares que toda plantilla debe tener. Todo lo demás es opcional pero desbloquea capacidades poderosas.


Configuración de Salida

El objeto output controla el archivo renderizado final: su formato, dimensiones, velocidad de fotogramas, duración y color de fondo.

{
  "output": {
    "type": "video",
    "width": 1920,
    "height": 1080,
    "fps": 30,
    "duration": 10,
    "backgroundColor": "#000000"
  }
}

Campos de Salida

CampoTipoPredeterminadoDescripción
typestring"video"Tipo de salida: "video" o "image"
widthnumber1920Ancho en píxeles (hasta 7680 para 8K)
heightnumber1080Alto en píxeles (hasta 4320 para 8K)
fpsnumber30Fotogramas por segundo (1-120)
durationnumberDuración total en segundos
backgroundColorstring"#000000"Color de fondo como hex, RGB o color con nombre

Preajustes Comunes

Aquí están las configuraciones de salida para formatos populares:

1080p Full HD (YouTube, propósito general):

{
  "type": "video",
  "width": 1920,
  "height": 1080,
  "fps": 30,
  "duration": 60,
  "backgroundColor": "#000000"
}

Instagram Reels / TikTok (9:16 vertical):

{
  "type": "video",
  "width": 1080,
  "height": 1920,
  "fps": 30,
  "duration": 30,
  "backgroundColor": "#FFFFFF"
}

4K UHD:

{
  "type": "video",
  "width": 3840,
  "height": 2160,
  "fps": 60,
  "duration": 120,
  "backgroundColor": "#000000"
}

Open Graph / Imagen para Compartir en Redes Sociales:

{
  "type": "image",
  "width": 1200,
  "height": 630,
  "backgroundColor": "#1a1a2e"
}

Para salida de imagen, fps y duration se ignoran – el renderizador captura un solo fotograma.


Variables de Plantilla y Entradas

El sistema de entrada y variables es lo que hace que las plantillas de Rendervid sean reutilizables. En lugar de codificar texto, colores o URLs en tu plantilla, defines entradas y las referencias usando la sintaxis {{nombreVariable}} en cualquier lugar de la plantilla.

Definición de Entradas

Las entradas se declaran en el array inputs de nivel superior. Cada objeto de entrada describe una única variable:

{
  "inputs": [
    {
      "key": "title",
      "type": "string",
      "label": "Título",
      "description": "Texto del título principal mostrado en la escena de introducción",
      "required": true,
      "default": "Hola Mundo"
    },
    {
      "key": "brandColor",
      "type": "color",
      "label": "Color de Marca",
      "description": "Color de marca principal usado para fondos y acentos",
      "required": false,
      "default": "#FF5733"
    },
    {
      "key": "showSubtitle",
      "type": "boolean",
      "label": "Mostrar Subtítulo",
      "description": "Alternar visibilidad del subtítulo",
      "required": false,
      "default": true
    }
  ]
}

Referencia de Campos de Entrada

CampoTipoRequeridoDescripción
keystringIdentificador único usado en referencias {{key}}
typestringTipo de datos: string, number, boolean, color, url, array
labelstringNoEtiqueta legible por humanos para renderizado de UI
descriptionstringNoExplicación de qué controla esta entrada
requiredbooleanNoSi la entrada debe proporcionarse en tiempo de renderizado
defaultanyNoValor de respaldo si no se proporciona entrada

Tipos de Entrada

  • string – Texto de forma libre. Usar para títulos, descripciones, subtítulos o cualquier contenido de texto.
  • number – Valores numéricos. Usar para duraciones, tamaños, posiciones, niveles de opacidad o conteos.
  • boolean – Alternancias verdadero/falso. Usar para visibilidad condicional, banderas de características o interruptores de encendido/apagado.
  • color – Valores de color en hex (#FF5733), RGB (rgb(255,87,51)) o formato con nombre. Usar para fondos, colores de texto y acentos.
  • url – Cadenas de URL válidas. Usar para fuentes de imagen, fuentes de video, enlaces y URLs de fuentes.
  • array – Listas de valores. Usar para galerías de imágenes, listas de texto, contenido de diapositivas o cualquier dato repetido.

Uso de Variables en la Plantilla

Una vez que las entradas están definidas, refiérelas en cualquier lugar de la plantilla usando llaves dobles:

{
  "type": "text",
  "text": "{{title}}",
  "style": {
    "color": "{{brandColor}}",
    "fontSize": "{{titleSize}}"
  }
}

Las variables se resuelven en tiempo de renderizado. Cuando llamas a la API o CLI de Rendervid, pasas los valores reales:

{
  "title": "Venta de Verano 2026",
  "brandColor": "#E63946",
  "titleSize": 72
}

Ejemplo Completo de Entrada

Aquí está una plantilla completa con múltiples tipos de entrada trabajando juntos:

{
  "name": "product-promo",
  "output": {
    "type": "video",
    "width": 1080,
    "height": 1080,
    "fps": 30,
    "duration": 15
  },
  "inputs": [
    {
      "key": "productName",
      "type": "string",
      "label": "Nombre del Producto",
      "description": "Nombre del producto que se está promocionando",
      "required": true,
      "default": "Producto"
    },
    {
      "key": "price",
      "type": "number",
      "label": "Precio",
      "description": "Precio del producto mostrado en el video",
      "required": true,
      "default": 29.99
    },
    {
      "key": "productImage",
      "type": "url",
      "label": "URL de Imagen del Producto",
      "description": "URL de la imagen del producto",
      "required": true
    },
    {
      "key": "accentColor",
      "type": "color",
      "label": "Color de Acento",
      "description": "Color usado para botones CTA y resaltados",
      "required": false,
      "default": "#FF6B35"
    },
    {
      "key": "showBadge",
      "type": "boolean",
      "label": "Mostrar Insignia de Venta",
      "description": "Si mostrar la superposición de insignia de venta",
      "required": false,
      "default": false
    },
    {
      "key": "features",
      "type": "array",
      "label": "Características del Producto",
      "description": "Lista de puntos de características",
      "required": false,
      "default": ["Característica 1", "Característica 2", "Característica 3"]
    }
  ],
  "composition": {
    "scenes": [
      {
        "name": "hero",
        "duration": 15,
        "layers": [
          {
            "type": "image",
            "src": "{{productImage}}",
            "position": { "x": 540, "y": 400 },
            "size": { "width": 600, "height": 600 }
          },
          {
            "type": "text",
            "text": "{{productName}}",
            "style": { "fontSize": 48, "fontWeight": 700, "color": "#FFFFFF" },
            "position": { "x": 540, "y": 80 }
          },
          {
            "type": "text",
            "text": "${{price}}",
            "style": { "fontSize": 64, "fontWeight": 900, "color": "{{accentColor}}" },
            "position": { "x": 540, "y": 900 }
          }
        ]
      }
    ]
  }
}

Esta única plantilla puede generar miles de videos de productos únicos simplemente cambiando los valores de entrada en tiempo de renderizado – no se necesitan modificaciones de plantilla.


Escenas y Composición

El objeto composition es donde vive el contenido de tu video. Contiene un array scenes, y cada escena representa un segmento distinto del video con su propia duración, capas y transición.

{
  "composition": {
    "scenes": [
      {
        "name": "intro",
        "duration": 5,
        "transition": {
          "type": "fade",
          "duration": 1
        },
        "layers": [ ... ]
      },
      {
        "name": "main-content",
        "duration": 20,
        "transition": {
          "type": "slide",
          "duration": 0.5,
          "direction": "left"
        },
        "layers": [ ... ]
      },
      {
        "name": "outro",
        "duration": 5,
        "layers": [ ... ]
      }
    ]
  }
}

Campos de Escena

CampoTipoRequeridoDescripción
namestringNoIdentificador para la escena (para legibilidad y depuración)
durationnumberDuración de la escena en segundos
transitionobjectNoEfecto de transición al entrar a esta escena desde la anterior
layersarrayArray ordenado de objetos de capa renderizados de abajo hacia arriba

Las escenas se reproducen en secuencia. La duración total del video es la suma de todas las duraciones de escena (menos cualquier superposición de transición). Las capas dentro de una escena se renderizan en orden de array – la primera capa se encuentra en la parte inferior de la pila visual, y la última capa se encuentra en la parte superior.

Si no se especifica transición, la escena usa un cut duro por defecto.


Sistema de Capas

Rendervid admite ocho tipos distintos de capas. Cada tipo de capa sirve un propósito específico y acepta su propio conjunto de propiedades además de la configuración base compartida.

Propiedades Compartidas de Capas

Cada capa, independientemente del tipo, admite estas propiedades base:

{
  "position": { "x": 100, "y": 100 },
  "size": { "width": 500, "height": 200 },
  "rotation": 0,
  "scale": { "x": 1, "y": 1 },
  "anchor": { "x": 0.5, "y": 0.5 },
  "opacity": 1,
  "blendMode": "normal",
  "from": 0,
  "duration": -1,
  "filters": [],
  "style": {},
  "className": ""
}
PropiedadTipoPredeterminadoDescripción
positionobject{x: 0, y: 0}Coordenadas X/Y en píxeles
sizeobjectAncho y alto en píxeles
rotationnumber0Ángulo de rotación en grados
scaleobject{x: 1, y: 1}Multiplicador de escala para ejes X e Y
anchorobject{x: 0.5, y: 0.5}Punto de anclaje para transformaciones (rango 0-1, 0.5 = centro)
opacitynumber1Opacidad de la capa (0 = transparente, 1 = opaco)
blendModestring"normal"Modo de mezcla CSS para composición
fromnumber0Tiempo de inicio en segundos (relativo al inicio de la escena)
durationnumber-1Duración de la capa en segundos (-1 = duración completa de la escena)
filtersarray[]Array de objetos de filtro visual
styleobject{}Propiedades de estilo adicionales tipo CSS
classNamestring""Nombre de clase CSS para estilo personalizado

Los Ocho Tipos de Capas

  1. text – Renderiza texto estilizado con control completo sobre fuente, tamaño, color, alineación, altura de línea, espaciado de letras, sombras de texto y más. Admite la sintaxis {{variable}} para contenido dinámico.

  2. image – Muestra imágenes estáticas desde URLs o rutas locales. Admite recorte, modos de ajuste de objeto, radio de borde y filtros de imagen.

  3. video – Incrusta clips de video dentro de una escena. Admite recorte (inicio/fin), control de volumen, velocidad de reproducción, bucle y silencio.

  4. shape – Renderiza primitivas geométricas: rectángulos, círculos, elipses, líneas y polígonos. Admite relleno, trazo, radio de borde, gradientes y sombras.

  5. audio – Agrega pistas de audio a una escena. Admite volumen, fundido de entrada/salida, recorte y bucle. Las capas de audio no tienen representación visual.

  6. group – Una capa contenedora que contiene capas hijas. Los grupos te permiten aplicar transformaciones, animaciones y efectos a múltiples capas a la vez.

  7. lottie – Renderiza animaciones JSON de Lottie/Bodymovin. Admite velocidad de reproducción, bucle y control de segmento para reproducir rangos específicos de fotogramas.

  8. custom – Carga componentes personalizados registrados definidos en el campo customComponents. Úsalo para plantillas de capas reutilizables y parametrizadas.

Para configuración detallada de cada tipo de capa, incluyendo todas las propiedades disponibles y ejemplos de código, consulta la Referencia de Componentes de Rendervid .


Sistema de Animación

Rendervid incluye más de 40 preajustes de animación integrados organizados en cuatro categorías: entrada, salida, énfasis y fotograma clave. Las animaciones se adjuntan a cualquier capa y controlan cómo esa capa aparece, desaparece o se comporta durante su tiempo de vida.

Configuración de Animación

{
  "type": "text",
  "text": "Título Animado",
  "animations": [
    {
      "type": "entrance",
      "effect": "fadeInUp",
      "duration": 30,
      "delay": 10,
      "easing": "easeOutCubic",
      "loop": 0,
      "alternate": false
    }
  ]
}

Campos de Animación

CampoTipoPredeterminadoDescripción
typestringCategoría de animación: entrance, exit, emphasis, keyframe
effectstringNombre del preajuste (ej., fadeInUp, pulse, bounceOut)
durationnumber30Duración en fotogramas
delaynumber0Retardo antes de que comience la animación, en fotogramas
easingstring"ease"Nombre de función de suavizado
loopnumber0Número de bucles (0 = sin bucle, -1 = infinito)
alternatebooleanfalseInvertir dirección en bucles alternos

Animaciones de Entrada (20 preajustes)

Las animaciones de entrada controlan cómo aparece una capa en pantalla. Se ejecutan una vez cuando se alcanza el tiempo de inicio de la capa.

PreajusteDescripción
fadeInFundido de opacidad simple de 0 a 1
fadeInUpSe desvanece mientras se desliza hacia arriba
fadeInDownSe desvanece mientras se desliza hacia abajo
fadeInLeftSe desvanece mientras se desliza desde la izquierda
fadeInRightSe desvanece mientras se desliza desde la derecha
slideInUpSe desliza desde debajo del marco
slideInDownSe desliza desde arriba del marco
slideInLeftSe desliza desde el borde izquierdo
slideInRightSe desliza desde el borde derecho
scaleInEscala desde 0 hasta el tamaño completo
zoomInHace zoom desde una escala más pequeña con ligero exceso
rotateInRota a la posición desde un ángulo desplazado
bounceInRebota a la posición con exceso elástico
flipInXVolteo 3D en el eje X (volteo horizontal)
flipInYVolteo 3D en el eje Y (volteo vertical)
typewriterLos caracteres aparecen uno a la vez (capas de texto)
revealLeftRevelación de máscara deslizándose desde la izquierda
revealRightRevelación de máscara deslizándose desde la derecha
revealUpRevelación de máscara deslizándose hacia arriba
revealDownRevelación de máscara deslizándose hacia abajo

Animaciones de Salida (9 preajustes)

Las animaciones de salida controlan cómo desaparece una capa. Se ejecutan al final de la duración de la capa.

PreajusteDescripción
fadeOutFundido de opacidad simple de 1 a 0
slideOutUpSe desliza hacia afuera por la parte superior del marco
slideOutDownSe desliza hacia afuera por la parte inferior del marco
scaleOutEscala hacia abajo desde el tamaño completo a 0
zoomOutHace zoom hacia afuera a una escala más pequeña y se desvanece
rotateOutRota fuera de posición a un ángulo desplazado
bounceOutRebota hacia afuera con exceso elástico antes de desaparecer
flipOutXVolteo 3D hacia afuera en el eje X
flipOutYVolteo 3D hacia afuera en el eje Y

Animaciones de Énfasis (10 preajustes)

Las animaciones de énfasis llaman la atención sobre una capa mientras permanece visible. Funcionan bien con bucles.

PreajusteDescripción
pulsePulso de escala rítmico (crece y se encoge)
shakeSacudida horizontal rápida
bounceMovimiento de rebote vertical
swingRotación de balanceo tipo péndulo
wobbleBamboleo fuera de eje combinando rotación y traslación
flashDestellos de opacidad rápidos
rubberBandEfecto elástico de estiramiento y ajuste
heartbeatRitmo de latido de doble pulso
floatMovimiento suave de flotación arriba y abajo
spinRotación continua de 360 grados

Animaciones de Fotogramas Clave

Para control creativo completo, las animaciones de fotogramas clave te permiten definir cambios de propiedades personalizados fotograma por fotograma:

{
  "type": "keyframe",
  "keyframes": [
    { "frame": 0, "opacity": 0, "x": -100 },
    { "frame": 15, "opacity": 1, "x": 0 },
    { "frame": 30, "opacity": 1, "x": 0 },
    { "frame": 45, "opacity": 0, "x": 100 }
  ],
  "easing": "easeInOutCubic"
}

Las animaciones de fotogramas clave pueden animar cualquier propiedad numérica: opacity, x, y, rotation, scaleX, scaleY, y más. Cada fotograma clave especifica un número de fotograma y los valores de propiedad en ese fotograma. El renderizador interpola entre fotogramas clave usando la función de suavizado especificada.

Combinación de Animaciones

Una sola capa puede tener múltiples animaciones. Por ejemplo, una animación de entrada seguida de un bucle de énfasis, luego una animación de salida:

{
  "animations": [
    {
      "type": "entrance",
      "effect": "fadeInUp",
      "duration": 20,
      "easing": "easeOutCubic"
    },
    {
      "type": "emphasis",
      "effect": "pulse",
      "duration": 30,
      "delay": 20,
      "loop": -1
    },
    {
      "type": "exit",
      "effect": "fadeOut",
      "duration": 15,
      "easing": "easeInCubic"
    }
  ]
}

Funciones de Suavizado

Las funciones de suavizado controlan la velocidad de cambio durante una animación, determinando si el movimiento se siente lineal, suave, rebotante o elástico. Rendervid incluye más de 30 funciones de suavizado integradas.

Suavizado Básico

FunciónDescripción
linearVelocidad constante de principio a fin, sin aceleración
easeSuavizado tipo CSS predeterminado con aceleración y desaceleración suaves
easeInComienza lento, acelera hacia el final
easeOutComienza rápido, desacelera hacia el final
easeInOutAcelera en la primera mitad, desacelera en la segunda

Suavizado Cuadrático

FunciónDescripción
easeInQuadAceleración cuadrática (t^2)
easeOutQuadDesaceleración cuadrática
easeInOutQuadAceleración cuadrática luego desaceleración

Suavizado Cúbico

FunciónDescripción
easeInCubicAceleración cúbica (t^3) – más pronunciada que cuadrática
easeOutCubicDesaceleración cúbica – parada suave y de sensación natural
easeInOutCubicSuavizado cúbico de entrada y salida – el suavizado más comúnmente usado

Suavizado Cuártico

FunciónDescripción
easeInQuartAceleración cuártica (t^4)
easeOutQuartDesaceleración cuártica
easeInOutQuartSuavizado cuártico de entrada y salida

Suavizado Quíntico

FunciónDescripción
easeInQuintAceleración quíntica (t^5) – inicio muy pronunciado
easeOutQuintDesaceleración quíntica – parada muy pronunciada
easeInOutQuintSuavizado quíntico de entrada y salida

Suavizado Sinusoidal

FunciónDescripción
easeInSineAceleración basada en seno – la curva de suavizado más suave
easeOutSineDesaceleración basada en seno
easeInOutSineSuavizado basado en seno de entrada y salida

Suavizado Exponencial

FunciónDescripción
easeInExpoAceleración exponencial – casi plano luego pronunciado
easeOutExpoDesaceleración exponencial – pronunciado luego casi plano
easeInOutExpoSuavizado exponencial de entrada y salida

Suavizado Circular

FunciónDescripción
easeInCircCurva de aceleración circular
easeOutCircCurva de desaceleración circular
easeInOutCircSuavizado circular de entrada y salida

Suavizado Back

FunciónDescripción
easeInBackRetrocede ligeramente antes de acelerar hacia adelante (anticipación)
easeOutBackSe excede del objetivo luego se asienta de nuevo (exceso)
easeInOutBackAnticipación en entrada, exceso en salida

Suavizado Elástico

FunciónDescripción
easeInElasticBamboleo elástico en aceleración – enrollamiento tipo resorte
easeOutElasticBamboleo elástico en desaceleración – ajuste tipo resorte
easeInOutElasticElástico en ambos extremos

Suavizado de Rebote

FunciónDescripción
easeInBounceEfecto de rebote en entrada – como una pelota caída en reversa
easeOutBounceEfecto de rebote en salida – como una pelota golpeando el suelo
easeInOutBounceRebote en ambos extremos

Elegir el Suavizado Correcto

  • Elementos de UI y texto: easeOutCubic o easeOutQuart para entradas de sensación natural
  • Movimiento que llama la atención: easeOutElastic o easeOutBack para exceso juguetón
  • Bucle suave: easeInOutSine para movimiento continuo y suave
  • Revelaciones dramáticas: easeInExpo para construcciones, easeOutExpo para paradas rápidas
  • Simulación física: easeOutBounce para efectos tipo gravedad

Transiciones de Escena

Las transiciones controlan cómo fluye una escena a la siguiente. Rendervid proporciona 17 tipos de transición que van desde cortes simples hasta efectos 3D cinematográficos.

Configuración de Transición

{
  "name": "scene-two",
  "duration": 10,
  "transition": {
    "type": "fade",
    "duration": 1,
    "direction": "left"
  },
  "layers": [ ... ]
}

El objeto transition se coloca en la escena entrante (la escena a la que se está haciendo la transición). La propiedad direction se aplica solo a transiciones direccionales como slide, wipe y push.

Los 17 Tipos de Transición

TransiciónDescripción
cutCambio instantáneo sin efecto visual (predeterminado)
fadeFundido cruzado entre escenas – la escena saliente se desvanece mientras la escena entrante aparece
zoomHace zoom en la escena saliente mientras aparece la escena entrante
slideLa escena entrante se desliza sobre la escena saliente desde una dirección configurable (izquierda, derecha, arriba, abajo)
wipeUna limpieza de borde duro revela la escena entrante, moviéndose a través del marco en la dirección dada
pushLa escena entrante empuja la escena saliente fuera de la pantalla en la dirección especificada
rotateLa escena saliente rota alejándose mientras la escena entrante rota entrando
flipTransición de volteo 3D – el marco se voltea como una carta para revelar la siguiente escena
blurLa escena saliente se difumina mientras la escena entrante se enfoca
circleUna máscara circular se expande desde el centro (o un punto especificado) para revelar la siguiente escena
glitchEfecto de distorsión de falla digital con aberración cromática y desplazamiento
dissolveDisolución a nivel de píxel donde píxeles individuales hacen transición aleatoriamente entre escenas
cubeRotación de cubo 3D – las escenas están en caras adyacentes de un cubo giratorio
swirlDistorsión espiral que hace girar la escena saliente hacia la escena entrante
diagonal-wipeUna limpieza diagonal de borde duro moviéndose desde una esquina a la opuesta
irisIris circular que se abre o cierra como una apertura de cámara
crosszoomAmbas escenas hacen zoom simultáneamente – la saliente hace zoom hacia adentro, la entrante hace zoom hacia afuera

Ejemplos de Transición

Fundido cinematográfico con fundido cruzado largo:

{
  "transition": {
    "type": "fade",
    "duration": 2
  }
}

Deslizamiento desde la derecha (común para contenido secuencial):

{
  "transition": {
    "type": "slide",
    "duration": 0.5,
    "direction": "right"
  }
}

Rotación de cubo 3D (sensación dinámica y moderna):

{
  "transition": {
    "type": "cube",
    "duration": 1
  }
}

Efecto de falla (energético, orientado a tecnología):

{
  "transition": {
    "type": "glitch",
    "duration": 0.3
  }
}

Efectos Visuales

Las capas de Rendervid admiten una gama de efectos visuales a través de filtros, modos de mezcla, sombras y transformaciones.

Filtros

Los filtros se aplican mediante el array filters en cualquier capa. Cada filtro es un objeto con un type y value:

{
  "filters": [
    { "type": "blur", "value": 5 },
    { "type": "brightness", "value": 1.2 },
    { "type": "contrast", "value": 1.1 },
    { "type": "grayscale", "value": 0.5 },
    { "type": "saturate", "value": 1.5 }
  ]
}
FiltroRango de ValorDescripción
blur0+ (píxeles)Desenfoque gaussiano – valores más altos producen más desenfoque
brightness0+ (multiplicador)0 = negro, 1 = normal, 2 = brillo doble
contrast0+ (multiplicador)0 = gris, 1 = normal, 2 = contraste doble
grayscale0-10 = color completo, 1 = completamente desaturado
hue-rotate0-360 (grados)Rota colores alrededor de la rueda de colores
invert0-10 = normal, 1 = colores completamente invertidos
saturate0+ (multiplicador)0 = desaturado, 1 = normal, 2 = saturación doble
sepia0-10 = normal, 1 = tono sepia completo

Modos de Mezcla

La propiedad blendMode controla cómo se compone una capa con las capas debajo de ella:

{
  "type": "shape",
  "blendMode": "multiply",
  "opacity": 0.8
}

Modos de mezcla admitidos: normal, multiply, screen, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, hue, saturation, color, luminosity.

Sombras

Las capas de texto y forma admiten efectos de sombra a través de la propiedad style:

{
  "style": {
    "shadow": {
      "color": "rgba(0, 0, 0, 0.5)",
      "offsetX": 4,
      "offsetY": 4,
      "blur": 10
    }
  }
}

Combinación de Efectos

Los filtros, modos de mezcla, opacidad y sombras pueden combinarse en una sola capa para tratamientos visuales sofisticados:

{
  "type": "image",
  "src": "{{backgroundImage}}",
  "opacity": 0.7,
  "blendMode": "overlay",
  "filters": [
    { "type": "blur", "value": 3 },
    { "type": "brightness", "value": 0.8 }
  ],
  "style": {
    "shadow": {
      "color": "rgba(0, 0, 0, 0.3)",
      "offsetX": 0,
      "offsetY": 10,
      "blur": 20
    }
  }
}

Configuración de Fuentes

Rendervid admite tanto Google Fonts (más de 100 familias integradas) como fuentes personalizadas cargadas desde URLs externas.

Google Fonts

Declara Google Fonts en el array fonts.google:

{
  "fonts": {
    "google": [
      { "family": "Roboto", "weights": [400, 700] },
      { "family": "Open Sans", "weights": [300, 400, 600, 700] },
      { "family": "Montserrat", "weights": [400, 500, 700, 900] },
      { "family": "Playfair Display", "weights": [400, 700] }
    ]
  }
}

Cada objeto de fuente requiere:

CampoTipoDescripción
familystringNombre de familia de Google Font (coincidencia exacta requerida)
weightsarrayArray de pesos numéricos a cargar (100-900)

Pesos de fuente comunes: 100 (Thin), 200 (Extra Light), 300 (Light), 400 (Regular), 500 (Medium), 600 (Semi Bold), 700 (Bold), 800 (Extra Bold), 900 (Black).

Fuentes Personalizadas

Carga fuentes desde URLs externas usando el array fonts.custom:

{
  "fonts": {
    "custom": [
      {
        "family": "MyBrandFont",
        "src": "https://example.com/fonts/brand-font.woff2",
        "weight": 400,
        "style": "normal"
      },
      {
        "family": "MyBrandFont",
        "src": "https://example.com/fonts/brand-font-bold.woff2",
        "weight": 700,
        "style": "normal"
      }
    ]
  }
}

Formatos de fuente admitidos: WOFF2 (recomendado para el tamaño de archivo más pequeño), WOFF, TTF y OTF.

Uso de Fuentes en Capas

Referencia fuentes declaradas por nombre de familia en estilos de capa de texto:

{
  "type": "text",
  "text": "{{headline}}",
  "style": {
    "fontFamily": "Montserrat",
    "fontWeight": 700,
    "fontSize": 64,
    "color": "#FFFFFF"
  }
}

Rendervid incluye cadenas de respaldo de fuentes específicas de plataforma para garantizar un renderizado consistente en diferentes entornos. Si una fuente especificada no está disponible, el renderizador recurre a fuentes del sistema que coinciden con la misma clasificación (serif, sans-serif, monospace).


Formatos de Salida

Rendervid admite una amplia gama de formatos de salida y códecs para renderizado de video e imagen.

Formatos de Video

FormatoCódecExtensión de ArchivoMejor Para
MP4H.264.mp4Máxima compatibilidad – web, móvil, redes sociales
WebMVP8 / VP9.webmIncrustación web con tamaños de archivo más pequeños
MOVProRes.movFlujos de trabajo de edición profesional, calidad sin pérdida
GIF.gifAnimaciones cortas, compartir en redes sociales, correo electrónico
MP4H.265 / HEVC.mp4Dispositivos más nuevos, archivos 50% más pequeños que H.264 con la misma calidad
WebMAV1.webmCódec de próxima generación, mejor eficiencia de compresión

Formatos de Imagen

FormatoExtensión de ArchivoMejor Para
PNG.pngCalidad sin pérdida, soporte de transparencia
JPEG.jpgFotografías, tamaños de archivo más pequeños
WebP.webpWeb moderna, mejor equilibrio de calidad y tamaño

Preajustes de Calidad

PreajusteDescripción
draftRenderizado rápido con calidad reducida – ideal para previsualización
standardCalidad y tamaño de archivo equilibrados – bueno para la mayoría de los casos de uso
highMayor tasa de bits y calidad – para entregables finales
losslessMáxima calidad sin artefactos de compresión

Soporte de Resolución

Rendervid admite resoluciones desde miniaturas pequeñas hasta 8K:

ResoluciónDimensionesUso Común
SD640 x 480Miniaturas, vistas previas
HD1280 x 720Video web, correo electrónico
Full HD1920 x 1080YouTube, presentaciones
2K2560 x 1440Pantallas de alta calidad
4K UHD3840 x 2160Profesional, transmisión
8K7680 x 4320Resolución máxima, a prueba de futuro

Se admiten velocidades de fotogramas desde 1 fps (presentaciones de diapositivas) hasta 120 fps (cámara lenta, contenido de juegos). Las opciones comunes son 24 fps (cinematográfico), 30 fps (web/redes sociales) y 60 fps (movimiento suave).


Ejemplo Completo

Aquí está una plantilla completa de Rendervid que demuestra las características clave del sistema de plantillas trabajando juntas: entradas dinámicas, múltiples escenas con transiciones, composiciones en capas, animaciones con suavizado, fuentes y efectos visuales.

{
  "name": "tech-product-launch",
  "output": {
    "type": "video",
    "width": 1920,
    "height": 1080,
    "fps": 30,
    "duration": 20,
    "backgroundColor": "#0A0A0A"
  },
  "inputs": [
    {
      "key": "productName",
      "type": "string",
      "label": "Nombre del Producto",
      "required": true,
      "default": "ProductX"
    },
    {
      "key": "tagline",
      "type": "string",
      "label": "Lema",
      "required": true,
      "default": "El futuro está aquí."
    },
    {
      "key": "heroImage",
      "type": "url",
      "label": "Imagen Hero",
      "required": true
    },
    {
      "key": "primaryColor",
      "type": "color",
      "label": "Color Primario",
      "default": "#6C63FF"
    },
    {
      "key": "ctaText",
      "type": "string",
      "label": "Llamado a la Acción",
      "default": "Saber Más"
    }
  ],
  "fonts": {
    "google": [
      { "family": "Inter", "weights": [400, 600, 800] },
      { "family": "JetBrains Mono", "weights": [400] }
    ]
  },
  "composition": {
    "scenes": [
      {
        "name": "intro",
        "duration": 6,
        "layers": [
          {
            "type": "shape",
            "shape": "rectangle",
            "position": { "x": 960, "y": 540 },
            "size": { "width": 1920, "height": 1080 },
            "style": {
              "fill": "{{primaryColor}}",
              "opacity": 0.1
            }
          },
          {
            "type": "text",
            "text": "{{productName}}",
            "position": { "x": 960, "y": 400 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "Inter",
              "fontWeight": 800,
              "fontSize": 96,
              "color": "#FFFFFF",
              "textAlign": "center"
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "fadeInUp",
                "duration": 30,
                "delay": 15,
                "easing": "easeOutCubic"
              }
            ]
          },
          {
            "type": "text",
            "text": "{{tagline}}",
            "position": { "x": 960, "y": 520 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "Inter",
              "fontWeight": 400,
              "fontSize": 36,
              "color": "{{primaryColor}}",
              "textAlign": "center",
              "letterSpacing": 4
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "fadeIn",
                "duration": 25,
                "delay": 40,
                "easing": "easeOutSine"
              }
            ]
          },
          {
            "type": "shape",
            "shape": "rectangle",
            "position": { "x": 960, "y": 600 },
            "size": { "width": 80, "height": 3 },
            "style": {
              "fill": "{{primaryColor}}"
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "scaleIn",
                "duration": 20,
                "delay": 60,
                "easing": "easeOutQuart"
              }
            ]
          }
        ]
      },
      {
        "name": "product-showcase",
        "duration": 8,
        "transition": {
          "type": "slide",
          "duration": 0.8,
          "direction": "left"
        },
        "layers": [
          {
            "type": "image",
            "src": "{{heroImage}}",
            "position": { "x": 1200, "y": 540 },
            "size": { "width": 800, "height": 800 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "filters": [
              { "type": "brightness", "value": 1.1 },
              { "type": "contrast", "value": 1.05 }
            ],
            "animations": [
              {
                "type": "entrance",
                "effect": "zoomIn",
                "duration": 40,
                "easing": "easeOutBack"
              },
              {
                "type": "emphasis",
                "effect": "float",
                "duration": 120,
                "delay": 40,
                "loop": -1,
                "alternate": true
              }
            ]
          },
          {
            "type": "text",
            "text": "Introducing",
            "position": { "x": 400, "y": 350 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "JetBrains Mono",
              "fontSize": 18,
              "color": "{{primaryColor}}",
              "textTransform": "uppercase",
              "letterSpacing": 6
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "typewriter",
                "duration": 30,
                "delay": 10,
                "easing": "linear"
              }
            ]
          },
          {
            "type": "text",
            "text": "{{productName}}",
            "position": { "x": 400, "y": 430 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "Inter",
              "fontWeight": 800,
              "fontSize": 72,
              "color": "#FFFFFF"
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "revealLeft",
                "duration": 25,
                "delay": 20,
                "easing": "easeOutQuart"
              }
            ]
          },
          {
            "type": "text",
            "text": "{{tagline}}",
            "position": { "x": 400, "y": 520 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "Inter",
              "fontWeight": 400,
              "fontSize": 24,
              "color": "#CCCCCC",
              "lineHeight": 1.6
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "fadeInUp",
                "duration": 20,
                "delay": 40,
                "easing": "easeOutCubic"
              }
            ]
          }
        ]
      },
      {
        "name": "cta",
        "duration": 6,
        "transition": {
          "type": "fade",
          "duration": 1.2
        },
        "layers": [
          {
            "type": "shape",
            "shape": "rectangle",
            "position": { "x": 960, "y": 540 },
            "size": { "width": 1920, "height": 1080 },
            "style": {
              "fill": "{{primaryColor}}",
              "opacity": 0.15
            }
          },
          {
            "type": "text",
            "text": "{{productName}}",
            "position": { "x": 960, "y": 380 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "Inter",
              "fontWeight": 800,
              "fontSize": 80,
              "color": "#FFFFFF",
              "textAlign": "center"
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "bounceIn",
                "duration": 35,
                "easing": "easeOutElastic"
              }
            ]
          },
          {
            "type": "shape",
            "shape": "rectangle",
            "position": { "x": 960, "y": 550 },
            "size": { "width": 280, "height": 60 },
            "style": {
              "fill": "{{primaryColor}}",
              "borderRadius": 30
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "scaleIn",
                "duration": 25,
                "delay": 30,
                "easing": "easeOutBack"
              },
              {
                "type": "emphasis",
                "effect": "pulse",
                "duration": 60,
                "delay": 60,
                "loop": -1,
                "alternate": true
              }
            ]
          },
          {
            "type": "text",
            "text": "{{ctaText}}",
            "position": { "x": 960, "y": 550 },
            "anchor": { "x": 0.5, "y": 0.5 },
            "style": {
              "fontFamily": "Inter",
              "fontWeight": 600,
              "fontSize": 22,
              "color": "#FFFFFF",
              "textAlign": "center"
            },
            "animations": [
              {
                "type": "entrance",
                "effect": "fadeIn",
                "duration": 20,
                "delay": 40,
                "easing": "easeOutSine"
              }
            ]
          }
        ]
      }
    ]
  }
}

Esta plantilla crea un video de lanzamiento de producto de 20 segundos con tres escenas: una introducción tipográfica con animaciones de texto escalonadas, una exhibición de producto con una imagen flotante y efecto de máquina de escribir, y una escena de llamado a la acción de cierre con un botón pulsante. Todo el texto, colores e imágenes son impulsados por variables de plantilla, haciéndola completamente reutilizable.


Próximos Pasos

  • Referencia de Componentes de Capa – Inmersión profunda en cada uno de los 8 tipos de capas con documentación completa de propiedades y ejemplos
  • Integración de IA – Aprende cómo generar y manipular plantillas de Rendervid usando IA, incluyendo generación de plantillas impulsada por LLM y renderizado consciente del contenido
  • Guía de Implementación – Configura Rendervid para producción: renderizado del lado del servidor, implementación en la nube, procesamiento por lotes e integración de API

Preguntas frecuentes

¿Qué es el formato de plantilla de Rendervid?

Las plantillas de Rendervid son archivos JSON que definen la estructura, contenido, animaciones y configuración de salida de un video o imagen. Cada plantilla incluye una configuración de salida (dimensiones, fps, duración), definiciones de entrada para variables dinámicas, una composición con escenas y capas, y configuraciones opcionales de fuentes y componentes personalizados.

¿Cómo funcionan las variables de plantilla en Rendervid?

Las variables de plantilla usan la sintaxis {{nombreVariable}}. Defines las entradas en el array de inputs de la plantilla con una clave, tipo (string, number, boolean, color, url, array), etiqueta, descripción y valor predeterminado. En el momento del renderizado, estas variables se reemplazan con valores reales, haciendo las plantillas reutilizables y dinámicas.

¿Cuántos preajustes de animación tiene Rendervid?

Rendervid incluye más de 40 preajustes de animación integrados organizados en cuatro categorías: animaciones de entrada (fadeIn, slideIn, scaleIn, bounceIn, etc.), animaciones de salida (fadeOut, slideOut, zoomOut, etc.), animaciones de énfasis (pulse, shake, bounce, swing, heartbeat, etc.), y animaciones de fotogramas clave totalmente personalizables con más de 30 funciones de suavizado.

¿Qué transiciones de escena están disponibles?

Rendervid ofrece 17 tipos de transiciones de escena: cut, fade, zoom, slide, wipe, push, rotate, flip (3D), blur, circle, glitch, dissolve, cube (3D), swirl, diagonal-wipe, iris y crosszoom. Cada transición puede configurarse con parámetros de duración y dirección.

¿Qué formatos de salida admite Rendervid?

Rendervid admite múltiples formatos de salida incluyendo MP4 (H.264), WebM (VP8/VP9), MOV (ProRes), GIF para video, y PNG, JPEG, WebP para imágenes. También se admiten códecs avanzados como H.265/HEVC y AV1. La resolución llega hasta 8K (7680x4320) con velocidades de fotogramas de 1 a 120 fps.

¿Puedo usar fuentes personalizadas en plantillas de Rendervid?

Sí, Rendervid admite más de 100 fuentes de Google Fonts integradas y carga de fuentes personalizadas desde URLs en formatos WOFF2, WOFF, TTF y OTF. Puedes especificar pesos de fuente de 100 a 900 y configurar respaldos específicos de plataforma para compatibilidad entre entornos.

Permitanos construir su propio equipo de IA

Ayudamos a empresas como la suya a desarrollar chatbots inteligentes, servidores MCP, herramientas de IA u otros tipos de automatización con IA para reemplazar a humanos en tareas repetitivas de su organización.

Saber más

json2video-mcp
json2video-mcp

json2video-mcp

Integra FlowHunt con el servidor json2video-mcp para automatizar la generación programática de videos, gestionar plantillas personalizadas y conectar flujos de ...

5 min de lectura
AI Video Automation +3