remotion-engine
Configuration technique et workflows pour génération de vidéos animées programmatiques avec React/Remotion.
Quand l'utiliser (Trigger)
Déclenchement standard selon le contexte de l'écosystème Hermès.
Mode d'emploi (Usage)
Mode d'emploi standard via l'agent Hermès. Remotion Engine
Overview
Environnement pour créer des vidéos animées via du code React/Remotion. Permet vidéos data-driven, animations programmatiques, rendu server-side.
⚠️ Claude Code doit être authentifié (claude auth login ou API key) avant toute délégation d’installation. Sans auth, les commandes claude -p échouent.
When to Use
- Génération de vidéos programmatiques (data-driven, automatiques)
- Animations complexes (transitions, morphing, chronologies)
- Vidéos marketing, démos produit, tutoriels
- Motion design avec données variables
- Vidéos qui doivent être versionnées (git-friendly)
Ne PAS utiliser pour : vidéos simples (préférer manim-video), montage vidéo existant, streaming en direct.
Prérequis Techniques
Installation
node -v # ≥18.0 (v22+ recommandé)
pnpm create video@latest # → choisir "Blank" (ou npm init video@latest)
cd video-app && pnpm install # pnpm préféré sur VPS réseau lent
⚠️ pnpm préféré sur VPS/serveur lent — npm timeout fréquemment sur les réseaux à latence élevée. pnpm est plus résilient. Si npm uniquement disponible : npm install --prefer-offline.
Si pnpm utilisé : le warning ERR_PNPM_IGNORED_BUILDS (esbuild, etc.) est non-bloquant. Pour le résoudre : pnpm approve-builds puis sélectionner les builds à autoriser.
Structure Projet
remotion-project/
├── src/
│ ├── Root.tsx # Point d'entrée, registration compositions
│ ├── Video.tsx # Composition principale
│ ├── sequences/ # Séquences réutilisables
│ │ ├── Intro.tsx
│ │ ├── Scene1.tsx
│ │ └── Outro.tsx
│ ├── components/ # Composants animés
│ │ ├── AnimatedText.tsx
│ │ └── Transition.tsx
│ └── data/ # Props data-driven (JSON)
│ └── video-data.json
├── public/ # Assets statiques
├── package.json
└── remotion.config.ts
Commandes Clés
npm run start # Studio (hot reload, preview) → ajouter --port=3000 si reverse proxy
pnpm run start # Version pnpm (préférée sur VPS)
npx remotion render # Production render
pnpm exec remotion render # Version pnpm
npx remotion still # Image statique
npx remotion preview # Preview dans le navigateur
npx remotion lambda # Render cloud (optionnel)
Composition Template
import { AbsoluteFill, useVideoConfig, useCurrentFrame, spring, interpolate } from "remotion";
export const MonComposant: React.FC<{ texte: string }> = ({ texte }) => {
const frame = useCurrentFrame();
const { fps, durationInFrames } = useVideoConfig();
// Animation spring
const scale = spring({ frame, fps, config: { damping: 12 } });
// Interpolation
const opacity = interpolate(frame, [0, 30], [0, 1], { extrapolateRight: "clamp" });
return (
<AbsoluteFill style={{ backgroundColor: "#1a1a2e" }}>
<div style={{ transform: `scale(${scale})`, opacity }}>{texte}</div>
</AbsoluteFill>
);
};
Workflow Production
- Écrire les données dans
src/data/video-data.json - Développer composants dans
src/components/ - Tester avec
npm run start - Rendre avec
npx remotion render src/index.tsx ma-video out/video.mp4
Common Pitfalls
- Oubli de
useVideoConfig()→ composition se fige - Props non typées → erreurs runtime
- Assets pas dans
public/→ non trouvés au render - Pas de
.gitkeepdanspublic/→ dossier vide pas commité - npm timeout sur VPS réseau lent → utiliser pnpm à la place. Si npm seul :
npm install --prefer-offline --no-audit --no-fund - npx remotion render timeout → le premier render peut prendre 60s+ sur réseau lent. Attendre. Si timeout persiste,
node_modules/peut être corrompu →rm -rf node_modules && pnpm install - pnpm approve-builds warning → non-bloquant, mais
pnpm approve-buildsrésout le warning
Verification Checklist
- node ≥18 installé
-
npm run startlance le studio -
npx remotion renderproduit un .mp4 - Audio synchro si présent