📊

Remotionデータドリブンビデオ — API/DBデータからビデオ自動生成

calculateMetadata + delayRenderで外部データを安全にビデオに注入するパターン

Remotionの最も強力な活用はデータ駆動のビデオ生成です。

calculateMetadata: Compositionのpropsに基づいてレンダリング前に非同期データをfetchします。API呼び出し結果に応じてビデオの長さ(durationInFrames)を動的に決定することも可能です。例: ニュース記事数によってビデオの長さが変わるニュースサマリービデオ。

getInputProps(): CLIやLambdaからレンダリングする際に外部データをJSONで渡す方法です。npx remotion render --props='{"productId": 123}'のように使用します。

delayRender() / continueRender(): コンポーネント内部で非同期処理(画像ロード、API呼び出し)が完了するまで該当フレームのスクリーンショットを遅延させます。この安全装置なしでは画像がロードされる前にスクリーンショットが撮られ空フレームがレンダリングされる可能性があります。

この3つを組み合わせると「DBから商品1000件を読み取りそれぞれ15秒のプロモーションビデオを自動生成」のようなパイプラインが可能になります。

動作フロー

1

CompositionにcalculateMetadata関数を接続しレンダリング前にAPI/DBからデータをfetch

2

fetch結果でpropsとdurationInFramesを動的に決定して返却

3

コンポーネントでdelayRender()を呼び出し非同期リソース(画像、フォント)ローディング開始

4

リソースロード完了後continueRender()を呼び出しフレームスクリーンショットを許可

5

CLIで--propsでJSONデータを注入、またはLambdaでinputPropsで渡して大量レンダリング

メリット

  • 完全自動化: データが変わればビデオが自動更新
  • 大量生成: 1000商品 = 1000ビデオ、手作業不要
  • delayRenderで非同期安全性を保証 → プロダクションでの空フレーム事故防止

デメリット

  • 外部API依存: APIダウン/変更時にレンダリング失敗 → エラーハンドリング必須
  • delayRenderタイムアウト: 30秒以内にcontinueRenderが呼ばれないとレンダリング中断

ユースケース

ECサイト: 商品DBから画像/価格/説明を読み取り商品別プロモーションビデオを自動生成 ニュースメディア: 記事APIからヘッドライン/画像を取得し1分ニュースサマリービデオ生成 ポートフォリオ: GitHub APIからコミット/PRデータを読み取り開発活動サマリービデオ生成