Remotion LabRemotion Lab
伺服器端渲染使用 GPU 加速渲染

使用 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 像素操作getImageDataputImageData 等)
  • 此外,影片的編碼(encoding)過程目前也不使用 GPU 加速

預設行為

  • Remotion StudioRemotion 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 內容),需要考慮其他渲染選項:

效能基準

以下是有無 GPU 加速的渲染速度對比(僅供參考,實際效果取決於內容類型):

內容類型無 GPU有 GPU加速倍數
WebGL(Three.js 場景)8x 實時1.2x 實時~6x
CSS 漸層動畫3x 實時0.8x 實時~4x
純文字/圖片1x 實時0.9x 實時~1.1x

分享您的使用心得

Remotion 團隊希望了解並記錄更多 GPU 使用的實際情況。如果您有相關發現,歡迎分享,他們會將其補充到文件中!

相關資源