PTENES
MÓDULO 4.2

🛍️ Video de producto

Combina ken-burns para la imagen del producto, lower-third animado para nombre/precio, split-screen para comparar, stat-counter para números y end-card para el CTA — todo en una serie de 30–60 s.

6
Temas
45
Minutos
Avanzado
Nivel
Proyecto
Tipo
ken-burnszoom + pan + lower-thirdnombre + precio + split-screenantes/después + stat-counter4.8★ · 12k + end-cardCTA = video de producto 30–60 s · persuasivo
1

🎯 El proyecto y la estructura persuasiva

Los videos de producto siguen una estructura clásica de marketing: atención → interés → deseo → acción. En Remotion esto se traduce directamente en escenas: el ken-burns capta la atención, el lower-third despierta el interés, la comparación crea deseo y el end-card invita a la acción.

🛍️ Mapa de escenas del proyecto

0–90fHero: ken-burns en la imagen del producto, lower-third entra en el frame 30.
90–180fComparación: split-screen revela el antes y el después del producto.
180–270fPrueba social: stat-counter de reseñas y ventas.
270–360fCTA: end-card con URL, precio final y llamada a la acción.
Total
360 frames = 12 s
AIDA
Estructura persuasiva
Series
4 escenas en secuencia
Props
productName, price, img
2

📸 Escena de apertura — ken-burns

O ken-burns es la técnica de hacer zoom + pan suave en una imagen estática, creando movimiento cinematográfico sin cámara. En Remotion, simplemente se animan scale y translate con interpolate dentro de un contenedor con overflow: hidden.

Ken-burns con zoom y paneo ken-burns.tsx
const frame = useCurrentFrame();
const { durationInFrames } = useVideoConfig();

// zoom: 1.0 → 1.08 ao longo da cena
const scale = interpolate(
  frame, [0, durationInFrames],
  [1.0, 1.08],
  { extrapolateRight: "clamp" }
);
// pan: desloca 20px da esquerda para direita
const x = interpolate(
  frame, [0, durationInFrames],
  [0, -20],
  { extrapolateRight: "clamp" }
);

return <div style={{ overflow:"hidden", width:"100%", height:"100%" }}>
  <img src={src} style={{
    width: "100%", height: "100%", objectFit: "cover",
    transform: `scale(${scale}) translateX(${x}px)`
  }} />
</div>;

💡 Consejo: escala máxima 1.10

Un zoom por encima de 1.10 empieza a verse digital y artificial. Mantén el valor entre 1.03 y 1.10 para que el efecto parezca de una cámara real. Para el desplazamiento panorámico, 20–30 px en 90 frames es el punto ideal: se nota, pero no distrae.

Zoom
1.0 → 1.08
Pan
0 → -20px
overflow
hidden obligatorio
easing
linear suave
3

🏷️ Overlay — lower-third con nombre y precio

O lower-third es un overlay que aparece sobre el ken-burns; no es una escena separada en el Series, sino un Sequence dentro de la misma escena hero. Se desliza desde abajo, muestra el nombre y el precio, y opcionalmente sale antes de que termine la escena.

✓ Qué HACER

  • ✓Animar translateY de +80 → 0 en 20 frames (spring). Entrada rápida y firme.
  • ✓Usar un fondo semitransparente (rgba 0,0,0,0.6) para que el texto sea legible sobre cualquier foto.
  • ✓Iniciar con Sequence from={fps} da 1 s para que el espectador vea el producto antes del texto.

✗ Qué NO hacer

  • ✗Texto blanco sin fondo sobre una foto clara: ilegible según la foto del producto.
  • ✗Lower-third en el frame 0 — cubre el producto antes de que el espectador lo vea.
  • ✗Precio en fuente pequeña: en dispositivos móviles (redes sociales) necesita al menos 36px.
Entrada
spring de translateY
Delay
Sequence from=fps
Fondo
rgba 0,0,0,0.6
Posición
Inferior, tercio inferior
4

⚖️ Escena de comparación — split-screen

La escena de comparación usa split-screen.tsx para mostrar dos imágenes lado a lado, o image-comparison-slider.tsx para revelar progresivamente el «después» sobre el «antes». Ambas usan clip-path animado para controlar la división.

1

Frame 0–15: entrada de las dos imágenes

La imagen de la izquierda se desliza desde la izquierda y la de la derecha, desde la derecha; ambas con opacity 0→1. El espectador ve aparecer las dos al mismo tiempo.

2

Frame 15–60: línea divisoria animada

Una línea vertical blanca separa ambos lados. En el slider, se mueve del 30% al 70%, revelando progresivamente el «después».

3

Frame 60–90: aparecen las etiquetas

"Antes" y "Después" (o "Sin producto" / "Con producto") aparecen con spring, reforzando visualmente la comparación.

clip-path
inset(0 X% 0 0)
Slider
30% → 70% en 45f
Etiquetas
spring en el frame 60
Duración
90 frames (3 s)
5

📊 Prueba social — stat-counter

La escena de números usa stat-counter.tsx para animar contadores de 0 hasta el valor real del producto: reseñas, ventas, estrellas. El número «contando» capta la atención y hace que el dato sea más memorable que un texto estático.

Contador con easing stat-counter.tsx
const frame = useCurrentFrame();

const progress = interpolate(
  frame, [0, 60], [0, 1],
  { easing: Easing.out(Easing.cubic), extrapolateRight: "clamp" }
);

const value = Math.round(progress * targetValue);

// Exemplo: targetValue = 12847 (vendas)
// frame 0 → "0", frame 30 → "6.424", frame 60 → "12.847"

return <div>
  <span>{value.toLocaleString("pt-BR")}</span>
  <span className="text-sm"> vendas</span>
</div>;

📊 Datos recomendados para videos de productos

  • Evaluaciones: ⭐⭐⭐⭐⭐ 4.8/5 — efecto visual con estrellas que se rellenan
  • Volumen: "12.847 ventas" — una cifra grande impresiona
  • Satisfacción: "El 97 % lo recomienda" — el porcentaje se asimila rápido
  • Comparativa: "-40 % en comparación con la competencia" — ancla el precio
Math.round
progress × target
Easing.out
Cúbica — acelera al inicio
toLocaleString
Formato automático
60 frames
2 s para contar
6

📣 End-card y ritmo del video

O end-card es la última escena: presenta el logo, la URL, el precio final o el código QR. Todo lo que estaba repartido en las escenas anteriores converge aquí en un mensaje claro: "dónde comprar". El ritmo general del video debe acelerarse ligeramente hacia el end-card.

✓ End-card eficaz

  • ✓Logo centrado con spring: identidad final de la marca.
  • ✓URL o CTA en fuente grande y color contrastante.
  • ✓Duración de 90–120 fotogramas (3–4 s): tiempo para leer y actuar.

✗ End-card que no convierte

  • ✗Demasiada información al mismo tiempo: el espectador no sabe dónde mirar.
  • ✗Menos de 60 frames — no hay tiempo para asimilar la URL.
  • ✗El mismo fondo del video — la end card no se diferencia visualmente.
Logo
spring en la entrada
CTA
Fuente grande, contraste
Duración
90–120 frames
Fondo
A diferencia del video

🏁 Resumen del módulo

✓
Estructura AIDA — 4 escenas en Series siguiendo la lógica persuasiva.
✓
Ken-burns con overflow hidden — scale 1.0→1.08 + translateX sobre img con objectFit cover.
✓
Lower-third como overlay — Sequence inside de la escena, from=fps, translateY spring.
✓
Pantalla dividida mediante clip-path — inset animado para revelar el "después" progresivamente.
✓
Stat-counter con Easing.out — Math.round(progress × target) + toLocaleString.
✓
End-card limpio — logo + CTA + duración ≥ 90 frames para asimilar el contenido.

Próximo módulo:

4.3 — Data-Story: gráficos animados + stat-counter + comparación + narrativa de datos.