0xAA55 发表于 2014-6-22 17:50:51

【实验】极限压缩:用FLAC压缩7z会怎么样?

我有一天试过把一首WAV格式无损歌曲压缩成FLAC,然后再把无损歌曲压缩成7z,结果发现FLAC比7z更小。这让我对FLAC有一种印象:这东西貌似能做到把“毫无规律”的数据真正做到“无损”压缩。那么事实上到底是不是这样呢?目前我还不想花时间研究libflac的源码,如果可以的话,我们拿FLAC压缩7z包能不能更好地压缩文件呢?

我准备的实验步骤是这样的:
0x1、找一些需要压缩的文件。
0x2、把这个大文件压缩成7z包,并记录文件大小。
0x3、给它套上一个WAV文件头。(所需工具请到这里下载。)
0x4、压缩成FLAC文件。用GoldWave或foobar2000都行,并记录文件大小。如果文件膨胀了,那说明FLAC不能把7z包压得更小。
0x5、然后再用GoldWave或foobar2000把我们得到的FLAC文件转换回WAV。
0x6、用WinHex把WAV文件的WAV文件头去掉。得到7z包。
0x7、解压7z包。如果解压失败,那说明文件的内容被损失了。

0x1、找一些需要压缩的文件。
我这边正好有一个想要压缩的文件,它是Windows XP Sp3(中文版)的ISO镜像,从msdn.itellyou.cn下载的。
下载地址点此,ed2k链接。zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso

0x2、把这个大文件压缩成7z包,并记录文件大小。
我使用7z的命令行程序,得到了xpsp3.7z这个文件。压缩命令是7z a xpsp3.7z "zh-hans_windows_xp_professional_with_service_pack_3_x86_cd_vl_x14-74070.iso"

0x3、给它套上一个WAV文件头。
就像下图这样。


文件没有问题,可以播放。

怎么听都像白噪音。拿GoldWave看频谱图,发现每个频段的音量都是一样的。

0x4、压缩成FLAC文件。

结果发现文件膨胀了……这证明我这个想法好像不行。


0x5、转换回WAV
看到这个波形我吃惊了。。


0x6、用WinHex把WAV文件的WAV文件头去掉。得到7z包。

我居然重新看到了“7z”这个标识!看来FLAC貌似是真的无损,不是骗人的。

0x7、解压7z包。如果解压失败,那说明文件的内容被损失了。

诶?好像哪里不对……


原来是还原的WAV少了3个字节……日
我自己又补回了这3个字节,然后就是这样的:


好像可以解压!

没错了,已经证实,FLAC确实是真正的无损……而且我可以用FLAC去压缩一些比较大的文件。至于它的体积是不是真的会减少我就不知道了。看来7z真是已经到极限了呀。

KxIX 发表于 2014-6-22 17:57:57

0xAA55 发表于 2014-6-22 18:27:26

よしの 发表于 2014-6-22 09:57
别闹 你居然想用flac去挑战7z神

7z压缩WAV也是很作死的知不知道
页: [1]
查看完整版本: 【实验】极限压缩:用FLAC压缩7z会怎么样?