当前位置: 首页>>技术教程>>正文


gzip – 压缩视频会创建更大的文件

问题描述

我一直在使用 GUI(右键单击 => 压缩)来尝试压缩包含 3 个视频、总计 1.7gb (.H264 MP4) 的 .tar。 gzip、lrzip、7z 等都对文件大小没有任何影响,压缩后的文件夹也是 1.7 GB。

然后我尝试从命令行运行 lrzip (以防 gui 问题),并使用 -z 标志(极端压缩),这是我的输出。

从压缩率可以看出,压缩后的文件夹实际大小比原来的要大!我不知道为什么我没有运气,根据我读过的随机评论和官方文档,lrzip 尤其应该有效(文件大于 100mb,越大越好) – 请参阅 https://wiki.archlinux.org/index.php/Lrzip

为什么我无法压缩我的文件?

最佳办法

正如@pram 在评论中所说,mp4 视频已经被压缩,其他视频格式可能也在某种程度上使用了压缩。因此,尝试压缩它们不会导致尺寸略有减小(如果有的话)(这也至少部分地适用于图片和音乐)。在这种情况下,看起来元数据(对于压缩文件本身)可能会导致增加。唯一可能(而且是很强的可能)导致一定程度减少的压缩格式是 xz。

另一方面,如果您想减小这些视频的大小,请使用 Handbrake 等工具查看 re-encoding 视频。

次佳办法

实际上,文件已经被压缩这一事实并不是关键问题。是这样的:一般来说,只有当数据具有某种冗余时,压缩才能起作用。对于未压缩的文件来说,情况几乎总是如此,但是,冗余是什么并不一定很明显。 General-purpose 压缩算法主要针对文本文件中显而易见的事情:许多单词不仅出现一次,而且以相同的形式多次出现,也许单词短语可以组合,等等。这些算法在概括这一点方面非常好从 ASCII-encoded 电话号码列表到中文诗歌再到二进制机器代码,但它们不可能适用于任何类型的数据。特别是,媒体文件在概念上是模拟数据,采用嘈杂的数字表示形式。这意味着,根本不存在任何类型的 textfile-reduncancy:某些动机可能会反复出现,但传感器噪声的配置总是略有不同。这就是为什么所有压缩图像/AV 格式都使用一些巧妙选择的转换作为其第一个编码步骤,通常基于 DCTwavelets 。粗略地说,这些转换将 picture-portions 和 noise-portions 移动到不同的位置,因此它们可以很好地分离,并且通过有损压缩,您只保留您认为最重要的 “important” 信息,其中不包括噪声,而 “good information” 有很多冗余。 (这实际上并不是它的工作原理,但确实是这样。)

如果 general-purpose 压缩器使用这些转换,效果将相反:大多数数字信息实际上会被错误分类为某种噪声,因为它缺乏模拟信号中的 “smooth” 结构。在有损视频压缩之后,显然不再能找到模拟平滑度或数字再现(如果是的话,编解码器将使用另一个 bzip-stage 或它们自己的东西!)

第三种办法

你没有运气的原因是 mp4 已经被压缩了,你无法进一步压缩它。您所做的就是将压缩格式的标头信息添加到文件中。

由于文件已经被压缩并且您无法进一步压缩它们,因此这会导致文件大小增加,因为您所做的只是保留相同的信息并添加更多字节的标头信息。

第四种办法

这是 pigeonhole principle 的一个很好的例子。

由于文件已经被(有损)压缩,因此任何地方都几乎没有减少,这意味着您的净增益已经为零。正如其他人提到的,压缩格式本身在其 meta-data 中存在一定的、通常可以忽略不计的损失。所有这些结合在一起意味着在相同或较小的文件集中可能没有留下任何鸽子,因此您的压缩数据落入较大的文件集中。

第五种办法

如果您想压缩这些文件,则必须降低质量。

在不知道这些文件的长度、格式和内容类型的情况下,很难判断这些文件是否有空间缩小而不会造成明显的质量损失。

具有 1080p 视频的蓝光光盘往往会超过 25GB,因此您很可能已经处于 H.264 的最佳 quality-to-size 比率。

您可以尝试使用ffmpegavconv来转换文件。

您可以从 ffmpeg -i input_file.mp4 -preset slower -crf 20 -c:a copy output_file.mp4 开始

anconv 命令的工作方式类似。

  • 增加 -crf 值以减小文件大小和质量,我不建议高于 25。

  • 您可以将预设更改为 slowmedium 以提高速度,但与 slower 甚至 veryslow 相比,您的文件大小会受到影响(如果您非常有耐心!)。

  • 更多设置可以在这里找到:http://mewiki.project357.com/wiki/X264_Settings

  • 我建议远离大多数预设,因为预设提供了合理的默认值,但 -tune 是例外。

  • 如果您的内容是电影 ( -vf hqdn3d ),请尝试使用降噪器,与使用高 -crf 值相比,您可以提高视觉质量。

  • 缩小内容 -vf scale=-1:720(720p)和 -vf scale=-1:480(480p),以提高编码速度并保持质量。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13819.html,未经允许,请勿转载。