媒體檔案基本概念

德瑞克赫曼
Derek Herman
喬麥德利
Joe Medley

在本文中,您將瞭解媒體檔案的基本知識,例如容器的概念,以及一些可在串流中使用的轉碼器格式。此外,請稍微瞭解自動調整串流、位元率和解析度等主題,不過我們將在後續章節中進一步說明這些主題。

您可能會認為可以從攝影機擷取原始檔案,然後照原樣將其上傳至網路。事實上,YouTubeVimeo 等影片串流網站就這麼簡單,甚至提供直播功能。一般來說,您必須連接相機的 HDMI 通訊埠,然後透過擷取卡處理檔案。這些服務大幅簡化影片的處理及上傳程序,包括產生自動調整串流和各種解析度所需的許多檔案和資訊清單。還有許多其他複雜且複雜的要求 使自我託管程序有些許繁瑣。如果您關心使用者的使用者體驗,從自己網站上準備及放送影片 (可能是另外的媒體伺服器) 會比只上傳原始相機檔案來得複雜。

影片檔案有多種格式。相機隨附的格式通常是 .mov 檔案;如果相機具備良好的現代無鏡鏡頭,則會是 .mp4。不過,雖然 .mov 適合用於錄製,以及用於編輯和其他早期後製程序,但檔案大小表示不適合透過網路串流。此外,4K 格式的原始 .mp4 檔案大小,也會導致檔案在行動裝置上播放。由於瀏覽器支援不同的檔案格式,因此如果您打算支援自動調整串流,就需要建立多個最佳化檔案以及資訊清單。轉換檔案之前,您需要先瞭解檔案的幾項基本資訊及特性。

容器、轉碼器和串流

您在作業系統殼層中看到的檔案是「容器」,可透過副檔名 (.mp4.webm.ogg 等) 識別。容器存放一或多個「串流」。媒體檔案可包含任意數量的串流,這些格式比這裡說明的更多多。

本節稍後使用的範例檔案最多包含兩個串流:音訊串流和影片串流。在這篇文章中,您可能會遇到字幕和資料,這兩種資料都不在本文的討論範圍內。某些情況下,音訊和視訊串流會分開處理。您遇到的大多數檔案只會包含一個音訊串流和一個視訊串流。

在音訊和視訊串流中,實際資料會以轉碼器壓縮。「轉碼器」或轉碼器/解碼器是影片或音訊資料的壓縮格式。由於具有相同容器的檔案,其內容可以用不同的轉碼器進行編碼,因此容器和轉碼器之間的區別非常重要。

請參考下圖。左側是具有兩個串流的基本容器結構。右圖是單一 WebM 檔案結構的具體細節。

比較媒體檔案結構與虛構媒體檔案。
媒體檔案的一部分。

WebM 容器中的檔案可能比其他格式小很多,因此很適合行動版網站進行串流。很抱歉,並非所有瀏覽器都支援最新的容器和轉碼器。舉例來說,WebM 是專為網路打造的優質開放原始碼選項,但目前仍然提供支援。根據撰寫本文時的我可以使用,Safari 更不支援嵌入影片。不過,WebRTC 對 WebRTC 所用的 VP8 和 VP9 轉碼器提供部分支援。因此最佳做法是提供備用影片

轉碼器格式

許多檔案類型都支援在同一容器中使用多個轉碼器。可用的影片轉碼器音訊轉碼器完整清單會是整個網站。上述連結只提供 MDN 實用的網路功能清單。 以下列出目前偏好的檔案類型和轉碼器。只要點選檔案類型連結,即可查看支援這些檔案類型的瀏覽器。

檔案類型 影片轉碼器 音訊轉碼器
MP4 AV1AVC (H.264)*、VP9 AAC
WebM AV1VP9* VorbisOpus

* 表示偏好的影片轉碼器。

位元率和解析度

位元率是為直播進行一秒編碼時要採用的位元數量上限。用來為串流中的秒進行編碼的位元越多,可能的細節和擬真度越高。我們會在 Bitrate 中進一步說明這個概念。

「解析度」是指影片單一影格中的資訊量,以每個維度中的邏輯像素數量為準。我們會在「Resolution」中提供更多有關這個概念的資訊。

接下來,在媒體應用程式基本概念一節中,我們會說明如何使用 Shaka Packager 和 FFmpeg 這兩項指令列工具來檢查這些特性。