Remotion LabRemotion Lab
渲染硬體加速渲染

硬體加速渲染

使用 GPU 硬體加速(VideoToolbox)加速 Remotion 的影片編碼過程,目前支援 macOS 上的 ProRes、H.264 和 H.265 格式。

硬體加速渲染

自 v4.0.228 起可用

什麼是硬體加速編碼

編碼是將一連串影像轉換為影片檔案的過程。除了渲染幀之外,編碼是製作影片所需的兩個步驟之一。

從 Remotion v4.0.228 起,Remotion 在某些情況下支援硬體加速編碼。由於編碼因平台和編碼器而異,目前只支援有限的場景。

目前支援的情況

條件說明
作業系統目前只支援 macOS
加速技術使用 VideoToolbox
ProRes自 v4.0.228 起支援
H.264自 v4.0.236 起支援
H.265自 v4.0.236 起支援

注意:Remotion Lambda 和 Cloud Run 不支援硬體加速,因為這些雲端服務不提供 GPU 硬體加速支援。

啟用硬體加速

hardwareAcceleration 選項有三個值:

  • "disabled"(預設):不使用硬體加速
  • "if-possible":如果可用則啟用硬體加速,不可用時自動回退到軟體編碼
  • "required":必須使用硬體加速,若不可用則渲染失敗

在 SSR API 中使用

renderMedia() 函式中使用 hardwareAcceleration 選項:

import { renderMedia, selectComposition } from "@remotion/renderer";
 
const composition = await selectComposition({
  serveUrl: "http://localhost:3000",
  id: "MyComp",
});
 
// 盡可能使用硬體加速
await renderMedia({
  composition,
  serveUrl: "http://localhost:3000",
  codec: "prores",
  outputLocation: "out/video.mov",
  inputProps: {},
  hardwareAcceleration: "if-possible",
});
// 必須使用硬體加速(失敗時報錯)
await renderMedia({
  composition,
  serveUrl: "http://localhost:3000",
  codec: "h264",
  outputLocation: "out/video.mp4",
  inputProps: {},
  hardwareAcceleration: "required",
});

在 CLI 中使用

使用 --hardware-acceleration 選項:

# ProRes 格式,盡可能使用硬體加速
npx remotion render MyComp \
  --codec prores \
  --hardware-acceleration if-possible
 
# H.264 格式,必須使用硬體加速
npx remotion render MyComp \
  --codec h264 \
  --hardware-acceleration required
 
# H.265 格式,盡可能使用硬體加速
npx remotion render MyComp \
  --codec h265 \
  --hardware-acceleration if-possible

在 Remotion Studio 中使用

在 Remotion Studio 渲染影片時,可以在「進階」(Advanced)標籤中設定硬體加速選項。

在設定檔中使用

import { Config } from "@remotion/cli/config";
 
Config.setHardwareAcceleration("if-possible");

控制檔案大小與品質

啟用硬體加速後,預設情況下檔案大小會顯著增大,可能是因為壓縮效率較軟體編碼低。

重要:CRF 選項與硬體加速編碼器不相容。請改用 --video-bitrate 旗標控制輸出品質和檔案大小。

我們發現,匯出 Full HD H.264 影片時,--video-bitrate=8M 可以達到與軟體編碼相近的檔案大小。

# 使用硬體加速並控制位元率
npx remotion render MyComp \
  --codec h264 \
  --hardware-acceleration if-possible \
  --video-bitrate=8M
 
# ProRes 格式的建議設定
npx remotion render MyComp \
  --codec prores \
  --hardware-acceleration if-possible \
  --video-bitrate=50M
await renderMedia({
  composition,
  serveUrl: "http://localhost:3000",
  codec: "h264",
  outputLocation: "out/video.mp4",
  hardwareAcceleration: "if-possible",
  videoBitrate: "8M", // 注意:不能同時設定 crf
});

確認是否正在使用硬體加速

開啟詳細日誌(verbose logging)執行渲染。如果正在使用硬體加速,你會看到類似以下的日誌訊息:

Encoder: prores_videotoolbox, hardware accelerated: true

注意:不要依賴這個日誌訊息的確切措辭來判斷是否使用了硬體加速,因為措辭可能隨版本更新而改變。

啟用詳細日誌的方法:

npx remotion render MyComp --log=verbose --hardware-acceleration if-possible

效能對比

以下是軟體編碼與硬體加速編碼的對比:

特性軟體編碼硬體加速
速度快(依硬體而定)
壓縮效率較低(預設設定)
檔案大小較小較大(需手動設定位元率)
支援平台所有平台目前只有 macOS
CRF 控制支援不支援(需用位元率)
雲端環境支援不支援

實際使用建議

本地開發快速預覽

硬體加速非常適合在本地開發時快速生成預覽影片:

npx remotion render MyComp \
  --codec h264 \
  --hardware-acceleration if-possible \
  --video-bitrate=4M \
  out/preview.mp4

生產環境渲染

在生產環境(雲端)中,硬體加速不可用,應使用軟體編碼並設定合適的 CRF:

# 生產環境:使用軟體編碼
npx remotion render MyComp \
  --codec h264 \
  --crf=18 \
  out/production.mp4

條件式使用

在本地 macOS 環境快速渲染,在其他環境回退到軟體編碼:

import { renderMedia, selectComposition } from "@remotion/renderer";
import os from "os";
 
const isMac = os.platform() === "darwin";
 
await renderMedia({
  composition,
  serveUrl: "http://localhost:3000",
  codec: "h264",
  outputLocation: "out/video.mp4",
  // 只在 Mac 上嘗試硬體加速
  hardwareAcceleration: isMac ? "if-possible" : "disabled",
  // 使用硬體加速時設定位元率,否則使用 CRF
  ...(isMac
    ? { videoBitrate: "8M" }
    : { crf: 18 }),
});

限制與已知問題

  1. 僅限 macOS:目前只有 macOS 系統支援 VideoToolbox 硬體加速
  2. 不支援 CRF:使用硬體加速時,必須改用 --video-bitrate 控制品質
  3. 雲端服務不支援:Remotion Lambda 和 Cloud Run 不支援硬體加速
  4. 預設檔案較大:硬體加速編碼的壓縮效率較低,需手動設定位元率

參見