Remotion LabRemotion Lab
其他--gl 旗標

--gl 旗標

Remotion 渲染時可選的 OpenGL 後端旗標說明,包含 angle、egl、swiftshader、swangle 與 vulkan 的適用情境。

--gl 旗標

--gl 旗標用於指定 Remotion 渲染時所使用的 OpenGL 後端。不同的後端適用於不同的執行環境,選擇正確的後端可以解決許多渲染問題,也能提升效能。

可用的 OpenGL 後端

angle(預設)

ANGLE(Almost Native Graphics Layer Engine)是 Google 開發的 OpenGL ES 實作層,可以將 OpenGL ES 呼叫轉換為 DirectX(Windows)、Metal(macOS)或 OpenGL(Linux)。

適用情境:

  • macOS 和 Windows 的本機開發環境
  • 支援 GPU 加速的 Linux 系統
npx remotion render MyComp out/video.mp4 --gl=angle

egl

EGL 是 Khronos Group 定義的介面,作為 OpenGL ES 和原生視窗系統之間的橋樑。

適用情境:

  • 有 GPU 的 Linux 伺服器
  • 部分 CI/CD 環境
npx remotion render MyComp out/video.mp4 --gl=egl

swiftshader

SwiftShader 是完全以軟體實作的 OpenGL ES 渲染器,不需要 GPU。

適用情境:

  • 沒有 GPU 的伺服器(如大多數 Docker 容器)
  • CI/CD 管道
  • AWS Lambda 等無伺服器環境
npx remotion render MyComp out/video.mp4 --gl=swiftshader

注意: SwiftShader 比硬體加速慢,但兼容性最好。

swangle

SwANGLE 是 SwiftShader 與 ANGLE 的結合,透過 SwiftShader 作為 Vulkan 後端,再透過 ANGLE 提供 OpenGL ES 介面。

適用情境:

  • 需要更好的 WebGL 相容性但沒有 GPU 的環境
  • 某些 Linux 容器環境
npx remotion render MyComp out/video.mp4 --gl=swangle

vulkan

直接使用 Vulkan API 作為渲染後端。

適用情境:

  • 支援 Vulkan 的現代 Linux 系統
  • 高效能渲染需求
npx remotion render MyComp out/video.mp4 --gl=vulkan

透過程式碼設定

import { renderMedia } from "@remotion/renderer";
 
await renderMedia({
  composition,
  serveUrl,
  codec: "h264",
  outputLocation: "out/video.mp4",
  chromiumOptions: {
    gl: "swiftshader", // 指定 OpenGL 後端
  },
});

透過 remotion.config.ts 設定

import { Config } from "@remotion/cli/config";
 
Config.setChromiumOpenGlRenderer("swiftshader");

各環境推薦設定

環境推薦後端原因
macOS 本機angle(預設)最佳相容性與效能
Windows 本機angle(預設)利用 DirectX 加速
Linux(有 GPU)eglangle使用硬體加速
Linux(無 GPU)swiftshader純軟體渲染
Docker 容器swiftshaderswangle通常無 GPU
AWS Lambdaswangle推薦設定
GitHub Actionsswiftshader通常無 GPU

效能比較

渲染相同影片時的相對效能(數字越小越快):

後端相對渲染時間GPU 需求
angle + GPU1x(最快)需要
egl + GPU1.1x需要
vulkan1.2x需要
swangle3-5x不需要
swiftshader4-8x不需要

常見問題排查

WebGL 初始化失敗

Error: WebGL initialization failed

嘗試切換到 swiftshader

npx remotion render MyComp out/video.mp4 --gl=swiftshader

渲染結果出現黑色畫面

在 Linux 容器中可能因 GPU 不可用而出現黑色畫面:

npx remotion render MyComp out/video.mp4 --gl=swangle

GPU 驅動問題

若在有 GPU 的 Linux 機器上使用 angle 但遇到問題:

npx remotion render MyComp out/video.mp4 --gl=egl

小結

  • --gl 旗標控制 Chromium 使用的 OpenGL 渲染後端。
  • 本機開發通常使用預設的 angle
  • 無 GPU 的伺服器環境使用 swiftshaderswangle
  • AWS Lambda 官方推薦使用 swangle
  • 若渲染出現視覺問題,先嘗試切換後端。