把一段视频右键压成 ZIP,等进度条走完,文件几乎没变小,甚至还胖了一点。压缩软件没认真干活?普通 ZIP 压缩会尝试用更省空间的方式记录原数据,并不靠删掉视频画面来瘦身;常见视频本来已经压缩过,留给它继续节省的空间往往不多。“装进压缩包”和“把视频变小”,需要分开看。

压掉的是重复表达,内容还能找回来
先看一个人为设计的例子:一张纸上写着 ABABABABABAB。如果双方事先约定好记法,可以把它记成“AB 重复 6 次”。展开时仍然是那 12 个字母,顺序也一样,没有凭空少掉哪一个。
这个例子想说明的是:内容没变,记录内容的方式可以变。它只是帮助理解的简写,并不是 ZIP 文件内部真的写着这句中文。对于这么短的字符串,保存规则本身就可能比省下的空间还多。
常见 ZIP 压缩方法 DEFLATE 会利用重复出现的数据片段,也会用编码减少表示数据所需的位数。实际算法比“记次数”复杂,但解压软件知道对应规则,就能把数据还原。这叫无损压缩:在文件完整、压缩解压正常的前提下,还原的是原来的文件字节。

所以,把照片或视频直接放进普通 ZIP 再解压,不会因此把画质越压越糊。需要留意的是,有些软件还会附带“缩小图片”“转换格式”等处理;勾选了这些功能,就已经不只是 ZIP 压缩了。
视频往往已经“瘦过一轮”
手机拍摄、剪辑软件导出的视频,通常已经经过专门的视频编码。编码器会利用画面中的规律来减少数据量,常见的有损编码还会舍弃一部分信息,以换取更小的体积。
到了 ZIP 这一步,它面对的是已经编码好的文件字节,不会像视频编码器那样重新分析每帧画面、选择可以牺牲哪些细节。前面已经把容易节省的部分处理过,后面再压一遍,收益就可能很小。WinZip 的官方说明也指出,多数已经压缩的多媒体文件,放进压缩包后通常不会明显缩小。
这不等于“视频绝对压不动”。原有编码、素材和压缩方法都会影响结果;而且 MP4 是装载音视频等内容的容器名称,光看后缀不能判断里面用了什么编码、还剩多少压缩空间。这里说的是日常已压缩视频再做普通 ZIP 打包的常见情况。
JPEG 图片也常有类似表现。微软的 ZIP 帮助明确提醒:这类图片本身已经高度压缩,打包后的总大小可能与原来差不多。反过来,也别认定“文档一定很好压”——有些文档格式内部已经采用了压缩。

一个小实验:同样压成 ZIP,结果差很多
为了把区别看清楚,这里用 Python 的 ZIP 工具做了两个人工样本,均采用 DEFLATE、压缩级别 9。第一份是 ABCDEF 重复 10,000 次的文本;第二份是预先用一组变化充分的人工字节生成的 ZIP 文件,再给它套一层 ZIP。
| 样本 | 打包前 | 打包后 |
|---|---|---|
| 大量重复的文本 | 60,000 字节 | 228 字节 |
| 已有的 ZIP 文件 | 131,226 字节 | 131,366 字节 |
两份样本解压后,都与各自输入逐字节相同。第一份有大量重复,能省很多;第二份没得到足够的额外收益,还要带上压缩包的文件名、索引等记录,因此略大了一点。
测试环境:Python 3.10.8、zlib 1.2.12。第二份样本由程序生成,不是视频实测;这些数字只说明本次样本结果,不能当成日常文件的预期压缩率。
这也是反复“ZIP 套 ZIP”不适合当瘦身技巧的原因:每加一层都得保存相应结构,却没有理由保证每一层都能找到足够的新规律。
先想清楚:你要打包,还是要缩小视频?
如果目的是把一批文件一起发出去,ZIP 即使没小多少,也能把多个文件和目录收在一个包里,便于整理和传递。“打包”这件事本身就有用,不必拿体积变化作为唯一成绩。
如果目的是让视频低于上传大小限制,通常要考虑重新编码,也就是转码。视频工具可以调整编码方式、质量、码率或分辨率;具体能省多少,要看原文件和设置。常见的有损转码是在体积与画质之间做取舍,不能承诺“缩小很多、所有细节原封不动”。

HandBrake 的质量说明建议从小幅调整开始,并检查输出效果。真要缩小视频,可以保留原文件,先截取有运动、纹理或字幕的代表片段试转,比较体积和画面,再决定是否处理整段。仅仅把文件后缀改成另一种格式,不会完成这种编码转换。
记住这条区别就够了:ZIP 追求能完整还原文件;常见的视频有损转码允许改变画面信息。看到压缩包几乎没变小,先看里面装的是什么,以及自己究竟想完成哪件事。
参考资料:RFC 1951:DEFLATE Compressed Data Format Specification
https://www.rfc-editor.org/rfc/rfc1951
Microsoft:Zip and unzip files
https://support.microsoft.com/en-us/windows/experience/storage-filemanagement/zip-and-unzip-files
WinZip:Why don’t some files compress very much?
https://kb.winzip.com/en/130408
WinZip:Will zipping files cause them to be of lower quality?
https://kb.winzip.com/en/130446
HandBrake:Adjusting quality
https://handbrake.fr/docs/en/latest/workflow/adjust-quality.html