
Remotionのローカルレンダリングは1本の動画生成に数分かかる。AWS Lambdaを使った並列レンダリング(Remotion Lambda)を導入すれば、100本の動画を同時並列で処理でき、大量動画の量産に現実的な速度を実現できる。
Remotion Lambdaのアーキテクチャ
ローカル / サーバー
│
├── renderMediaOnLambda() 呼び出し
│ ↓
│ Lambda関数(オーケストレーター)
│ ↓
│ ┌─────────────────────┐
│ │ チャンク分割(並列処理) │
│ │ Lambda × N個 │
│ │ 各チャンクをレンダリング │
│ └─────────────────────┘
│ ↓
│ S3バケット(フレーム保存)
│ ↓
│ ffmpegで結合
│ ↓
└── S3に最終動画ファイルを保存
あなたの「作りたい」を叶えるAdobeの動画ツール
初心者からプロまで。目的に合わせて最適な制作方法が見つかります
1まずは無料で始めるなら Adobe Express
豊富なテンプレートとAI機能で、誰でも簡単に見栄えの良い動画が作れます。SNS投稿やショート動画の作成に最適。ブラウザやスマホアプリですぐに始められます。
2プロ品質を求めるなら テンプレート活用
「こんな動画が作りたい」というイメージに合うテンプレートを選ぶだけ。テキストや映像を差し替えるだけで、プロが作ったような動画が驚くほど手軽に完成します。
3本格的な編集に挑戦するなら Creative Cloud
テンプレートのカスタマイズや、ゼロからオリジナリティを追求するならプロ用ツールが最適。2つの代表的なアプリで、表現の幅は無限大に広がります。
- Premiere Pro: カット編集、テロップ、色調整など、動画編集の全てをこなす万能ツール。
- After Effects: VFXやモーショングラフィックスなど、映像をリッチに彩る特殊効果ツール。
これらを含む20以上のアプリが全て使えるコンプリートプランがおすすめです。
あなたの「作りたい」を叶えるAdobeの動画ツール
セットアップ手順
1. AWSの準備
# Remotion Lambdaに必要なIAMポリシーを作成
npx remotion lambda policies validate
# Lambda関数とS3バケットをデプロイ
npx remotion lambda functions deploy --memory=3009 --disk=10240 --timeout=120
# デプロイされた関数名を確認
npx remotion lambda functions ls
2. 環境変数の設定
# .env
REMOTION_AWS_ACCESS_KEY_ID=your-access-key
REMOTION_AWS_SECRET_ACCESS_KEY=your-secret-key
REMOTION_AWS_REGION=ap-northeast-1
REMOTION_LAMBDA_FUNCTION_NAME=remotion-render-3-3-82-mem3009mb-disk10240mb-120sec
REMOTION_S3_BUCKET=remotionlambda-apnortheast1-xxxx
3. Remotionサイトをデプロイ
# コンポジションをS3にデプロイ(バンドル化)
npx remotion lambda sites create --site-name=my-video-site
# 出力例
Site ID: my-video-site
Serve URL: https://remotionlambda-xxxx.s3.ap-northeast-1.amazonaws.com/sites/my-video-site/index.html
コードでrenderMediaOnLambdaを実装する
import { renderMediaOnLambda, getRenderProgress } from "@remotion/lambda/client";
const SITE_URL = process.env.REMOTION_SITE_URL!;
const FUNCTION_NAME = process.env.REMOTION_LAMBDA_FUNCTION_NAME!;
const REGION = "ap-northeast-1";
interface VideoInput {
id: string;
title: string;
subtitle: string;
backgroundColor: string;
}
async function renderVideoOnLambda(input: VideoInput): Promise {
// Lambda でレンダリング開始
const { renderId, bucketName } = await renderMediaOnLambda({
region: REGION,
functionName: FUNCTION_NAME,
serveUrl: SITE_URL,
composition: "MyComposition",
inputProps: {
title: input.title,
subtitle: input.subtitle,
backgroundColor: input.backgroundColor,
},
codec: "h264",
outName: `output-${input.id}.mp4`,
});
console.log(`レンダリング開始: renderId=${renderId}`);
// 完了まで待機
while (true) {
const progress = await getRenderProgress({
renderId,
bucketName,
functionName: FUNCTION_NAME,
region: REGION,
});
if (progress.done) {
console.log(`完了: ${progress.outputFile}`);
return progress.outputFile!;
}
if (progress.fatalErrorEncountered) {
throw new Error(`レンダリング失敗: ${progress.errors.join(", ")}`);
}
console.log(`進捗: ${Math.round(progress.overallProgress * 100)}%`);
await new Promise((resolve) => setTimeout(resolve, 2000));
}
}
大量動画を並列処理する
// 100本の動画を並列でレンダリング
async function renderBatch(inputs: VideoInput[]): Promise {
const CONCURRENCY = 20; // 同時実行数(Lambdaの同時実行制限に注意)
const results: string[] = [];
for (let i = 0; i < inputs.length; i += CONCURRENCY) {
const chunk = inputs.slice(i, i + CONCURRENCY);
console.log(`バッチ ${Math.floor(i / CONCURRENCY) + 1}: ${chunk.length}本を並列処理`);
const chunkResults = await Promise.all(
chunk.map((input) => renderVideoOnLambda(input))
);
results.push(...chunkResults);
}
return results;
}
// 実行例
const videoInputs: VideoInput[] = Array.from({ length: 50 }, (_, i) => ({
id: `video-${i + 1}`,
title: `商品紹介 #${i + 1}`,
subtitle: "詳細はリンクから",
backgroundColor: ["#FF6B6B", "#4ECDC4", "#45B7D1"][i % 3],
}));
renderBatch(videoInputs).then((urls) => {
console.log(`${urls.length}本の動画が完成しました`);
urls.forEach((url, i) => console.log(`${i + 1}: ${url}`));
});
コスト最適化
| 設定 | 値 | 目安コスト(1本60秒) |
|---|---|---|
| メモリ1769MB・30fps | デフォルト | 約$0.04 |
| メモリ3009MB・30fps | 高速 | 約$0.07 |
| メモリ3009MB・Concurrency10 | 並列分割 | 約$0.04(速度は2倍) |
// concurrencyPerLambdaで1つのLambda内の並列度を調整
const { renderId } = await renderMediaOnLambda({
// ...
concurrencyPerLambda: 10, // フレームの並列処理数(デフォルト: 1)
framesPerLambda: 20, // 1つのLambdaが担当するフレーム数
});
まとめ
Remotion Lambdaを使えば、ECサイトの商品紹介動画100本や、不動産の物件紹介動画など、データドリブンな大量動画生成が現実的なコストで実現できる。初期セットアップに1〜2時間かかるが、一度整備すれば動画制作のスケールが大幅に変わる。
あなたの「作りたい」を叶えるAdobeの動画ツール
初心者からプロまで。目的に合わせて最適な制作方法が見つかります
1まずは無料で始めるなら Adobe Express
豊富なテンプレートとAI機能で、誰でも簡単に見栄えの良い動画が作れます。SNS投稿やショート動画の作成に最適。ブラウザやスマホアプリですぐに始められます。
2プロ品質を求めるなら テンプレート活用
「こんな動画が作りたい」というイメージに合うテンプレートを選ぶだけ。テキストや映像を差し替えるだけで、プロが作ったような動画が驚くほど手軽に完成します。
3本格的な編集に挑戦するなら Creative Cloud
テンプレートのカスタマイズや、ゼロからオリジナリティを追求するならプロ用ツールが最適。2つの代表的なアプリで、表現の幅は無限大に広がります。
- Premiere Pro: カット編集、テロップ、色調整など、動画編集の全てをこなす万能ツール。
- After Effects: VFXやモーショングラフィックスなど、映像をリッチに彩る特殊効果ツール。
これらを含む20以上のアプリが全て使えるコンプリートプランがおすすめです。



