2009年2月24日星期二

几个音频相关的程序

Linux 下面为了规避一些专利,经常会开发一些很好的替代产品,比如 gif 曾经是专利保护的,Linux 下使用很可能涉及到这种很让人 Orz 的专利勒索,结果不能没图片用啊,于是出现了 png。音频处理里面也是,因为 mp3 是专利保护的,为了避免官司,Linux 下面也出现了一些替代 mp3 的格式。这里就从一些这方面东西说起。

谈论到音质,似乎大家最认可的是 CD,CD 和普通的数据光盘的格式是不一样的,上面没有文件系统,如果想做成光盘镜像,dd 是无法实现的。一般用到的工具就是 cdda2wav(现在改用 icedax 了),就是直接从 CD 的音轨转换成 wav。比较高级一点的工具是 cdrdao,这个相当于是整碟拷贝,不过产生的那个 bin/cue (其实一开始生成的是 toc,然后转换)似乎在 Linux 里面没法直接用,倒是 Windows 里面那个 daemon-tools 可以挂载。

CD 有一个编号,可以使用 CDDB 数据库查询获得关于 CD 的很多信息,这个很多相关的程序可以调用。可以用 cddb 这个包提供的命令行接口玩玩。

Linux 里面对付 bin/cue 有一个叫 bchunk 的东西,可以转换成为 ISO 或者 wav/cdr 格式,audio cd 只能转换成为音频文件。使用 cdrdao 的一个好处可能是避免 jitter,另外有一个 paranoia 的工具据说比 cdda2wav 强大也是可以避免 jitter。

下载下来的音乐,存放为 wav 显然比较不合适,一般有有损和无损两种解决方案。FLAC 就是无损的解决方案,就我们实验看来,压缩比在 40-70% 之间,跟文件内容有关系(纯噪声基本压不了),所以最后一张 700Mb 的 CD 就变成 300Mb+ 了。FLAC 提供了存储 CDDB 信息的结构。值得一提的是 FLAC 可以用 OGG 作为容器(oga),这可以用来做 streaming。另有一个 MAC 中用的 Mokey's audio file 格式(.ape),也是无损的,比 FLAC 稍好。

有损的方案里面,比较流行的就是 MP3,这是使用 lame 实现压缩的(其实是 MPEG layer 1 和 2,layer 3 被专利保护了),支持两种可变 bit 编码。开源世界里面的 MP3 的替代品就是 OGG,这在 vorbis-ogg 里面提供了编码解码的工具,现在绝大多数的播放器也支持 OGG,甚至有的 MP3 USB 也支持。OGG 在 -q 3 的时候实现的 110kbps 的编码音质和 MP3 128kbps 编码音质接近,但是体积更小,压缩比接近 10%。使用 -q 0 可以获得更小的码率(50kbps),但是作为通话使用应该是绰绰有余了。OGG 和 MP3 类似也提供了存储 CDDB 信息的结构,也就是传说中的 ID tags。

faad 是 Linux 里面 MP4 的解码程序,但仅仅提供了解码(编码对应为 faac 不知道为啥 debian 里面没有)。sox 是一个音频格式的转换、处理程序,类似有一个视频的转换程序就是大名鼎鼎的 ffmpeg 了。

没有评论: