耳机俱乐部论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 31452|回复: 52

问一个APE"无损压缩"的算法问题,望软件高手赐教

[复制链接]

4138

主题

10万

帖子

3761

积分

版主

俱乐部理事

Rank: 10

积分
3761
注册时间
2001-11-21

优秀版主奖耳机鉴赏奖社区建设奖

发表于 2008-3-30 09:31:02 | 显示全部楼层 |阅读模式

感谢关注耳机俱乐部网站,注册后有更多权限。

您需要 登录 才可以下载或查看,没有账号?注册

x
以前看见过一个荒谬的说法,说WAV压缩成APE的机制是绝对精确的,比如一串100001的二进制信号里有连续4个0,压缩时就把4和0压缩为某种特定记号. 还原时还原出4个0就是了 ... 很荒谬.

事实上我看了MONKEY网站的一些介绍,觉得APE压缩过程还是比较复杂的,不是一个非常简单的算法. 可是网站没有公开更深细节.

但有意思的一点是,同一个音频文件,你两次去压缩为APE,出来的APE文件是不同的(大小很不相同). 然而这两个不同的APE文件,解压缩却都可以还原成同一个WAV文件.

我不懂这里面的软件程序和算法. 希望懂软件的朋友赐教为什么是如此. APE的算法究竟机理如何,为什么同一个文件不同时候会压缩成不同的APE,而不同的APE却又都能还原为一个WAV. 如果简单去理解,一个固定的数学算法,针对一个确定的文件,应该任何时候都出来一个固定的APE结果. 然而事实并非如此.
安润上海店:http://anrun.taobao.com
小白的新浪博客: http://blog.sina.com.cn/headphoneclub
欢迎订阅微信公众号“耳机俱乐部小白版主”
B站频道:http://space.bilibili.com/232721015
回复

使用道具 举报

24

主题

233

帖子

12

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
12
注册时间
2001-11-21
发表于 2008-3-30 10:59:42 | 显示全部楼层
如果是压缩为ape,只要参数压缩比相同,出来的文件是绝对一致的,CRC值都是一致的。您说的不同估计是选用了不同的压缩比吧。。。。

“WAV压缩成APE的机制是绝对精确的,比如一串100001的二进制信号里有连续4个0,压缩时就把4和0压缩为某种特定记号. 还原时还原出4个0就是了”。。。虽然描述的很浅显,但并不荒谬,这是最普通的压缩算法的例子,也就是run-length coding。只不过音频文件如果都只用这个方法是压缩,还是不能根据音频文件的特性最大限度的去除数据冗余性,就好比拿winrar压wav远没ape压的小。
不管是ape,还是flac,算法都主要经过以下几点,简要的说:
Blocking:分块,具体大小会根据采样率和时间频谱特性而不同。
Interchannel Decorrelation:由于左右声道的数据有很大相似性,encoder会把L,R信号转化为M+Lside, M+Rside,而表示基于M的Lside,Rside仅需很少的数据量。
Prediction:encoder会寻找一个合适的公式来描述待压缩信息,因为encoder和decoder都知道此公式,所以只要记录参数就行了。
Residual coding:predictor 很可能不能精确描述待压缩信息,所以需要有修正信息。
(这么看来,视频压缩的macroblock,IDCT,MotionEsimation,MotionCompensation和音频压缩和有着异曲同工之处)

软件如何处理ape,flac,或者是wav,对于声卡和或DAC之类是完全透明的,声卡只知道把过来的PCM用数字方式传输或者用内置的DAC转换成模拟信号就行了,而jitter正是产生在44.1khz,48khz.....同步时钟这一阶段,所以即使是数字传输听感不同很正常,但如果把问题归结为ape,或wav的格式,未免就。。。。
回复 支持 反对

使用道具 举报

15

主题

1246

帖子

13

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
13
注册时间
2006-2-17
QQ
发表于 2008-3-30 11:03:14 | 显示全部楼层
APE不是开源的吧,算法是不懂的了...
回复 支持 反对

使用道具 举报

24

主题

233

帖子

12

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
12
注册时间
2001-11-21
发表于 2008-3-30 11:11:03 | 显示全部楼层
原帖由 阿斯兰萨拉 于 2008-3-30 11:03 发表
APE不是开源的吧,算法是不懂的了...


ape不是开源的,但算法大概思想和上述无异。

。。。只要是无损压缩。。。用什么算法对于“音质”来讲,毫无关系,我自己都觉得重复这句话太。。。


不知道世界上有没有一个人,敢站出来说:我用了ABX对比10次,以75%(暂不说100%)的概率揪出了哪个是ape。。。
回复 支持 反对

使用道具 举报

24

主题

233

帖子

12

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
12
注册时间
2001-11-21
发表于 2008-3-30 11:14:06 | 显示全部楼层
恩,其实一个简单的abx实验就能把这个“世纪之争”给解决了。。。。。白版可以考虑试一下
回复 支持 反对

使用道具 举报

2

主题

20

帖子

0

积分

新手上路

Rank: 1

积分
0
注册时间
2008-3-19
发表于 2008-3-30 13:14:36 | 显示全部楼层
任何压缩算法都是基于无损这个基础的.不然的话就无从解压回原文件了.不论APE具体算法如何,最最基本的方法就是将无损抓取的WAV文件作为数字文档   提取其中有规律并且重复的数字串 用更简短的数字串进行替换,而替换的定义做成一条基本索引.从而达到精简文档的目的..

PS: 其实你用winrar尝试压缩一下WAV文档  同样能起到APE几乎相同的压缩率. 同样是无损的
回复 支持 反对

使用道具 举报

91

主题

1981

帖子

53

积分

高级会员

Rank: 4Rank: 4Rank: 4Rank: 4

积分
53
注册时间
2004-1-1
发表于 2008-3-30 13:29:59 | 显示全部楼层
原帖由 阿斯兰萨拉 于 2008-3-30 11:03 发表
APE不是开源的吧,算法是不懂的了...


http://www.monkeysaudio.com/developers.html

The      Monkey's Audio source code is now freely available.  More information      will follow, but until then, visit the Forum      for more information and discussion.  The licensing is very      non-restrictive as long as you're considerate enough to talk to me before      using the source.  Looking forward to what's to come...”
回复 支持 反对

使用道具 举报

24

主题

233

帖子

12

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
12
注册时间
2001-11-21
发表于 2008-3-30 14:06:48 | 显示全部楼层
呵呵,现在无损格式的多了,flac,tta,wv。ape不得不也开源了,果然还是百花争鸣的好,不过基本上没人有研究算法具体实现的必要,developer也只是拿来用就好了。
回复 支持 反对

使用道具 举报

15

主题

1246

帖子

13

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
13
注册时间
2006-2-17
QQ
发表于 2008-3-30 15:16:15 | 显示全部楼层
谢谢P兄,原来开源了啊,记得以前不是开源的!不错,有机会研究研究
回复 支持 反对

使用道具 举报

391

主题

3356

帖子

29

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
29
注册时间
2007-4-15
QQ
发表于 2008-3-30 19:21:00 | 显示全部楼层
木人路过
回复 支持 反对

使用道具 举报

2

主题

161

帖子

12

积分

中级会员

Rank: 3Rank: 3Rank: 3

积分
12
注册时间
2001-11-21
发表于 2008-3-30 20:38:08 | 显示全部楼层
嗯,几位的回答确实是内行的说法。
有损压缩通常只用在音视频领域,因为人能“忍”。
不想忍的就得用无损压缩了。。。
我是干这行的,可惜对这些东西没啥研究。
回复 支持 反对

使用道具 举报

4138

主题

10万

帖子

3761

积分

版主

俱乐部理事

Rank: 10

积分
3761
注册时间
2001-11-21

优秀版主奖耳机鉴赏奖社区建设奖

 楼主| 发表于 2008-3-30 20:56:09 | 显示全部楼层
注意我不是开玩笑. 大家自己试验一下. 同一个WAV文件,在同一个电脑上,不同时间去压缩,得到的APE可以是不同的,文件大小差不少.

我一个实际的例子是,一个长度为818,042,108字节的WAV文件,一个月前在我电脑上压缩成的APE大小为292,747,380字节,而今天压缩的APE大小为288,539,592字节. 然而两个不同大小的APE文件分别解压后,都是818,042,108字节.

请解释.
安润上海店:http://anrun.taobao.com
小白的新浪博客: http://blog.sina.com.cn/headphoneclub
欢迎订阅微信公众号“耳机俱乐部小白版主”
B站频道:http://space.bilibili.com/232721015
回复 支持 反对

使用道具 举报

0

主题

85

帖子

1

积分

初级会员

Rank: 2Rank: 2

积分
1
注册时间
2005-4-14
发表于 2008-3-30 21:00:26 | 显示全部楼层
原帖由 小白 于 2008-3-30 09:31 发表
以前看见过一个荒谬的说法,说WAV压缩成APE的机制是绝对精确的,比如一串100001的二进制信号里有连续4个0,压缩时就把4和0压缩为某种特定记号. 还原时还原出4个0就是了 ... 很荒谬.

事实上我看了MONKEY网站的一些介绍,觉得APE压缩过程还是比较复杂的,不是一个非常简单的算法. 可是网站没有公开更深细节.

但有意思的一点是,同一个音频文件,你两次去压缩为APE,出来的APE文件是不同的(大小很不相同). 然而这两个不同的APE文件,解压缩却都可以还原成同一个WAV文件.

我不懂这里面的软件程序和算法. 希望懂软件的朋友赐教为什么是如此. APE的算法究竟机理如何,为什么同一个文件不同时候会压缩成不同的APE,而不同的APE却又都能还原为一个WAV. 如果简单去理解,一个固定的数学算法,针对一个确定的文件,应该任何时候都出来一个固定的APE结果. 然而事实并非如此.


白版主观臆断的成分还是很多的,所谓的“很荒谬的说法”其实的确是事实的一部分。
任何包含信息的数据都有“信息熵”这样的一个概念,这个概念可以简单理解为“能够还原出数据中包含的所有信息的最小集合”,无损压缩的目的就是尽可能得趋向于“信息熵”这个理论极限。
无损压缩是不丢失信息熵的,所以任何数据连同其携带的信息都能被完全还原出来。

为啥压缩同一个wav文件出来的ape文件大小可能不同?

那么为啥压缩同一个word文件,选用不同的winzip或者winrar(格式不同),选用不同的压缩方式(速度和倍率),压出来的压缩文件大小也不同?

白版有遇到过压缩(打包)一个word文件,再解压出来被改了个字符或者标点么?我想是没有吧,因为这是无损压缩,信息熵都被完全保留了。

一个固定的数学算法,数学模型,针对一个确定的文件,只有在这个模型中确定了参数和变量后,才会得到确定结果。
回复 支持 反对

使用道具 举报

0

主题

85

帖子

1

积分

初级会员

Rank: 2Rank: 2

积分
1
注册时间
2005-4-14
发表于 2008-3-30 21:03:01 | 显示全部楼层
原帖由 小白 于 2008-3-30 20:56 发表
注意我不是开玩笑. 大家自己试验一下. 同一个WAV文件,在同一个电脑上,不同时间去压缩,得到的APE可以是不同的,文件大小差不少.

我一个实际的例子是,一个长度为818,042,108字节的WAV文件,一个月前在我电脑上压缩成的 ...


编码器的版本不同或者压缩比率不同,再或者,你没看清楚文件的“大小”和“占用空间”。

在同样情况下,大小肯定相同。
回复 支持 反对

使用道具 举报

4138

主题

10万

帖子

3761

积分

版主

俱乐部理事

Rank: 10

积分
3761
注册时间
2001-11-21

优秀版主奖耳机鉴赏奖社区建设奖

 楼主| 发表于 2008-3-30 21:04:42 | 显示全部楼层
楼上所说正是我疑惑的地方. 我读过国外一篇论述APE和WAV音质区别及试图进行解释的文章. 很长,读后记得最牢的一点就是,作者认为APE音质比WAV略差一点点的原因,正在于APE文件丢失了信息熵.

所以这个问题其实是比你想象得要复杂,不要这么轻易地下结论. 真的.

最后,我是同一台电脑上,不同时间压缩的同一个WAV. 压缩过程和参数设置完全相同. 请解释为什么不同时间(相隔月余),就出来不同大小的APE压缩文件.

补充一点,我都是看的文件大小,没管占用空间.

[ 本帖最后由 小白 于 2008-3-30 21:07 编辑 ]
安润上海店:http://anrun.taobao.com
小白的新浪博客: http://blog.sina.com.cn/headphoneclub
欢迎订阅微信公众号“耳机俱乐部小白版主”
B站频道:http://space.bilibili.com/232721015
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

耳机俱乐部微信
耳机俱乐部微信

联系我们|有害信息举报:010-60152166 邮箱:zx@jd-bbs.com|手机版|Archiver|黑名单|中国耳机爱好者俱乐部 ( 京ICP备09075138号 )

GMT+8, 2024-5-13 13:43 , Processed in 0.105163 second(s), 38 queries , Gzip On.

快速回复 返回顶部 返回列表