瀏覽器渲染
關於在瀏覽器中使用 Remotion 渲染影片的常見問題,包含 WebCodecs API、客戶端渲染與伺服器端渲染的比較。
瀏覽器渲染
Remotion 可以在瀏覽器中渲染影片嗎?
可以,但有一些限制。Remotion 提供 @remotion/renderer 套件用於伺服器端渲染,同時也透過 @remotion/webcodecs 套件支援在瀏覽器中使用 WebCodecs API 進行客戶端渲染。
什麼是 WebCodecs API?
WebCodecs 是現代瀏覽器提供的原生 API,允許直接存取瀏覽器內建的影音編解碼器。Remotion 利用此 API 在瀏覽器中直接編碼影片,無需將資料傳送到伺服器。
主要優點包括:
- 不需要伺服器基礎設施即可渲染影片
- 渲染時資料不離開用戶裝置,隱私性更好
- 適合輕量級或互動式應用場景
WebCodecs 有哪些瀏覽器相容性限制?
WebCodecs API 目前支援的瀏覽器如下:
| 瀏覽器 | 支援狀況 |
|---|---|
| Chrome 94+ | 完整支援 |
| Edge 94+ | 完整支援 |
| Firefox | 部分支援(需開啟旗標) |
| Safari | 部分支援(macOS 13.4+) |
由於支援度不一致,建議在生產環境中部署前進行充分的跨瀏覽器測試。
客戶端渲染和伺服器端渲染有什麼差異?
客戶端渲染(WebCodecs):
- 直接在用戶瀏覽器中執行
- 不需要伺服器,適合個人工具或 SaaS 應用
- 受限於用戶裝置的硬體效能
- 適合短片或低解析度影片
- 渲染速度視裝置而定,可能較慢
伺服器端渲染(Node.js / Lambda):
- 在伺服器或雲端執行
- 可使用高效能 GPU 或多核心 CPU 加速
- 適合長片、高解析度或大量批次渲染
- 需要維護伺服器基礎設施
- 渲染速度更穩定且可預期
如何在瀏覽器中使用 Remotion 進行渲染?
安裝 @remotion/webcodecs 套件後,可以使用 renderMedia() 函式:
import { renderMedia } from "@remotion/webcodecs";
await renderMedia({
composition: myComposition,
durationInFrames: 150,
fps: 30,
width: 1280,
height: 720,
codec: "vp8",
});請注意,WebCodecs 渲染的可用編解碼器與伺服器端不同,通常支援 VP8、VP9 和 AVC(H.264)。
瀏覽器渲染適合用於生產環境嗎?
視情況而定。如果你的應用需要:
- 讓用戶在本地渲染個人影片
- 避免伺服器成本
- 保護用戶資料隱私
那麼客戶端渲染是合適的選擇。
但如果需要大量渲染、一致的品質保證或複雜的合成效果,建議仍使用伺服器端渲染方案(例如 Remotion Lambda)。
瀏覽器渲染的效能瓶頸在哪裡?
主要瓶頸包括:
- CPU / GPU 限制:用戶裝置的硬體直接決定渲染速度
- 記憶體限制:瀏覽器的記憶體配額有限,複雜合成可能超出限制
- 執行緒限制:JavaScript 單執行緒特性限制並行處理能力
- 編解碼器支援:並非所有格式在所有裝置上都有硬體加速
可以在 Web Worker 中進行渲染嗎?
@remotion/webcodecs 設計支援在 Web Worker 中執行,以避免阻塞主執行緒並提升應用響應性。這是建議的使用方式,特別是在需要同時維持 UI 互動的情境下。