使用 GPU 加速渲染
了解如何在 Remotion 渲染中啟用和使用 GPU 加速,包括支援的內容類型和各平台的設定方法
使用 GPU 加速渲染
Remotion 中某些類型的內容可以從可用的 GPU 中受益,以加速渲染。
受 GPU 加速的內容
以下類型的內容在 GPU 可用時渲染速度更快:
- WebGL 內容:Three.JS、Skia、P5.js、Mapbox 等
- CSS 背景漸層:
background-image: linear-gradient() - CSS 放射漸層:
background-image: radial-gradient() - 許多 2D Canvas 操作
不受 GPU 加速的內容
與大眾認知相反,以下內容不受 GPU 加速:
- Canvas 像素操作(
getImageData、putImageData等) - 此外,影片的編碼(encoding)過程目前也不使用 GPU 加速
預設行為
- 在 Remotion Studio 或 Remotion Player 中:如果 GPU 可用,預設應已啟用
- 在**無頭模式(headless mode)**下渲染:Chromium 預設禁用 GPU,導致渲染速度顯著下降
在渲染時使用 --gl 旗標啟用 GPU
使用 CLI 渲染時,透過 --gl 旗標指定 OpenGL 後端:
npx remotion render --gl=angle MyComposition out/video.mp4關於建議使用哪個 OpenGL 後端,請參閱 OpenGL 選項文件。
各 OpenGL 後端說明
| 後端 | 說明 | 適用場景 |
|---|---|---|
angle | 使用 ANGLE 轉換層 | 大多數情況的推薦選項 |
egl | 原生 EGL(Linux) | Linux 伺服器環境 |
swiftshader | 軟體渲染 | 無 GPU 環境的備選 |
vulkan | 實驗性 Vulkan 支援 | 現代 Linux 環境 |
伺服器端渲染的 GPU 設定
在伺服器上使用 GPU 渲染,請參閱雲端 GPU 使用範例。
使用 Node.js API
import { renderMedia } from '@remotion/renderer';
await renderMedia({
composition,
serveUrl: bundleLocation,
codec: 'h264',
outputLocation: 'out/video.mp4',
chromiumOptions: {
gl: 'angle', // 指定 OpenGL 後端
},
});使用 CLI
npx remotion render \
--gl=angle \
MyComposition \
out/video.mp4使用設定文件
// remotion.config.ts
import { Config } from '@remotion/cli/config';
Config.setChromiumOpenGlRenderer('angle');在 Docker 中使用 GPU
在 Docker 容器中啟用 GPU 渲染:
FROM remotion/base:latest
# 安裝 GPU 驅動(視您的 GPU 類型而定)
RUN apt-get install -y mesa-vulkan-drivers
# 設定環境變數
ENV REMOTION_GL=angle啟動 Docker 容器時,需要傳遞 GPU 存取權限:
# 對於 NVIDIA GPU
docker run --gpus all my-remotion-app
# 對於 Intel/AMD GPU(Linux)
docker run --device=/dev/dri my-remotion-app在 Lambda 上使用 GPU
AWS Lambda 沒有 GPU,因此無法在 Lambda 上使用 GPU 加速。
如果您的影片需要 GPU 加速(如 WebGL 內容),需要考慮其他渲染選項:
- 使用自訂伺服器
- 使用 Google Cloud Run(可能支援 GPU)
效能基準
以下是有無 GPU 加速的渲染速度對比(僅供參考,實際效果取決於內容類型):
| 內容類型 | 無 GPU | 有 GPU | 加速倍數 |
|---|---|---|---|
| WebGL(Three.js 場景) | 8x 實時 | 1.2x 實時 | ~6x |
| CSS 漸層動畫 | 3x 實時 | 0.8x 實時 | ~4x |
| 純文字/圖片 | 1x 實時 | 0.9x 實時 | ~1.1x |
分享您的使用心得
Remotion 團隊希望了解並記錄更多 GPU 使用的實際情況。如果您有相關發現,歡迎分享,他們會將其補充到文件中!