变成ISO文件,速度最快效果好
‘贰’ 现有的图像压缩算法都有那几种
静态图像压缩最常用的是jpeg, 先进点的是jpeg2000。研究这两个就足够了。
动态视频的算法就太多了,VCD用mpeg-1, DVD用mpeg-2, 视频会议常用H.261。压缩比更高一些的是H.263和mpeg-4,最新一代的算法是H.264和微软的WMV9,用于新一代HD-DVD及蓝光光盘上。
‘叁’ 数字音频压缩的主要基本算法有哪些
WAV:无损
是微软公司开发的一种声音文件格式,它符合 PIFFResource Interchange File Format 文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS平台及其应用程序所支持。“*.WAV”格式支持MSADPCM、CCITT A LAW等多种压缩算法,支持多种音频位数、采样频率和声道,标准格式的WAV文件和CD格式一样,也是44.1K的采样频率,速率88K/秒,16位量化位数,看到了吧,WAV格式的声音文件质量和CD相差无几,也是目前PC机上广为流行的声音文件格式,几乎所有的音频编辑软件都“认识”WAV格式。
这里顺便提一下由苹果公司开发的AIFF(Audio Interchange File Format)格式和为UNIX系统开发的AU格式,它们都和和WAV非常相像,在大多数的音频编辑软件中也都支持它们这几种常见的音乐格式。
MP3:流行
MP3格式诞生于八十年代的德国,所谓的MP3也就是指的是MPEG标准中的音频部分,也就是MPEG音频层。根据压缩质量和编码处理的不同分为3层,分别对应 “*.mp1"/“*.mp2”/“*.mp3”这3种声音文件。需要提醒大家注意的地方是:MPEG音频文件的压缩是一种有损压缩,MPEG3音频编码具有10:1~12:1的高压缩率,同时基本保持低音频部分不失真,但是牺牲了声音文件中12KHz到16KHz高音频这部分的质量来换取文件的尺寸,相同长度的音乐文件,用*.mp3格式来储存,一般只有*.wav文件的1/10,而音质要次于CD格式或WAV格式的声音文件。由于其文件尺寸小,音质好;所以在它问世之初还没有什么别的音频格式可以与之匹敌,因而为*.mp3格式的发展提供了良好的条件。直到现在,这种格式还是风靡一时,作为主流音频格式的地位难以被撼动。但是树大招风,MP3音乐的版权问题也一直是找不到办法解决,因为MP3没有版权保护技术,说白了也就是谁都可以用。
MP3格式压缩音乐的采样频率有很多种,可以用64Kbps或更低的采样频率节省空间,也可以用320Kbps的标准达到极高的音质。我们用装有Fraunhofer IIS Mpeg Lyaer3的 MP3编码器(现在效果最好的编码器)MusicMatch Jukebox 6.0在128Kbps的频率下编码一首3分钟的歌曲,得到2.82MB的MP3文件。采用缺省的CBR(固定采样频率)技术可以以固定的频率采样一首歌曲,而VBR(可变采样频率)则可以在音乐“忙”的时候加大采样的频率获取更高的音质,不过产生的MP3文件可能在某些播放器上无法播放。我们把VBR的级别设定成为与前面的CBR文件的音质基本一样,生成的VBR MP3文件为2.9MB。
MIDI:作曲家最爱
经常玩音乐的人应该常听到MIDI(Musical Instrument Digital Interface)这个词,MIDI允许数字合成器和其他设备交换数据。MID文件格式由MIDI继承而来。MID文件并不是一段录制好的声音,而是记录声音的信息,然后在告诉声卡如何再现音乐的一组指令。这样一个MIDI文件每存1分钟的音乐只用大约5~10KB。今天,MID文件主要用于原始乐器作品,流行歌曲的业余表演,游戏音轨以及电子贺卡等。*.mid文件重放的效果完全依赖声卡的档次。*.mid格式的最大用处是在电脑作曲领域。*.mid文件可以用作曲软件写出,也可以通过声卡的 MIDI口把外接音序器演奏的乐曲输入电脑里,制成*.mid文件。
WMA:最具实力
WMA (Windows Media Audio) 格式是来自于微软的重量级选手,后台强硬,音质要强于MP3格式,更远胜于RA格式,它和日本YAMAHA公司开发的VQF格式一样,是以减少数据流量但保持音质的方法来达到比MP3压缩率更高的目的,WMA的压缩率一般都可以达到1:18左右,WMA的另一个优点是内容提供商可以通过DRM(Digital Rights Management)方案如Windows Media Rights Manager 7加入防拷贝保护。这种内置了版权保护技术可以限制播放时间和播放次数甚至于播放的机器等等,这对被盗版搅得焦头乱额的音乐公司来说可是一个福音,另外 WMA还支持音频流(Stream) 技术,适合在网络上在线播放,作为微软抢占网络音乐的开路先锋可以说是技术领先、风头强劲,更方便的是不用象MP3那样需要安装额外的播放器,而 Windows操作系统和Windows Media Player的无缝捆绑让你只要安装了windows操作系统就可以直接播放WMA音乐,新版本的Windows Media Player7.0更是增加了直接把CD光盘转换为WMA声音格式的功能,在新出品的操作系统Windows XP中,WMA是默认的编码格式,大家知道Netscape的遭遇,现在“狼”又来了。WMA这种格式在录制时可以对音质进行调节。同一格式,音质好的可与CD媲美,压缩率较高的可用于网络广播。虽然现在网络上还不是很流行,但是在微软的大规模推广下已经是得到了越来越多站点的承认和大力支持,在网络音乐领域中直逼*.mp3,在网络广播方面,也正在瓜分Real打下的天下。因此,几乎所有的音频格式都感受到了WMA格式的压力。
RealAudio:流动旋律
RealAudio主要适用于在网络上的在线音乐欣赏,现在大多数的用户仍然在使用56Kbps或更低速率的Modem,所以典型的回放并非最好的音质。有的下载站点会提示你根据你的Modem速率选择最佳的Real文件。现在real的的文件格式主要有这么几种:有RA(RealAudio)、 RM(RealMedia,RealAudio G2)、RMX(RealAudio Secured),还有更多。这些格式的特点是可以随网络带宽的不同而改变声音的质量,在保证大多数人听到流畅声音的前提下,令带宽较富裕的听众获得较好的音质。
近来随着网络带宽的普遍改善,Real公司正推出用于网络广播的、达到CD音质的格式。如果你的RealPlayer软件不能处理这种格式,它就会提醒你下载一个免费的升级包。许多音乐网站 提供了歌曲的Real格式的试听版本。现在最新的版本是RealPlayer 11。
VQF:无人问津
雅马哈公司另一种格式是*.vqf,它的核心是减少数据流量但保持音质的方法来达到更高的压缩比,可以说技术上也是很先进的,但是由于宣传不力,这种格式难有用武之地。*.vqf可以用雅马哈的播放器播放。同时雅马哈也提供从*.wav文件转换到*.vqf文件的软件。 此文件缺少特点外加缺乏宣传,现在几乎已经宣布死刑了。
OGG:新生代音频格式
ogg格式完全开源,完全免费, 和mp3不相上下的新格式。 与MP3类似,OGGVorbis也是对音频进行有损压缩编码,但通过使用更加先进的声学模型去减少损失,因此,相同码率编码的OGGVorbis比MP3音质更好一些,文件也更小一些。另外,MP3格式是受专利保护的。发布或者销售MP3编码器、MP3解码器、MP3格式音乐作品,都需要付专利使用费。而OGGVorbis就完全没有这个问题。目前,OGGVorbis虽然还不普及,但在音乐软件、游戏音效、便携播放器、网络浏览器上都得到广泛支持。
FLAC:自由无损音频格式
FLAC即是Free Lossless Audio Codec的缩写,中文可解为无损音频压缩编码。FLAC是一套着名的自由音频压缩编码,其特点是无损压缩。不同于其他有损压缩编码如MP3 及AAC,它不会破坏任何原有的音频资讯,所以可以还原音乐光盘音质。现在它已被很多软件及硬件音频产品所支持。FLAC是免费的并且支持大多数的操作系统,包括 Windows,基于Unix内核而开发的系统 (linux, *BSD,Solaris,OSX,IRIX),BeOS,OS/2,Amiga。并且FLAC提供了在开发工具 autotools,MSVC,Watcom C,ProjectBuilder上的build系统。
APE:最有前途的网络无损格式
APE是目前流行的数字音乐文件格式之一。与MP3这类有损压缩方式不同,APE是一种无损压缩音频技术,也就是说当你将从音频CD上读取的音频数据文件压缩成APE格式后,你还可以再将APE格式的文件还原,而还原后的音频文件与压缩前的一模一样,没有任何损失。APE的文件大小大概为CD的一半,但是随着宽带的普及,APE格式受到了许多音乐爱好者的喜爱,特别是对于希望通过网络传输音频CD的朋友来说,APE可以帮助他们节约大量的资源。
作为数字音乐文件格式的标准,WAV格式容量过大,因而使用起来很不方便。因此,一般情况下我们把它压缩为MP3或 WMA 格式。压缩方法有无损压缩,有损压缩,以及混成压缩。MPEG, JPEG就属于混成压缩,如果把压缩的数据还原回去,数据其实是不一样的。当然,人耳是无法分辨的。因此,如果把 MP3, OGG格式从压缩的状态还原回去的话,就会产生损失。
然而APE压缩格式即使还原,也能毫无损失地保留原有音质。所以,APE可以无损失高音质地压缩和还原。当然,目前只能把音乐CD中的曲目和未压缩的WAV文件转换成APE格式,MP3文件还无法转换为APE格式。事实上APE的压缩率并不高,虽然音质保持得很好,但是压缩后的容量也没小多少。一个34MB的WAV文件,压缩为APE格式后,仍有17MB左右。对于一整张CD来说,压缩省下来的容量还是可观的。
APE的本质,其实它是一种无损压缩音频格式。庞大的WAV音频文件可以通过Monkey's Audio这个软件压缩为APE。很多时候它被用做网络音频文件传输,因为被压缩后的APE文件容量要比WAV源文件小一半多,可以节约传输所用的时间。更重要的是,通过Monkey's Audio解压缩还原以后得到的WAV文件可以做到与压缩前的源文件完全一致。所以APE被誉为“无损音频压缩格式”,Monkey''s Audio被誉为“无损音频压缩软件”。与采用WinZip或者WinRAR这类专业数据压缩软件来压缩音频文件不同,压缩之后的APE音频文件是可以直接被播放的。Monkey's Audio会向Winamp中安装一个“in_APE.dll”插件,从而使Winamp也具备播放APE文件的能力。同样foobar2000,以及千千静听也能支持APE的播放。
‘肆’ 压缩算法原理
哈夫曼
哈夫曼编码是无损压缩当中最好的方法。它使用预先二进制描述来替换每个符号,长度由特殊符号出现的频率决定。常见的符号需要很少的位来表示,而不常见的符号需要很多为来表示。
哈夫曼算法在改变任何符号二进制编码引起少量密集表现方面是最佳的。然而,它并不处理符号的顺序和重复或序号的序列。
2.1 原理
我不打算探究哈夫曼编码的所有实际的细节,但基本的原理是为每个符号找到新的二进制表示,从而通常符号使用很少的位,不常见的符号使用较多的位。
简短的说,这个问题的解决方案是为了查找每个符号的通用程度,我们建立一个未压缩数据的柱状图;通过递归拆分这个柱状图为两部分来创建一个二叉树,每个递归的一半应该和另一半具有同样的权(权是 ∑ N K =1 符号数 k , N 是分之中符号的数量,符号数 k 是符号 k出现的次数 )
这棵树有两个目的:
1. 编码器使用这棵树来找到每个符号最优的表示方法
2. 解码器使用这棵树唯一的标识在压缩流中每个编码的开始和结束,其通过在读压缩数据位的时候自顶向底的遍历树,选择基于数据流中的每个独立位的分支,一旦一个到达叶子节点,解码器知道一个完整的编码已经读出来了。
压缩后的数据流是 24 位(三个字节),原来是 80 位( 10 个字节)。当然,我应该存储哈夫曼树,这样解码器就能够解码出对应的压缩流了,这就使得该例子中的真正数据流比输入的流数据量大。这是相对较短的数据上的副作用。对于大数据量来说,上面的哈夫曼树就不占太多比例了。
解码的时候,从上到下遍历树,为压缩的流选择从左 / 右分支,每次碰到一个叶子节点的时候,就可以将对应的字节写到解压输出流中,然后再从根开始遍历。
2.2 实现
哈夫曼编码器可以在基本压缩库中找到,其是非常直接的实现。
这个实现的基本缺陷是:
1. 慢位流实现
2. 相当慢的解码(比编码慢)
3. 最大的树深度是 32 (编码器在任何超过 32 位大小的时候退出)。如果我不是搞错的话,这是不可能的,除非输出的数据大于 2 32字节。
另一方面,这个实现有几个优点:
1. 哈夫曼树以一个紧密的形式每个符号要求 12 位(对于 8 位的符号)的方式存储,这意味着最大的头为 384 。
2. 编码相当容易理解
哈夫曼编码在数据有噪音的情况(不是有规律的,例如 RLE )下非常好,这中情况下大多数基于字典方式的编码器都有问题。
‘伍’ 压缩比例最高的压缩程序是什么
目前流行的几种软件的压缩比较
1软件介绍
2软件的压缩算法
3压缩环境
4压缩比较
5评价
1软件介绍
bzip 2.0
在linux环境下广泛使用,压缩性能优良,压缩、解压缩速度都很快。
wirar2.0
流行好用的压缩工具,支持鼠标拖放及外壳扩展,完美支持 ZIP 档案,内置程序可以解开 CAB、ARJ、LZH、TAR、GZ、ACE、UUE、BZ2、JAR、ISO 等多种类型的压缩文件;具有估计压缩功能,你可以在压缩文件之前得到用 ZIP 和 RAR 两种压缩工具各三种压缩方式下的大概压缩率;具有历史记录和收藏夹功能;压缩率相当高,而资源占用相对较少、固定压缩、多媒体压缩和多卷自释放压缩是大多压缩工具所不具备的;使用非常简单方便,配置选项不多,仅在资源管理器中就可以完成你想做的工作;对于 ZIP 和 RAR 的自释放档案文件( DOS 和 WINDOWS 格式均可),点击属性就可以轻易知道此文件的压缩属性,如果有注释,还能在属性中查看其内容。新版更加强了 NT/2000 在信息安全和数据流方面的功能,并对不同的需要保存不同的压缩配置。winrar解压缩zip文件时,使用的就是InfoZip提供的代码。winrar里内置了许多其他压缩格式的解码插件。
WinZip
WinZip 9.0的主要改进集中在几个核心压缩、兼容性以及全新的超级数据加密功能上。通过WinZip 9.0 你可以获得更大的压缩比率,压缩的更好,以及更安全的保护你敏感的敏感数据。WinZip 9.0 包含了先进的“真空”(enhanced deflate)压缩算法,可以进一步的提高压缩比率和打包后的Zip文件大小,为你节省文件传输的时间和磁盘空间。但是之前版本的WinZip将无法解压用新的压缩算法打包的Zip文件。ZIP文件使用LZ77算法的变体来压缩数据。
UHARC GUI V1.1.5e
极好的压缩软件,号称世界上压缩比最大的软件。
2软件的压缩算法
WinZip 9.0 包含了先进的“真空”(enhanced deflate)压缩算法.
固实压缩文件是 RAR 的一种特殊压缩方式存储的压缩文件,它把压缩文件中的全部文件都当成一个连续数据流来看待。固实压缩文件只支持 RAR 格式的压缩文件,ZIP 压缩文件永远是非固实的。
3压缩环境
windows 2000+sp4
linux9.0 for bzip2.0
4压缩比较
Bzip2.0
Original data à 44*8/154.6=2.278
Pure data à 31.3*8/118.2=2.118
Caption text à 2.2*8/5.9=2.983
(2.2+31.3)*8/154.6=1.734
UHARC GUI V1.1.5e
Original data à 40.8*8/154.6=2.111
Pure data à 27.9*8/118.2=1.888
Caption text à 2.28*8/5.87=3.107
winrar3.20
Original data à 49.6*8/154.6=2.566
Pure data à 33.7*8/118=2.28
Caption text à 2.39*8/5.87=3.257
winzip9.0beta test
Original data à 53.5*8/154.6=2.768
Pure data à36.4*8/118.2=2.46
Caption text à 2.43*8/5.87=3.311
5评价
uharc gui的压缩性能的确优秀,唯一遗憾的是压缩文件的格式和主流格式不一致。Linux环境下广泛应用的bzip的压缩性能比windows环境下经常用到的软件的压缩性能好很多。尤其是对文本的压缩。
‘陆’ zip、bzip、lzma和ZLib如果极限压缩的话,那种压缩率最高除这几种之外,还有没有压缩率更高的压缩方式
LZMA和ZLIB压缩测试:
输出结果:
zlib压缩:255ms size:5.08MB
zlib解压:12ms
lzma压缩:1974ms size:5.11MB
lzma解压:399ms
LZMA.AS解压:27381ms
这结果真让人大失所望,不知道是不是测试的有问题,没有更小,反而更大了。而且解压时间长了几十倍。as版的LZMA解压时间更是无法接受。还是继续用zlib吧。
ZLIB最高
‘柒’ 文件压缩都有哪些算法,还请讲下这些算法的原理.分我1000多,要多少说下就行.
只有最常见的zip的,估计你都要研究上n久了。。。
文本文件一般有zip,rar,
网页文件有htz
视频文件有rm,avi
语音文件有mp3,
图片文件有png,gif,jpg
这些都是文件压缩的。。。。
------------------------------------
ZIP文件的总体格式
分文件头信息+文件压缩数据
中心目录+中心目录记录结束符
1.分文件头信息:
字节数 描述
4 分文件头信息标志(0x04034b50)
2 解压缩所需版本
2 通用比特标志位(置比特0位=加密;置比特1位=使用压
缩方式6,并使用8k变化目录,否则使用4k变化目录;置比特2位=使用压
缩方式6,并使用3个ShannonFano树对变化目录输出编码,否则使用2个
ShannonFano树对变化目录输出编码,其它比特位未用)
2 压缩方式(0=不压缩,1=缩小,2=以压缩因素1缩小,3=以
压缩因素2缩小,4=以压缩因素3缩小,5=以压缩因素4缩小,6=自展)
2 文件最后修改时间
2 文件最后修改日期
4 32位校验码
4 压缩文件大小
4 未压缩文件大小
2 文件名长
2 扩展段长
? 文件名(不定长)
? 扩展段(不定长)
2.中心目录结构
文件头信息...中心目录记录结束符
文件头:
字节数 描述
4 中心文件头信息标志(0x02014b50)
2 主机操作系统(高位字节表示主机操作系统,低位字
节表示ZIP压缩软件版本号,其值除以10表示主版本号,其值模10表示
次版本号。0=MS-DOS,OS/2 FAT文件系统,1=Ami ga,2=VMS,3=Unix及
变种,4=VM/CMS,5=AtariST,6=OS/2 HPFS,7=Macintosh,8=Z-System,9
=C P/M,10-255未用)
2 解压缩所需版本
2 通用比特标志
2 压缩方式
2 文件最后修改时间(用标准的MS-DOS时间日 期格式
编码)
2 文件最后修改日期
4 32位校验码(使用David Schwaderer的CRC-32算法产
生)
4 压缩文件大小
4 未压缩文件大小
2 文件名长
2 扩展段长
2 文件注释长(分别为文件名长,扩展段,注释 段,小于
64K)
2 磁盘起始号(本文件在磁盘中的起始号)
2 内部文件属性(最低位若置1,表示为ASC文本,否则为
二进制数据,其它位未用)
4 外部文件属性(依赖于主机操作系统)
4 分文件头相对位移
? 文件名(不定长)
? 扩展段(不定长,用于未来扩展,低版本为0长)
? 文件注释(不定长)
3.中心目录记录结束符
字节数 描述
4 中心目录标记结束符(0x06054b50)
2 磁盘号(其中包括中心目录结束记录)
2 磁盘中心目录起始号
2 磁盘中心目录入口总数
2 中心目录入口总数(ZIP文件中的文件总数)
2 整个中心目录大小
4 关于起始磁盘号的中心目录初始偏移
2 ZIP文件注释长度
? ZIP文件注释(不定长)
加密方法
PKZIP中使用的加密方法由Roger Schlafly提供。ZIP文件在解压
缩前必须先解密。每个加密文件具有一个12字节的加密文件头扩展信
息,存储于数据区的起始位置,加密前先设置一个起始值,然后被三个3
2位的密钥加密。密钥被使用者提供的口令初始化。12个字节加密之
后,由PKZIP的伪随机数产生方法,结合PKZIP中使用CRC-32算法对密钥
进行更新。
具体实施分为三步:
1.用口令对三个32位密钥初始化。
K(0)=305419896,K(1)=591751049,K(2)=878082192
循环 for i=0 to length(password)-1
调用更新密钥函数 update_keys(password(i))
结束循环(循环口令长度次)
其中更新密钥函数为:
update_keys(char):
Key(0)=crc32(key(0),char)
Key(1)=Key(1)+(Key(0)& 000000ffH)
Key(1)=Key(1)*134775813+1
Key(2)=crc32(Key(2),Key(1)〉〉24)
end update_keys
CRC32函数中,给定一个4字节的CRC值和一个字符,返回一个由CRC
-32算法更新的CRC。具体为:
crc32(c,b)=crc32tab[(c^b)&0xff]^(c>>8),crc32tab[256]的值
为固定的256个4字节数。
2.读取并加密12字节的加密头,再次对密钥进行初始化。
将12个字节的加密头读入缓冲区buffer(0)至buffer(11),循环fo
r i=0 to 11
C=buffer(i)^decrypt_byte()
update_keys(C)
buffer(i)=C
结束循环(循环12次)
其中的decrypt_byte()函数为:
unsigned char decrypt_byte()
local unsigned short temp
temp=Key(2)¦2
decrypt_byte=((temp*(temp^1))>>8)&0xff
end decrypt_byte
该步结束后,缓冲区中最后的二个字节buffer(10)和buffer(11)
将成为加密文件校验码的二个最高位(按低至高顺序存放)。对ZIP加
密文件进行解压缩前,PKUNZIP软件将使用者提供的口令按上述二个步
骤进行处理,得到的结果与校验码的二个高位字节进行比较,只有当提
供了正确的口令时,结果一致,才能进行后续的解压缩过程,否则,PKZI
P报告错误信息,程序自动结束。
3.读取压缩的数据流并以加密密钥对其进行加密。
压缩数据流按下述过程加密:
循环 直至数据流结束
C=数据流的一个字节
temp=C^decrypt_byte()
update_keys(temp)
输出temp
结束循环