2026年9月4日 金曜日
AI時短ラボ
活用· 約8

Remotionで長い動画のレンダリングがクラッシュする──分割レンダとffmpeg無劣化連結で完走させる手順

Remotionで20分超・数万フレーム級の動画をレンダリングすると、ヘッドレスブラウザのメモリ枯渇で終盤にクラッシュすることがあります。concurrencyを絞る方法と、--framesで区間を分割レンダしてffmpegのconcatで無劣化連結する再開可能な手順を、22分動画を完走させた実体験から解説します。

Remotionで長い動画のレンダリングがクラッシュする──分割レンダとffmpeg無劣化連結で完走させる手順
執筆・編集:
目次

Remotion(Reactで動画を作るフレームワーク)で20分超・数万フレーム級の動画をレンダリングすると、途中でプロセスが落ちることがあります。原因の多くはヘッドレスブラウザのメモリ枯渇です。この記事では、①並列数(concurrency)を絞る、②フレーム区間を指定して分割レンダし、完走した区間だけ確定保存して再開可能にする、③最後にffmpegのconcatで再エンコードなしに連結する、という実践的な完走手順を説明します。

  • 長尺レンダのクラッシュはメモリ枯渇が主因。まず並列数を下げて様子を見る
  • それでも落ちるなら --frames で区間分割レンダ。完走した区間は確定保存し、落ちた区間だけやり直す
  • 連結はffmpegのconcat(-c copy)で無劣化。中間ファイルは必ず.mp4拡張子にする

なぜ長い動画だとクラッシュするのか

Remotionはヘッドレスブラウザ(画面を表示しないブラウザ)でコンポジションを描画し、フレームを書き出します。動画が長くなるほどレンダリング時間とメモリ使用量が積み上がり、並列で複数のフレームを描画している分、メモリ逼迫時にはプロセスごと落ちます。厄介なのは、終盤で落ちるとそこまでの処理がすべて無駄になる点です。対策は「メモリ消費を抑える」か「落ちても被害を区間内に閉じ込める」の二方向で、以下のA案・B案がそれぞれに対応します。

A案: まず並列数(concurrency)を絞る

Remotionのレンダリングは複数プロセスを並列で走らせます。公式ドキュメントによると、デフォルトはCPUスレッド数の半分です(ただし実装上は上限8のキャップがあり、正確には「スレッド数の半分と8の小さい方」。v4.0.474のソースで確認)。並列数を下げればピークメモリが下がるので、最初に試す価値があります。

npx remotion render MyComp out/video.mp4 --concurrency=2

レンダリング時間は延びますが、完走しないよりはるかにましです。ただし、動画そのものが長い場合はこれだけでは足りないことがあります。その場合はB案に進みます。

B案: フレーム区間を指定して分割レンダする

--frames オプションで「どのフレームからどのフレームまで」を指定してレンダリングできます(公式ドキュメント記載の機能です)。動画全体をいくつかの区間に割り、1区間ずつレンダリングします。

npx remotion render MyComp out/part_00.mp4 --frames=0-7999
npx remotion render MyComp out/part_01.mp4 --frames=8000-15999
# 以降も同様に続ける

この方式の要点は、完走した区間のファイルをその場で確定保存することです。途中でクラッシュしても、失うのは走っていた区間だけで、そこからやり直せば済みます。事実上の「再開可能なレンダリング」になります。

注意点がひとつ。中間ファイルの拡張子は必ず.mp4にしてください。Remotionは出力ファイル名の拡張子を検証するため、仮の名前のつもりで別の拡張子を付けるとエラーになります。

分割したファイルをffmpegで無劣化連結するには

区間ファイルがそろったら、ffmpegのconcat demuxer(複数ファイルを順番につなぐ機能)で連結します。まず連結リストのテキストファイルを作ります。

file 'part_00.mp4'
file 'part_01.mp4'

そして -c copy(再エンコードなしのストリームコピー)で連結します。

ffmpeg -f concat -i list.txt -c copy final.mp4

FFmpeg公式ドキュメントにあるとおり、-c copy はデコードも再エンコードもしないため高速で、画質の劣化がありません。同じコンポジションを同じ設定で書き出した区間ファイル同士なら、コーデックや解像度がそろっているのでこの方式が使えます。パスの書き方によっては -safe 0 オプションが必要になる場合があります。

22分動画で実際に完走させた記録

22分の解説動画をRemotionでレンダリングした際、終盤でのクラッシュが連発しました。何度もやり直す過程では、前の実行が本当に終わっているかの確認も欠かせません──pkillが黙って空振りし、孤児のchrome-headless-shellが残ったまま次のビルドを始めてしまうことがあるためです。8000フレームずつの分割レンダに切り替え、完走した区間だけ保存して落ちた区間をやり直す方式で完走させました。連結は再エンコードなしのconcatで行いましたが、継ぎ目は視聴上分かりませんでした。

この手順が効かないケース

  • クラッシュの閾値はマシンのメモリ量、コンポジションの内容(画像サイズ、エフェクトの重さ)、OSの状況に依存します。この記事の手順で必ず完走できるとは言えません
  • 分割の区間長に正解はありません。筆者の8000フレームは一例で、環境によって適切な値は変わります
  • concat連結は区間ファイル同士のコーデック・解像度・フレームレートがそろっていることが前提です。設定を変えて書き出した区間が混ざると失敗します(サンプルレートが揃わないまま連結すると尺が丸ごと壊れる実例
  • Remotionには有償のクラウドレンダリング(Lambda等)もあり、そちらで解決する選択肢もあります。本記事はローカル環境で完走させたい場合の手順です

Remotion・ffmpeg公式ドキュメント

シェア: ポスト はてブ

出典・参照資料

AIニュースの解説を動画でも

YouTubeでは注目ニュースの背景を解説し、Xでは新着記事をお知らせしています。

コメント

まだコメントはありません。最初のコメントを書いてみませんか?

AIについて聞きたいことはありますか?

質問箱で無料で受け付けています。回答は公開され、他の方の参考にもなります。

質問箱を見る →

新しい記事をメールで受け取る

AIの新しい発表を、出典付きで整理して届けます。

関連記事

ffmpegのエンコード指定を出力ファイル名より後ろに置くと効かない──96000Hzのまま連結して尺が43秒に化けた話の記事画像
活用08.14読了23

ffmpegのエンコード指定を出力ファイル名より後ろに置くと効かない──96000Hzのまま連結して尺が43秒に化けた話

出典 ─ ffmpeg Documentation -
Object.entries(true) は空配列を返す──設定JSONの型違いがエラーも警告も出さずに通り、起承転結インジケーターが4本分まるごと点灯しなかったの記事画像
活用08.14読了28

Object.entries(true) は空配列を返す──設定JSONの型違いがエラーも警告も出さずに通り、起承転結インジケーターが4本分まるごと点灯しなかった

出典 ─ Object.entries
RemotionのLoopはコンポジション絶対フレームで位相を計算する──カード内の動画クリップが登場した瞬間に終盤から再生される原因と直し方の記事画像
活用08.14読了31

RemotionのLoopはコンポジション絶対フレームで位相を計算する──カード内の動画クリップが登場した瞬間に終盤から再生される原因と直し方

出典 ─ <Loop> | Remotion公式ドキュ
pkillはレンダプロセスを取り逃す──chrome-headless-shellの孤児36個でWindowServerが73秒無応答になった記録の記事画像
活用08.14読了26

pkillはレンダプロセスを取り逃す──chrome-headless-shellの孤児36個でWindowServerが73秒無応答になった記録

出典 ─ Errors(セクション: pkill pattern matches the Claude Code process)
字数でテロップの行数を検査すると通り抜ける──inline-blockのチップと英単語の塊で、85字以内なのに3行になるの記事画像
活用08.14読了31

字数でテロップの行数を検査すると通り抜ける──inline-blockのチップと英単語の塊で、85字以内なのに3行になる

出典 ─ display - CSS | MDN
VOICEVOXの/audio_queryのmoras[]から口パクを作る──母音→口形状マップと、実wav尺へのratio補正が「?」で崩れる話の記事画像
活用08.14読了40

VOICEVOXの/audio_queryのmoras[]から口パクを作る──母音→口形状マップと、実wav尺へのratio補正が「?」で崩れる話

出典 ─ VOICEVOX ENGINE OSS AP
Replit Agent 使い方──AIでアプリ開発する方法【2026年】の記事画像
活用08.12読了8

Replit Agent 使い方──AIでアプリ開発する方法【2026年】

出典 ─ Serenities AI
AIでショート動画を作り続ける工程──固定する5つと、毎回変える3つの記事画像
活用08.14読了17

AIでショート動画を作り続ける工程──固定する5つと、毎回変える3つ

出典 ─ YouTube ショートの作成を始める -