ALAC、FLAC、APE 这些无损格式都是把 WAV 无损压缩了而已,原始 WAV 文件相同,音质也都没区别,只是不同的压缩算法,压缩率会有不同。
(一)ALAC
1.ALAC (Apple lossless audio codec) is an audio coding format, which is developed by Apple Inc. and used for lossless data compression of digital music. 苹果在Apache v2.0许可证下开源了“苹果无损音频编解码器(Apple Lossless Audio Codec,缩写ALAC)”。
2.ALAC container 一般是M4a,后缀是.m4a or .alac,属于可逆压缩的一种格式,因此为无损音频格式。(也就是解码后的wav 文件跟原始wav 一样)。
可以使用工具将APE/FLAC/WAV 转为ALAC,比如itunes.
Supported Audio info:ALAC supports up to 8 audio channels at 16, 20, 24, and 32-bit depth, with a maximum sampling rate of 384kHz.
3.应用场景:起初主要是compatible with Apple's most popular portable music player,现在也有很多厂商支援。
4.版权:free
(二)FLAC
1.FLAC, is an audio coding format for lossless compression of digital audio. It is very similar to MP3 files that are easier to recognize, but is compressed into a smaller file size without any quality loss or original audio data, thus making it "lossless".(lossless:将FLAC文件还原为WAV文件后,与压缩前的WAV文件内容相同.).后缀是.flac
FLAC is a musical file format that offers bit-perfect copies of CDs but at half the size. It is compatible with many phones, portable music players including the PonoPlayer and hi-fi components.
FLAC allows a maximum sampling rate and bit depth limitation ( 32 bit, 384 kHz).
2.容错性:传输出错,只影响当前packet.
3.硬件支持,只有整数运算,编解码较快。
4.平台:平台性优秀,几乎各个平台的版本。
5.版权:free,无损格式中的国际通用标准。
(三)APE
1.APE即Monkey's Audio,是一种常见的无损音频压缩编码格式,扩展名为.ape,比Flac 出现早,应用比较广泛。APE作为传统无损,可以实现可逆转化,还原后的音乐文件与压缩前一模一样,文件比较大,packet size 也很大,一般的codec 32k 一下,APE 一个packet 会达到800K,1000K 这么大。
2.APE decoder的容错能力比较差,传输只要有bit 出错,就影响整个档案的播放,开发者可以优化后达到一个packet 内,当有bit 出错,只影响这一个packet 解码。
3.硬件支持方面,由于采用了浮点运算,编码解码速度慢,对硬件的要求较高,硬件支持度不如FLAC。
4.官方只有windows 版本,普及度不如FLAC.
5.版权:个人作品,后面不好说是否会有版权问题。
(四)WAV
未压缩的digital audio, 不作过多说明。
Reference:ALAC VS FLAC: What Are the Differences and How to Convert
我有一个Ruby程序,它使用rubyzip压缩XML文件的目录树。gem。我的问题是文件开始变得很重,我想提高压缩级别,因为压缩时间不是问题。我在rubyzipdocumentation中找不到一种为创建的ZIP文件指定压缩级别的方法。有人知道如何更改此设置吗?是否有另一个允许指定压缩级别的Ruby库? 最佳答案 这是我通过查看rubyzip内部创建的代码。level=Zlib::BEST_COMPRESSIONZip::ZipOutputStream.open(zip_file)do|zip|Dir.glob("**/*")d
是否有任何可用于Ruby的开源压缩/解压库?有没有人实现过LZW?或者,是否有任何使用压缩组件的开源库可以提取出来独立使用?编辑——感谢您的回答!我应该提到我必须压缩的是只驻留在数据库中的长字符串(我不会压缩文件)。此外,如果可以执行此操作的任何库都具有用于客户端压缩/分解的等效JavaScript实现,那将是理想的,因为这将用于Web应用程序。 最佳答案 您会在rubystdlib下找到所有已交付的ruby库的一个很好的列表.我会使用zlib库,它是开放的,无处不在,您会发现几乎所有语言的库!
我有一个包含100多个zip文件的目录,我需要读取zip文件中的文件以进行一些数据处理,而无需解压缩存档。是否有一个Ruby库可以在不解压缩文件的情况下读取zip存档中的文件内容?使用rubyzip报错:require'zip'Zip::File.open('my_zip.zip')do|zip_file|#Handleentriesonebyonezip_file.eachdo|entry|#Extracttofile/directory/symlinkputs"Extracting#{entry.name}"entry.extract('here')#Readintomemoryc
我有一个正在HerokuCedar堆栈上部署的Rails3.2应用程序。这意味着应用程序本身负责为其静态Assets提供服务。我希望对这些Assets进行gzip压缩,所以我在production.rb的中间件堆栈中插入了Rack::Deflater:middleware.insert_after('Rack::Cache',Rack::Deflater)...curl告诉我这与宣传的一样有效。但是,由于Heroku将全力运行rakeassets:precompile,生成一堆预gzipAssets,我很想使用它们(而不是让Rack::Deflater再次完成所有工作)。我已经看到使用
我想知道与使用native操作系统库执行压缩相比,使用rubyzip压缩数据时的性能差异是什么。我正在从URL获取要压缩的数据,然后使用ZipOutputStream创建zip文件。对于native操作系统实用程序,我正在考虑使用zip工具。很高兴听到这两种方法的优缺点。 最佳答案 事实证明,无论是运算时间还是CPU使用率,都没有太大差异。但是在内存使用方面存在显着差异。与使用ziputil相比,使用rubyzip的过程最终会使用更多的内存。在我们的用例中,内存使用是一个重要问题,因此我们最终使用了zip实用程序。
我知道如何使用rubyzip检索普通zip文件的内容。但是我在解压缩压缩文件夹的内容时遇到了问题,我希望你们中的任何人都能帮助我。这是我用来解压的代码:Zip::ZipFile::open(@file_location)do|zip|zip.eachdo|entry|nextifentry.name=~/__MACOSX/orentry.name=~/\.DS_Store/or!entry.file?logger.debug"#{entry.name}"@data=File.new("#{Rails.root.to_s}/tmp/#{entry.name}")endendentry
我想每周更新一个城市表以反射(reflect)世界各地城市的变化。为此,我正在创建一个Rake任务。如果可能,我希望在不添加其他gem依赖项的情况下执行此操作。压缩文件是在geonames.org/15000cities.zip上公开可用的压缩文件.我的尝试:require'net/http'require'zip'namespace:geocitiesdodesc"RaketasktofetchGeocitiescitylistevery3days"task:fetchdouri=URI('http://download.geonames.org/export/dump/cities
假设我有这个:[{:user_id=>1,:search_id=>a},{:user_id=>1,:search_id=>b},{:user_id=>2,:search_id=>c},{:user_id=>2,:search_id=>d}]我想结束:[{:user_id=>1,:search_id=>[a,b]},{:user_id=>2,:search_id=>[c,d]}]最好的方法是什么? 最佳答案 确实是非常奇怪的要求。无论如何[{:user_id=>1,:search_id=>"a"},{:user_id=>1,:sear
我已经写了一些csv文件并压缩它,使用这个代码:arr=(0...2**16).to_aFile.open('file.bz2','wb')do|f|writer=Bzip2::Writer.newfCSV(writer)do|csv|(2**16).times{csv我想阅读这个csvbzip2ed文件(用bzip2压缩的csv文件)。这些未压缩的文件如下所示:1,24,125,28,71,3...所以我尝试了这段代码:Bzip2::Reader.open(filename)do|bzip2|CSV.foreach(bzip2)do|row|putsrow.inspectendend
有人知道如何使用Carrierwave+MiniMagick将动画GIF压缩到第一帧吗? 最佳答案 我认为MiniMagick有一些变化,因为我只花了三个小时试图找出为什么Andrey的代码对我不起作用。我收到以下错误:ActiveRecord::RecordInvalid(Validationfailed:ImageFailedtomanipulatewithMiniMagick,maybeitisnotanimage?OriginalError:Command("mogrify-scene/var/folders/0o/0oqN