影音的 Codec 與 Metadata

在正式使用 FFmpeg 工具前,我認為有必要先建立穩固的基礎概念,這樣能夠確保我們在後續操作時更加得心應手。為了達到這個目標,我們將從影音內容的主要資訊著手,仔細探討這些基本要素。通過系統性的了解,掌握這些資訊之間的相互關係和連動性,同時注意每個環節可能存在的特殊情況和需要特別留意的事項。

影視

1. 長寬 Height n’ Width

影片的長寬,通常跟解析度 (Resolution) 牽涉在一塊兒。控制畫面比例 (Ratio) 之外,也代表這個畫布上能用多少的像素點來呈現資料,越大也代表能做更精細。

圖片來源:iTECHTICS
2. 幀數 Frame Rate

幀數代表在一秒內有多少影格,最易懂的單位是 Frame Per Second (FPS),但也能使用 Hz 來表示。等時間內影格越多,代表之間的差異越短,肉眼就會覺得越流暢。所以認識玩遊戲的朋友,尤其玩 First Person Shooter (也簡稱 FPS) 可能都會聽到要 240 Hz 螢幕,來增加自己的遊玩優勢。

但單純的撥放影片,我們需要如此高的幀率嗎?研究的普遍說法認為,60 FPS 以上其實人類就感受不到太多的差異,甚至為了專注一些細節而忽略不重要的部分。所以常見到的錄影 FPS 為 30 跟 60,雖然理論上影格越多,貌似代表圖片檔案越多,但完全不會改變檔案大小。

3. 位元速率 Bit Rate

真正的檔案大小來自於 Bit Rate x Duration,常見單位是 kbps,但隨著畫質的進展,也開始不少 Mbps 的出現。而先前的寬高跟幀數都不影響檔案大小,卻是計算位元速率的指標。可以想像成在一秒內需要多少的資料來呈現畫面,如果太少你的畫面可能出現粉刺,太多反而可能產生晃動。那這個又該如何設置才是最好的呢?這邊建議看過就好,不如上網找個固定數值就好。

圖片來源:Youtube 影片規格建議

為什麼說網路上查詢就好,或者根據自己的習慣 (像我是用串流的低標準),因為這部分跟影片的編碼格式也有很大的關聯。在理論上的開端我們需要如此計算。

Bitrate = (Width × Height) × Colour Depth × FPS

我們事先計算畫布大小,若 4K 影片以 3840 x 2160 來計算有 8,294,400 的空位,採用 8bit 色彩深度還有 RGB 的 x3 個圖層,換算一下我們拿到 23.7 Mb,此時再乘上 30 FPS 我們的數字就爆表為 5.97 Gbps。但是根據 Adobe 的 [2] 這篇文章,我們看到 Low Frame Rate 其實只要大概 44 ~ 56 Mbps。這是因為如 H.265 編碼的壓縮過程,由於畫布很大,我們可能用 64×64 來切塊處理,然後再偷偷地減少關鍵幀,偷工減料之下就省很多。

所以說,不要記。但我還是特別拉出底層概念,來闡述目前三個屬性的相互關係。

4. 編碼 Codec

剛剛我們有介紹到比較新的 H.265 (.mp4),但在其之前還有 H.264 (.mp4) 跟 H.263 (.3gp)。再來還有由 Google 維護的 VP8 與 VP9 (.webm),開始支援極大的影片面積。作為後繼者的 AV1 橫空而出,除了面積之外還強調更細節的顏色深度。

音訊

1. 聲道 Channel

從發明留聲機開始,衍生出越來越多的錄音方式,都持續維持著單聲道 (Mono) 到 1931,但直到 1960 技術成熟後,模擬左右雙耳的立體聲 (Stereo) 才開始普及。後面我們總覺得不夠立體,所以增加一堆喇叭分散方向,組成四聲道 (Quadraphonic) 還有 5.1, 6.1, 7.1, 22.2 環繞音效。

但當然,普遍居家使用為立體聲道,尤其各式各樣的耳機。現在很多親民的藍芽耳機可能都強調環繞音效,但其實是透過數位轉換的方式,去打亂原始音效用以模擬空間感。

2. 位元速率 Bit Rate

同理於影片的傳輸,但有兩組數字可以記一下,包括 256 與 320 kbps,這兩個是 AAC 編碼最上層的兩筆數值。而如果你有買過 Hi-Res 音樂就會發現資訊量普遍高於這個數值,如 FLAC 從 1000 – 5000 kbps 都有可能,而 DSD 則跨躍到約 2.8 Mbps。這個時候問題又來了,資訊量越高代表音質越好?在相同編碼的情況下確實如此,但也無法超出編碼的規格上限。

3. 編碼 Codec

音訊的編碼可以簡便利用 Analog 與 Digital 分別代表 無損有損,而只要有混和到 Analog 就也算是無損,包含如 FLAC 與 DSD 這兩個常見的 Hi-Res 格式。

#有損
  • AAC

這是最為廣泛接受的技術之一,其作為 MP3 的後繼者,支援 48 個最高至 96 kHz 的全頻寬聲道,加上 16 個 120 Hz 的低頻聲道。主要副檔名為 .aac / .mp4 / .m4a

#無損
  • PCM

將類比轉換為數位的方式,依照訊號強度間距分段,還有進階形成 LPCM 即 .wav 所使用的規格。雖然學理上或多或少還是有些誤差,但在演算法的加持下誤差很小而被認作無損。這就像是許多的電子零件牽涉到 ADC 與 DAC 交換器的轉變。

圖片來源:The Music Telegraph
  • FLAC

FLAC 編碼由 PCM 做為底層來源,並經過壓縮,但是由於疊加的關係其 Bit Rate 維持較高,也有自己的對應容器 .flac 來封裝。

  • DSD

其錄製與聆聽條件相對苛刻許多,因此實際上並不普及。其用 1 bit 來表達所有的音訊,因此一般認為比 PCM 好,但其位元速率通常高達 2.8 Mbps 之高。

後話

這些設定幾乎都有所謂的大眾口味,但每個人的觀感並非相同。比如筆者本人就喜歡 30 FPS 用來減少 Bit Rate 需求來縮減大小,畢竟早期 Windows XP 時代玩遊戲 15 FPS 可是家常便飯,但同時也展現出科技的不斷更迭。

接者在了解以上主要資訊的基礎上,我們將透過 FFmpeg 的操作來深入探討這些話題。歡迎各位按照自己感興趣的議題選讀,我們下次再會啦!

參考

[1] 人眼的更新頻率 — National Institutes of Health
https://pmc.ncbi.nlm.nih.gov/articles/PMC4314649/

[2] What is Bitrate — Adobe
https://www.adobe.com/creativecloud/video/discover/bit-rate.html#

[3] Video Codecs — MDN Web Docs
https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Video_codecs#common_codecs

[4] Audio Codecs — MDN Web Docs
https://developer.mozilla.org/en-US/docs/Web/Media/Guides/Formats/Audio_codecs#common_codecs

額外閱讀

[1] Per-Title Encode Optimization — Netflex TechBlog
https://netflixtechblog.com/per-title-encode-optimization-7e99442b62a2

[2] What is Per-Title Encoding — IO River
https://www.ioriver.io/terms/per-title-encoding

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料