哪种档案压缩可以使 .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,少数使用 PAQ 的人也很少将其用于存档以外的目的(即,他们只将其用于不太可能更改的文件)。

  • Zstandard 是最新的,由 Facebook 开发。它结合了旧方法和新方法(包括一些机器学习技术),可实现与 bzip2 相当或更好的压缩率(有时甚至优于 XZ),同时运行速度明显快于我列出的除 LZ4 之外的大多数其他方法。它可能不会在您的使用中胜过 XZ(并且肯定不会胜过 PAQ),但它可能会获得足够好的压缩率,以至于明显更好的性能值得。

相关内容