軟體壓縮原理:為什麼有損壓縮

computer%20screen%20showing%20data%20visualization...
發表時間:2026 年 10 月 27 日 | 更新日期:2026 年 10 月 27 日 | 編輯:雅寶社區編輯團隊
軟體壓縮原理:為什麼有損壓縮 - 雅寶社區 · 頂客論壇

2-1 感知冗餘:眼睛與耳朵不是儀器

人類的視覺與聽覺系統,本質上是「經過演化最佳化的壓縮器」。視網膜的感光細胞分布並不均勻,中央黃斑部解析度極高,周邊視野則又模糊又遲鈍;大腦會自動用周邊資訊「腦補」細節。聽覺也是如此:人耳對 2 kHz 到 5 kHz 的語音頻段極為敏感,對 20 Hz 以下的低頻與 18 kHz 以上的高頻則幾乎無感;同時,一個大聲的音會「遮蔽」同時或稍後出現的小聲,這叫聽覺遮蔽效應。

換句話說,訊號裡有大量成分,人類感官根本收不到,或收到了也不會傳進意識層。有損壓縮的第一招,就是把這些「感知上不存在」的成分精準地丟掉。這不是隨便砍,而是靠感知模型(perceptual model)來決定哪些該留、哪些該丟。

2-2 率失真理論:品質與檔案大小的數學契約

有損壓縮有一個核心的理論框架,叫做率失真理論(Rate-Distortion Theory),同樣由夏農提出。它描述的是:在給定可接受的失真程度 D 之下,最少需要多少位元率 R 來編碼訊號。這條「率失真曲線」是所有有損編碼器的設計依據。

實務上,我們看到的「品質滑桿」或「位元率參數」就是在這條曲線上選點。往前推一點,檔案變小、失真變大;往後退一點,品質變好、檔案變大。所有有損壓縮的軟體,本質上都在幫你在這條曲線上找到平衡點。而不同編碼器的優劣,就在於誰能用更低的位元率達到同樣的失真——這正是 H.265 對比 H.264 能省下 50% 頻寬的原因。

三、三大有損壓縮技術的拆解:JPEG、MP3、視訊編碼

理論講完,來看實作。圖片、音訊、影片是三種最常見的有損壓縮場景,它們的技術路線各不相同,但都遵循同一個邏輯:變換 → 量化 → 熵編碼。差別在於「變換」用什麼數學工具,「量化」根據什麼感知模型。

3-1 JPEG:離散餘弦變換與量化表

JPEG 是 1992 年定案的靜態影像標準,至今仍是網路圖片的絕對主力。它的流程大致如下:先把圖片從 RGB 轉成 YCbCr 色彩空間(亮度與色度分離),接著對色度做次取樣——因為人眼對色彩細節的解析度遠低於亮度,色度可以只留一半甚至四分之一,這一步就砍掉大量資料。

然後把影像切成 8×8 像素的區塊,對每個區塊做離散餘弦變換(DCT),把空間域的像素值轉換成頻率域的係數。低頻係數代表大面積的亮度變化,高頻係數代表細節紋理。關鍵在於下一步:量化。JPEG 用一張「量化表」把每個頻率係數除以一個數值再四捨五入,高頻係數通常被除以很大的數,於是大量高頻係數直接變成 0。這一步是不可逆的,也是 JPEG 失真的主要來源。

最後,量化後的係數用霍夫曼編碼做無損壓縮。所以你看到的 JPEG 品質參數(例如 Photoshop 的 1 到 12 級),本質上就是在調整量化表的激進程度。品質設得太低,8×8 區塊的邊界會出現明顯的「方塊效應」(blocking artifact),高對比邊緣則會出現「 ringing」或蚊狀雜訊。

3-2 MP3 與 AAC:心理聲學模型與位元率分配

MP3 的壓縮邏輯與 JPEG 類似,但針對的是人耳。它先把音訊切成多個頻帶(子帶編碼),再對每個頻帶計算「遮蔽曲線」——判斷在這個頻帶裡,多大的訊號會被其他頻帶的聲音遮蔽而聽不見。凡是低於遮蔽閾值的訊號,直接視為 0。

接著,MP3 對每個頻帶做修正離散餘弦變換(MDCT),把時域波形轉成頻域係數,再根據心理聲學模型分配位元:聽覺敏感的頻帶給多一點位元,不敏感的頻帶給少一點。最後同樣做量化與霍夫曼編碼。

AAC(Advanced Audio Coding)是 MP3 的後繼者,被用在 YouTube、Apple Music、藍牙傳輸等場景。它改用更精細的濾波器組與更複雜的心理聲學模型,在同樣位元率下明顯優於 MP3。這也是為什麼 128 kbps 的 AAC 聽起來,往往比 128 kbps 的 MP3 乾淨得多。

3-3 H.264 / H.265:預測、變換與運動補償

影片壓縮是最複雜的一種,因為它同時要處理空間冗餘與時間冗餘。以 H.264 為例,它把每個畫格切成 16×16 的宏塊(macroblock),然後做兩件事:幀內預測(用同一張畫格中已編碼的鄰近區塊來預測當前區塊)與幀間預測(用前一張或後幾張畫格來預測,也就是運動補償)。

預測完之後,只把「預測誤差」做 DCT 變換與量化,最後再熵編碼。這種「只記錄差異」的策略,讓靜止背景幾乎不佔頻寬,把位元集中在真正有動作的區域。H.265(HEVC)進一步把宏塊擴大成 Coding Tree Unit,並增加更多預測模式,在相同畫質下可再省下約 40% 到 50% 的位元率。

四、有損與無損怎麼選?場景、格式與參數的實務判斷

理論歸理論,實際使用時,多數人的問題只有一個:我該用哪一種?以下用一張表格快速對照,再分場景說明。

比較項目

無損壓縮

有損壓縮

資料還原

可 100% 還原

不可還原,僅近似

壓縮率

通常 2 到 5 倍

可達 10 到 100 倍以上

常見格式

ZIP、7z、PNG、FLAC、ALAC

JPEG、WebP、MP3、AAC、H.264/265、AV1

適合場景

程式碼、文件、母帶、醫療影像

網頁圖片、串流影音、行動裝置儲存

反覆編輯

安全

會累積世代損失

4-1 圖片:網頁用有損,後製用無損

網頁圖片幾乎沒有懸念,應該用有損壓縮。一張 3000×2000 的產品照,用 JPEG 品質 80 壓縮後大約 500 KB,視覺上與原圖幾乎無異;若是存成 PNG,可能要 6 MB 以上。目前更推薦的是 WebP 或 AVIF,它們在相同主觀品質下比 JPEG 再小 30% 到 50%。

但如果你要繼續後製——調色、去背、合成——請務必保留無損母檔(RAW、PNG 或 TIFF)。有損格式每存一次就重新量化一次,細節會一層層剝落,這在專業修圖流程裡是難以接受的。

4-2 音訊:串流用有損,母帶用無損

音樂聆聽場景,AAC 256 kbps 或 Opus 160 kbps 已經能滿足絕大多數人與多數耳機。若是要存檔、混音、母帶處理,請用 FLAC 或 WAV 等無損格式。藍牙耳機受限於頻寬,通常傳輸的是 AAC 或 SBC 有損訊號,這也是為什麼高階藍牙耳機再貴,也很難完全追上同等級有線耳機的細節表現。

4-3 影片:幾乎一律有損,除非是剪輯工作流

影片的資料量太大,無損幾乎不現實。以 4K 30fps 來說,未壓縮的畫面一秒就要數 GB。實務上,拍攝階段用高碼率的 ProRes 或 RAW 記錄,剪輯階段用中高碼率的有損格式當工作檔,輸出階段再依平台選擇 H.264 或 H.265。YouTube 建議上傳 H.264 高位元率檔案,讓平台自己再轉檔;若是要存檔母帶,就保留原始拍攝格式。

五、軟體評測:實用壓縮與轉檔工具怎麼挑

知道原理之後,選工具就簡單了。以下針對圖片、音訊、影片三類,整理目前社群常用、且在雅寶社區討論度較高的軟體。

5-1 圖片壓縮工具

Squoosh(Google 出品,網頁版)最大的優點是「所見即所得」:左邊原圖、右邊壓縮結果,可以即時拖動品質滑桿並比較差異,還支援 MozJPEG、WebP、AVIF、OXI PN 等多種編碼器。對於想親眼驗證「有損到底損失了什麼」的人,這是最好的教學工具。

ImageOptim(macOS)與 FileOptimizer(Windows)則屬於「懶人批次處理」路線,會自動嘗試多種編碼器並保留最小結果。若你經營網站、需要大量處理商品圖,這類工具能省下可觀時間。

命令列派則可以考慮 cwebp、avifenc 與 mozjpeg,把它們串進建置流程,每次部署自動壓縮。這種做法在電商與媒體網站很常見,能確保圖片永遠以最佳格式輸出。

5-2 音訊轉檔工具

foobar2000 搭配 LAME 編碼器,是 Windows 上最經典的 MP3 轉檔組合;若要用 AAC,可以搭配 QAAC 或 FDK-AAC。Audacity 則是免費開源的音訊編輯器,內建多種匯出格式,適合做剪輯後再輸出。

講究一點的玩家會用 Exact Audio Copy(EAC)做 CD 擷取,確保讀取誤差為零,再交給編碼器壓縮。這個流程在發燒友圈行之有年,也是「有損壓縮前先把來源處理乾淨」的典範——來源品質差,再好的編碼器也救不回來。

5-3 影片轉檔工具

HandBrake 是免費跨平台影片轉檔的首選,內建 x264、x265、VP9、AV1 等編碼器,預設集(preset)設計得相當合理,新手可以直接選「Fast 1080p30」這類預設,進階使用者則能細調 CRF、preset、tune 等參數。

FFmpeg 是命令列王者,幾乎所有轉檔工具底層都是它。學會基本語法後,批次處理、自動化腳本、監控編碼進度都不是問題。例如 ffmpeg -i input.mp4 -c:v libx265 -crf 23 -preset medium output.mp4 這一行,就是一個完整的 H.265 有損壓縮指令。

至於剪映、DaVinci Resolve 這類剪輯軟體,輸出時也會經過有損編碼。記得在輸出設定裡把位元率調高一點,避免「剪完上傳才發現畫質變差」的憾事。

六、常見誤解與實務建議

有損壓縮的知識點不難,但實務上仍有幾個反覆出現的誤解,值得特別提醒。

6-1 誤解一:位元率高就一定好

位元率只是「每秒花多少資料」的指標,它不保證品質。同樣是 320 kbps,用一個設計不良的編碼器壓出來的檔案,可能還不如 192 kbps 的 AAC。真正決定品質的是編碼器效率與來源素材。另外,影片的 CRF(恒定品質)模式通常比固定位元率(CBR)更有效率,因為它會依畫面複雜度自動調整位元分配。

6-2 誤解二:反覆轉檔沒有差別

有損壓縮是不可逆的。你把 MP3 轉成 WAV 再轉回 MP3,聽起來好像沒差,但實際上每一次重新編碼都會再損失一層資訊,這稱為「世代損失」(generation loss)。實務上的鐵則是:永遠從最高品質的來源直接轉到目標格式,不要中途來回轉。如果你手上只有 MP3,就不要再把它轉成另一種有損格式,那只會讓品質更差。

6-3 實務建議:先想清楚用途,再選參數

最後給幾個具體建議。圖片方面,網頁用 JPEG 品質 75 到 85 或 WebP 品質 80,通常就能在檔案大小與視覺品質間取得平衡;若要更進一步,可以針對不同裝置輸出不同尺寸(響應式圖片),這比單純調高壓縮率有效得多。音訊方面,行動聆聽用 AAC 192 到 256 kbps 已足夠,串流平台多半也是這個區間。影片方面,H.264 的 CRF 18 到 23 是多數人的甜蜜點,H.265 則可以再往下調 2 到 4 級。

養成一個習慣:保留一份無損或高品質母檔,所有散布版本都從母檔轉出。這樣不論未來格式怎麼演進,你都不會被困在一個已經被壓爛的檔案裡。

七、結論:有損壓縮是工程與感知的協議

回到最初的問題:為什麼要有損壓縮?答案其實很樸素——因為人類的感官本來就不是精密儀器,而儲存與頻寬永遠是稀缺資源。有損壓縮並不是「偷工減料」,而是一場經過嚴謹計算的協議:我們同意丟掉某些訊號,換取幾十倍的成本下降,而交換的條件是「主觀感受不變」。

從夏農的率失真理論,到 JPEG 的量化表、MP3 的遮蔽曲線、H.265 的運動補償,這條技術路線走了超過半個世紀,至今仍在演進。AV1、VVC、以及新一代的神經網路壓縮,正在把這條曲線繼續往左下推。對一般使用者來說,理解原理的價值不在於自己寫編碼器,而在於做出更好的選擇:知道什麼時候該保留無損、什麼時候可以放心壓縮、以及哪些參數真正影響結果。

下次當你看到「檔案已壓縮,品質可能降低」的提示時,或許可以換個角度想:這不是損失,而是一場工程師與你大腦之間的默契。只要參數選得對,那場默契可以幾乎無聲無息地完成——而你只需要享受更小的檔案、更快的載入、更順的播放。這,就是有損壓縮真正的價值所在。

🏠 返回首頁