無需上傳, 100% 本機處理, 無需帳戶

文章

為什麼 GIF 檔案這麼大

一個三秒鐘的動態 GIF,體積常常比涵蓋同一段畫面、完整一分鐘的 MP4 影片還大,這讓習慣把影片當成「比較重的格式」的人感到意外。GIF 從來就不是為了有效率地儲存動態畫面而設計的;它是一種 1987 年出現、剛好支援一連串畫面的影像格式,背後每一個設計選擇,都比現代影片壓縮技術早了幾十年。

GIF 是一連串影像,不是一段影片串流

圖形交換格式(Graphics Interchange Format),由 CompuServe 於 1987 年推出,1989 年修訂為 GIF89a,把動畫儲存成一系列依序播放的獨立畫面,每一格都是各自壓縮的靜態影像。像 H.264 這樣真正的影片編碼技術,則是把大多數畫面編碼成和前一格的差異,因為連續的影片畫面通常非常相似,只儲存改變的部分。GIF 沒有對應的機制:即使畫面大部分靜止不動,每一格仍然要重新儲存大部分內容。

示意圖對比:GIF 每一格都儲存一張完整獨立的影像,影片編碼則把大多數畫面儲存為與前一格的差異

256 色,不管來源需不需要

GIF 把每一格都限制在最多 256 色的調色盤內,從照片或影片實際涵蓋的、豐富得多的色彩範圍中挑選。有平滑漸層和光線變化的螢幕錄影或影片片段,被壓平進這個有限的調色盤後,會出現明顯的色階斷層和抖動雜訊,而檔案仍然得在每一格上,儲存這一整格降色後的完整資料,沒有任何跨畫面壓縮可以依靠。

色票比較:256 色的 GIF 調色盤,對照原始照片或影片來源完整的色彩範圍

為什麼這個格式從未被現代格式取代

GIF 的動畫循環播放和無所不在的支援(每個瀏覽器和通訊軟體都能不裝外掛播放)讓它在更好的選項出現後,仍然持續被廣泛使用,就像 MP3 在效率更高的音訊編碼問世後依然屹立不搖一樣。WebP 和 APNG 都支援動畫,具備真正的逐格壓縮和多得多的色彩,對同樣的內容能產生明顯更小的檔案,但兩者都沒有達到 GIF 在所有平台和分享情境下那種普及程度的支援,所以即使 GIF 是儲存短循環動畫效率最低的方式,它仍然是預設選擇。

同一段片段轉成 MP4 通常小得多

把同一段短片段用 H.264 轉成 MP4,會保留影片編碼的畫面差異壓縮和完整色彩範圍,這正是為什麼對相同內容和長度而言,檔案體積通常只有等效 GIF 的一小部分。代價是 MP4 需要影片播放器,不像 GIF 能在任何地方以圖片形式內嵌顯示,不過現在大多數通訊軟體和社群平台,已經會像播放 GIF 一樣,自動播放一段短 MP4。

不上傳任何內容,在 GIF 和影片之間互相轉換

我們的 GIF 轉影片工具,會把動態 GIF 重新編碼成體積精簡的 MP4;video-to-GIF 則反過來,在真的需要一份 GIF(為了某個特別要求這個格式的情境)時完成轉換,兩者都完全透過編譯成 WebAssembly 的 ffmpeg,在你的瀏覽器中執行。先把既有的沉重 GIF 轉成 MP4,只有在少數真正需要 GIF 格式的情境才退回使用 GIF,通常是在不失去循環播放效果的前提下,縮小分享動畫檔案大小最快的做法。

本文涉及的工具

常見問題

為什麼一段短 GIF,體積會比長得多的 MP4 影片還大?

GIF 幾乎獨立重新儲存每一格的大部分內容,沒有跨畫面壓縮,還限制在 256 色以內,而 MP4 把大多數畫面編碼成只和前一格的差異,並保留豐富得多的色彩細節。GIF 格式每一格的額外開銷,就算片段只有影片長度的一小部分,也會快速累積起來。

不轉成影片,我能單純把 GIF 變小嗎?

可以,但有限度:降低影格率、縮小像素尺寸,或把片段剪短,都能直接減少 GIF 的體積,因為畫面數量變少或畫面變小,需要儲存的資料就變少。但這些都不會改變這個格式本質上缺乏跨畫面壓縮的問題,這正是為什麼轉成 MP4 通常能省下的體積,遠比單純剪短一段 GIF 多得多。

MP4 會像 GIF 一樣自動循環播放嗎?

大多數通訊軟體和社群平台,會自動播放並循環一段內嵌的短 MP4,就像處理 GIF 一樣,所以對觀看者來說,視覺結果通常一模一樣。少數只支援原始圖片標籤、不支援影片播放器的情境(部分電子郵件和較舊的論壇軟體)仍然需要一份真正的 GIF 檔案。

來源