暫存目錄
Remotion 渲染過程中使用的暫存目錄說明、設定方式與清理策略。
暫存目錄
Remotion 在渲染影片時,需要將中間產物(如各幀截圖)寫入磁碟。這些暫時性的檔案會存放在「暫存目錄」中。了解暫存目錄的運作方式,有助於管理磁碟空間與排查渲染問題。
暫存目錄的用途
在渲染過程中,Remotion 會在暫存目錄中存放:
- 各幀的截圖:每一幀渲染完成後,會先存成 PNG 或 JPEG 圖片。
- 音訊片段:從影片素材中提取的音訊資料。
- 打包後的資產:webpack 打包的臨時輸出。
- Chromium 使用者資料:Chromium 實例的暫時設定檔。
預設暫存目錄位置
Remotion 預設使用作業系統的暫存目錄:
| 作業系統 | 預設路徑 |
|---|---|
| macOS / Linux | /tmp/remotion_* |
| Windows | %TEMP%\remotion_* |
每次渲染會建立一個帶有唯一識別碼的子目錄,例如 /tmp/remotion_render_abc123/。
自訂暫存目錄
方法一:環境變數
設定 REMOTION_CACHE_DIR 環境變數:
REMOTION_CACHE_DIR=/data/remotion-cache npx remotion render MyComp out/video.mp4方法二:CLI 選項
npx remotion render MyComp out/video.mp4 --temp-dir=/data/remotion-temp方法三:程式碼設定
import { renderMedia } from "@remotion/renderer";
await renderMedia({
composition,
serveUrl,
codec: "h264",
outputLocation: "out/video.mp4",
// 指定暫存目錄
offthreadVideoCacheSizeInBytes: 512 * 1024 * 1024, // 512MB 快取上限
});磁碟空間估算
暫存目錄所需的磁碟空間取決於影片長度與解析度:
所需空間 ≈ 總幀數 × 每幀大小
範例(1920×1080,PNG 格式):
- 每幀約 2-5 MB
- 300 幀(10 秒,30fps)× 3MB = 約 900MB
建議在渲染長片之前確認磁碟空間充足。在 AWS Lambda 等環境中,/tmp 分區通常有 512MB 的上限,需特別留意。
Lambda 環境的限制
在 AWS Lambda 中執行 Remotion 渲染時,/tmp 目錄的空間有限制(目前上限為 10GB,但預設只有 512MB)。可以在 Lambda 設定中增加 /tmp 的大小:
// AWS CDK 範例
const fn = new lambda.Function(this, "RenderFunction", {
ephemeralStorageSize: cdk.Size.gibibytes(2), // 增加到 2GB
});渲染後的清理
Remotion 在渲染完成後,不會自動清理暫存目錄。你需要自行清理,以避免磁碟空間耗盡。
手動清理
# 刪除所有 Remotion 暫存目錄
rm -rf /tmp/remotion_*程式碼清理
import { renderMedia } from "@remotion/renderer";
import { rm } from "fs/promises";
import path from "path";
import os from "os";
const tempDir = path.join(os.tmpdir(), `remotion_${Date.now()}`);
try {
await renderMedia({
composition,
serveUrl,
codec: "h264",
outputLocation: "out/video.mp4",
});
} finally {
// 無論成功或失敗,都清理暫存目錄
await rm(tempDir, { recursive: true, force: true });
}排程清理
在伺服器上可以設定定期清理任務:
# 每天凌晨 2 點清理超過 24 小時的 Remotion 暫存目錄
0 2 * * * find /tmp -name "remotion_*" -mtime +1 -exec rm -rf {} +偵錯:保留暫存目錄
在排查渲染問題時,有時需要檢查暫存目錄中的內容:
# 加入 --keep-browser-open 旗標後,渲染失敗時暫存目錄不會被刪除
npx remotion render MyComp out/video.mp4 --log=verbose渲染失敗後,可以找到對應的暫存目錄,查看失敗幀的截圖,協助診斷問題。
小結
- Remotion 渲染時會在
/tmp建立暫存目錄存放幀截圖與音訊片段。 - 可透過環境變數或 CLI 選項自訂暫存目錄位置。
- Lambda 等環境需注意
/tmp空間限制。 - 渲染完成後需手動清理暫存目錄,建議使用
finally區塊確保清理執行。