若要支援多種瀏覽器,需使用 FFmpeg 將 .mov
檔案轉換為兩個不同的容器:MP4 容器和 WebM 容器。實際上,您可能會同時指定轉碼器。目前,讓我們讓 FFmpeg 使用預設值
如果您不熟悉這些概念,請先詳閱「媒體檔案基本資訊」,再繼續操作。此外,如果您尚未安裝 FFmpeg,請參閱媒體應用程式基本資訊,開始使用 Docker 進行設定。
我們使用的是建議的 Docker 安裝作業,以及準備網頁版媒體檔案至 media
目錄內的 glocken.mov 檔案。我們針對本節中的所有指令使用 FFmpeg 4.3.2 版。
容器
首先,我們必須從 .mov
檔案,建立含有 .mp4
和 .webm
副檔名的兩個容器,且該檔案同時包含音訊和影片串流。如要進一步瞭解容器和串流,請參閱「媒體檔案基本概念」一文。
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
WebM
/media # ffmpeg -i glocken.mov glocken.webm
WebM 的建立時間超過 MP4。看到結果時,您看來不出乎意料MP4 壓縮為原始檔案大小的約 83%
時,WebM 低於原始檔案大小的 78%
,但可能比原始檔案大小高出許多。實際結果可能會有差異。請務必留意,FFmpeg 4.2.2
將預設影片位元率設為 200k
,而在 4.3.2
中則不會設定預設位元率。因此該影片不再是只有4%
原始內容。您可以在媒體檔案所在的資料夾中使用 ls -a
bash 指令,自行查看這項資訊。
例如:
/media # ls -l
-rw-r--r-- 1 root root 12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root root 10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root root 9503301 Mar 7 18:30 glocken.webm
如要取得極小的檔案,請改為:
/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame= 300 fps=3.6 q=0.0 Lsize= 483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root root 12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root root 10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root root 494497 Mar 7 18:45 glocken.webm
檢查作業
如要驗證結果,請使用如「媒體應用程式基本概念」一文所示的 FFmpeg 和 Shaka Packager:
/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4
轉碼器
接下來,轉碼器。如媒體檔案基本概念中所述,轉碼器與容器 (檔案類型) 不同。相同容器類型的兩個檔案可能會存放使用不同轉碼器壓縮的資料。例如 WebM 格式允許使用 Vorbis 或 Opus 編碼音訊。如要變更編碼器,我們使用 FFmpeg例如,這個指令會輸出含有 vorbis
音訊轉碼器和 av1
影片轉碼器的 .mkv
檔案。
/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv
在這個範例中,-c:a
旗標和 -c:v
分別用於指定音訊和影片轉碼器。
「媒體轉換」頁面會列出轉換轉碼器所需的指令。下表匯總了 FFmpeg 使用的程式庫,用於執行 WebM 和 MP4 檔案的轉碼器轉換。以下是分別建議用於 DASH 和 HLS 的格式。
影片
編碼器 | 延伸 | 媒體庫 |
---|---|---|
av1 | WebM、mkv | libaom-av1 |
h264 | MP4 | libx264 |
vp9 | WebM | libvpx-vp9 |
音訊
編碼器 | 延伸 | 媒體庫 |
---|---|---|
亞太地區 | MP4 | 亞太地區 |
空瓶座 | WebM | Libopus |
Vorbis | WebM | libvorbis |
接下來,我們會說明如何變更新建檔案的位元率。