什麼存檔壓縮使 .mp4 檔案最小?

什麼存檔壓縮使 .mp4 檔案最小?

是否有一種基於存檔的壓縮格式可以製作最小的 .mp4 影片?

我用我所知道的唯一存檔格式測試了 1080p 0:12 時長影片:

(python3) Joshs-MBP:testing_movie mu$ ls -lS
total 12712
-rw-r--r--  1 mu  staff  2145528 Jun  6 09:26 testing.mov
-rw-r--r--  1 mu  staff  1790044 Jun  6 09:26 testing.mov.zip
-rw-r--r--@ 1 mu  staff  1789512 Jun  6 09:25 testing.mov.gz
-rw-r--r--  1 mu  staff   775138 Jun  6 09:26 testing.mov.bz2

看起來bzip2是最好的。就使文件更小而言,還有其他更好的方法嗎?如果需要更長的時間也沒關係。

另外,我注意到你不能使用bzip2目錄。

答案1

首先,關於術語的一個小問題:ZIP 是唯一的檔案您使用的格式。 Gzip 和 Bzip2 是壓縮格式,而不是存檔格式。更具體一點:

  • 存檔格式將多個檔案和/或目錄(通常包括所有權、時間戳記和可能的其他資料等元資料)聚合到單一檔案中。 Tar 是純存檔格式的一個範例,它沒有固有的壓縮,

  • 壓縮格式只是壓縮數據,但本質上並未將多個文件合併為一個。 Gzip、Bzip2、Brotli、LZ4、LZOP、XZ、PAQ 和 Zstandard 都是壓縮格式。其中一些(例如 Gzip 和 LZ4)可能支援壓縮多個文件並將它們連接成一個文件,然後可以將其解壓縮為多個原始文件(這就是 gzip 目錄時發生的情況),但它們不會儲存路徑或其他元數據,因此它們不是存檔格式。

某些格式(例如 ZIP、7z 或 RAR)結合了歸檔和壓縮(儘管 ZIP 也可以儲存未壓縮的檔案)。

現在,讓我們繼續討論您的主要問題:

music2myear的評論是正確的。根據所使用的 MP4 編碼的具體細節,您的結果會有很大差異。這是因為 MP4 本身包含資料壓縮,在這種情況下針對壓縮音訊和視訊資料進行了最佳化,而不會顯著降低感知品質。它使用的過程實際上有點複雜(太複雜了,無法在這裡解釋),但由於它不會降低感知質量的限制,再加上它逐幀壓縮而不是作為單個長幀壓縮的事實流,有時還有很大的改進空間(正如您從測試中看到的那樣)。

現在,雖然我無法在沒有更多詳細資訊的情況下給出結論性答案,但我可以為您提供一些有關文件壓縮的一般建議:

  • ZIP 和 Gzip 在這種情況下顯示出非常相似的結果,因為它們使用相同壓縮演算法的變體,更具體地說是 LZW 演算法的衍生演算法,稱為 DEFLATE。 DEFLATE 並不是一種特別出色的壓縮演算法,但它無所不在(甚至有它的硬體實作),因此它經常被用作比較標準。除了用作其他文件格式(例如 ZIP)的元件之外,它不再廣泛用於儲存。在比較壓縮演算法時,幾乎任何基於 DEFLATE(或一般而言 LZW)的東西都不會在任何方面獲勝。

  • 相較之下,Bzip2 對資料進行一些複雜的轉換以使其壓縮更有效,然後使用霍夫曼編碼進行實際壓縮。在大多數情況下,它的壓縮效果比基於 DEFLATE 的壓縮器更好,但也比 DEFLATE 慢。由於在霍夫曼編碼之前對其如何轉換輸入資料做出了一些假設,因此它對輸入資料的結構也比許多其他選項更敏感。

  • XZ 使用一種不同的演算法,稱為 LZMA。與 DEFLATE 所源自的 LZW 演算法一樣,LZMA 最終源自於一種名為 LZ77 的演算法,儘管它比基於 DEFLATE 的選項獲得了更好的壓縮比,並且在大多數情況下比 Bzip2 明顯更好。除了 LZMA 之外,它還進行了一些轉換,使其在壓縮可執行檔方面比其他選項更好。然而,這樣做的代價是壓縮資料需要很長時間。 7zip 也使用 LZMA,但沒有資料轉換,因此它在比率方面通常不如 XZ。

  • LZOP 使用 LZO 演算法,通常壓縮效果比 DEFLATE 差,但速度更快。就像 Gzip 一樣,它不再被廣泛使用,因為人們傾向於選擇提供更好壓縮比或更好性能的替代方案。

  • LZ4 是 Google 開發的較新標準,運行速度極快(解壓縮速度接近記憶體頻寬),但壓縮率比 LZO 更差。它正在慢慢取代 LZO,因為大多數使用 LZO 的東西都是為了速度而使用它。

  • Brotli 是 Google 的另一位新朋友。它是 HTTP/2 標準的一部分,專門針對串流媒體進行了優化,並且實際上可以獲得比基於 DEFLATE 的選項更好的壓縮比和效能。但是,它並未廣泛支援純檔案壓縮,因此它可能不是您使用的可行選擇。

  • PAQ 適合那些非常擔心壓縮率最大化的人。它使用統計模型的複雜組合來實現絕對瘋狂的壓縮比(取決於原始數據,使用 PAQ 壓縮的檔案被壓縮的情況並不罕見)小於 1/10原始大小,而 DEFLATE 平均更接近 1/2)。當然,這樣做的代價是需要花費非常長的時間來壓縮任何事物與 PAQ。使用高壓縮設定時,使用 PAQ 壓縮此範例影片可能至少需要半小時。由於需要花費大量時間,幾乎沒有人使用 PAQ,少數人很少將其用於存檔目的以外的其他用途(也就是說,他們只在不太可能更改的文件上使用它)。

  • Zstandard 是其中最新的一個,由 Facebook 開發。它使用舊方法和新方法(包括一些機器學習技術)的混合來實現與 bzip2 相當或更好的壓縮比(有時甚至比 XZ 更好),同時運行速度明顯快於我列出的大多數其他方法除了LZ4。它可能不會在您的使用方面擊敗 XZ(並且絕對不會擊敗 PAQ),但它可能會獲得足夠好的比率,因此明顯更好的性能是值得的。

相關內容