影片格式與編碼指南
全面了解 Remotion 支援的影片格式與編解碼器,包括 H.264、H.265、VP8、VP9、AV1、ProRes 的比較,以及 CRF 品質設定、音訊編解碼器和檔案副檔名的對應關係。
編碼指南
由 FFmpeg 支援,Remotion 允許你設定各種編碼設定。本頁目的是幫助你了解這些設定,並幫助你選擇合適的設定。
選擇編解碼器
Remotion 支援 6 種影片編解碼器:h264(預設)、h265、vp8、vp9、av1 和 prores。雖然 H264 在大多數情況下都能很好地工作,但有時值得選擇不同的編解碼器。請參閱下表了解每種編解碼器的優缺點。
| 編解碼器 | 檔案副檔名 | 檔案大小 | 編碼時間 | 瀏覽器相容性 | 支援硬體加速 |
|---|---|---|---|---|---|
| H.264(又稱 MPEG-4) | .mp4、.mov 或 .mkv | 中等 | 非常快 | 非常好 | 否 |
| H.265(又稱 HEVC) | .mp4 或 .hevc | 中等 | 快 | 非常差 | 否 |
| VP8 | .webm | 小 | 慢 | 還可以 | 否 |
| VP9 | .webm | 非常小 | 非常慢 | 還可以 | 否 |
| AV1* | .mp4、.webm 或 .mkv | 非常小 | 非常慢 | 還可以 | 否 |
| ProRes | .mov | 大 | 快 | 無 | 在 macOS 上支援 |
AV1 在 Remotion Lambda 或 Linux ARM64 GNU 上不可用。AV1 可以實現非常小的檔案大小,但編碼速度明顯慢於 H.264 和 H.265。某些執行環境只附帶基本編解碼器以保持精簡,因此 Remotion Lambda 或 Linux ARM64 GNU 不提供 AV1 輸出。
你可以在設定檔中使用 Config.setCodec() 或使用 --codec CLI 標誌來設定編解碼器。硬體加速自 Remotion 4.0.228 起可用。
使用 CRF 設定控制品質
僅適用於
h264、h265、vp8、vp9和av1。
無論你最終使用哪種編解碼器,在檔案大小和影片品質之間始終存在取捨。你可以透過設定所謂的 CRF(恆定速率因子)來控制它。數字越低,品質越好;數字越高,檔案越小——當然品質會相應降低。
請注意:每種編解碼器都有自己可接受值的範圍和不同的預設值。因此,雖然 23 在 H264 影片上看起來非常好,但在 WebM 影片上看起來會很糟糕。使用此表格來確定使用哪個 CRF 值:
| 編解碼器 | 最低(最佳品質) | 最高(最佳壓縮) | 預設 |
|---|---|---|---|
| H264 | 1 | 51 | 18 |
| H265 | 0 | 51 | 23 |
| VP8 | 4 | 63 | 9 |
| VP9 | 0 | 63 | 28 |
| AV1 | 0 | 63 | 30 |
你可以在設定檔中使用 Config.setCrf() 函數或使用 --crf 命令列標誌來設定 CRF。
注意:如果你啟用硬體加速,則無法設定 CRF。
使用 --video-bitrate 和 --audio-bitrate 控制品質
使用以下選項來設定影片和音訊位元率:
- 在 Studio 中:在渲染對話方塊中設定影片和音訊位元率
- 在 CLI 中:使用
--video-bitrate和--audio-bitrate標誌 - 在 SSR、Lambda 和 Cloud Run API 中:使用
videoBitrate和audioBitrate選項
此選項與其他品質選項不相容。
使用 ProRes Profile 控制品質
僅適用於
prores編解碼器。
對於 ProRes,沒有 CRF 選項,但有可以使用 --prores-profile 標誌或 setProResProfile 設定檔選項設定的 profile。
| 值 | FFmpeg 設定 | 位元率 | 支援 Alpha 通道 |
|---|---|---|---|
"proxy" | 0 | ~45Mbps | 否 |
"light" | 1 | ~102Mbps | 否 |
"standard"(預設) | 2 | ~147Mbps | 否 |
"hq" | 3 | ~220Mbps | 否 |
"4444" | 4 | ~330Mbps | 是 |
"4444-xq" | 4 | ~500Mbps | 是 |
位元率越高,品質越高,檔案越大。
純音訊輸出
你可以將 mp3、wav 或 aac 作為編解碼器傳入。如果這樣做,將以相應格式輸出音訊檔案。品質設定將被忽略。
GIF
你也可以將影片渲染為 GIF。
音訊編解碼器
自 v3.3.42 起可用
使用 --audio-codec 標誌,你可以設定嵌入影片中的音訊格式。並非所有編解碼器和音訊編解碼器的組合都受支援,某些組合需要特定的檔案副檔名和容器格式。容器格式將根據檔案副檔名自動推導。
| 影片編解碼器 | 預設 | 支援的音訊編解碼器 | 可能的檔案副檔名 |
|---|---|---|---|
| h264 | ✅ aac | aac | .mp4(預設)、.mkv、.mov |
| pcm-16 | .mkv(預設)、.mov | ||
| mp3 | .mp4(預設)、.mkv、.mov | ||
| h264-ts | pcm-16 | .ts(預設) | |
| ✅ | aac | .ts(預設) | |
| aac | ✅ aac | aac | .aac(預設)、.3gp、.m4a、.m4b、.mpg、.mpeg |
| pcm-16 | .wav(預設) | ||
| h265 | ✅ aac | aac | .mp4(預設)、.mkv、.hevc |
| pcm-16 | .mkv(預設) | ||
| av1 | ✅ aac | aac | .mp4(預設)、.mkv |
| opus | .webm(預設)、.mkv | ||
| pcm-16 | .mkv(預設) | ||
| mp3 | ✅ mp3 | mp3 | .mp3(預設) |
| pcm-16 | .wav(預設) | ||
| prores* | aac | .mov(預設)、.mkv、.mxf | |
| ✅ pcm-16 | pcm-16 | .mov(預設)、.mkv、.mxf | |
| vp8 | ✅ opus | opus | .webm(預設) |
| pcm-16 | .mkv(預設) | ||
| vp9 | ✅ opus | opus | .webm(預設) |
| pcm-16 | .mkv(預設) | ||
| wav | ✅ pcm-16 | pcm-16 | .wav(預設) |
GIF 不支援音訊。
* 注意:在 v4.0.0 之前,ProRes 的預設音訊編解碼器是
aac。現在是pcm-16。
檔案副檔名
渲染媒體時指定檔案副檔名將決定預設編解碼器。只要組合在上表中受支援,你可以使用 --codec 覆寫編解碼器。
| 檔案副檔名 | 預設編解碼器 |
|---|---|
.3gp | aac |
.aac | aac |
.gif | gif |
.hevc | h265 |
.m4a | aac |
.m4b | aac |
.mkv | h264-mkv |
.mov | prores |
.mp3 | mp3 |
.mp4 | h264 |
.mpeg | aac |
.mpg | aac |
.mxf | prores |
.wav | wav |
.webm | vp8 |
.ts | h264-ts |
在設定檔中使用
// remotion.config.ts
import { Config } from '@remotion/cli/config';
// 設定編解碼器
Config.setCodec('h264');
// 設定 CRF 品質
Config.setCrf(18);
// 設定 ProRes profile
Config.setProResProfile('hq');
// 設定音訊編解碼器
Config.setAudioCodec('aac');在 CLI 中使用
# 使用 VP9 編解碼器渲染
npx remotion render src/index.ts MyComp out/video.webm --codec=vp9
# 設定 CRF 為 25
npx remotion render src/index.ts MyComp out/video.mp4 --crf=25
# 使用 H265 並設定高品質
npx remotion render src/index.ts MyComp out/video.mp4 --codec=h265 --crf=18
# 純音訊輸出
npx remotion render src/index.ts MyComp out/audio.mp3 --codec=mp3
# 設定影片和音訊位元率
npx remotion render src/index.ts MyComp out/video.mp4 --video-bitrate=5000k --audio-bitrate=128k