音频处理领域的瑞士军刀──SoX
SoX 是命令行下的一套音频处理组件,由于其功能强大,号称”音频处理领域的瑞士军刀”.
那么SoX到底有什么功能呢?它可以播放/转换/录制多种音频格式文件,包括但不限于mp3/wav/ogg/flac/avi/wmv/pcm/gsm等,要了解完整的支持格式,可以参见官网的介绍.
其中,播放/转换/录制 分别对应 paly/sox/rec 几个命令,没错,大名鼎鼎的play命令正是SoX的组件之一,哈哈,现在感觉到它的强大了吧?
下面用几个例子来进一步说明,由于工作关系,经常接触到PCM和GSM的音频,幸好有SoX.就以这些文件为例,mp3之类的常用文件格式就更轻松了:
播放wav文件:
play -t wav hello-world.wav |
播放pcm文件,由于格式的不确定性,需要指定编码方式和码率,如果给的值不对,就会听到变调的声音了,哈哈:
play -t raw -r 8k -e a-law hello-world.pcm |
播放gsm文件:
play -t gsm hello-world.gsm |
把gsm文件转换成wav格式:
sox -t gsm hello-world.gsm hello-world.wav |
把gsm文件转换成8k采样率A率的pcm格式:
sox -t gsm hello-world.gsm -t raw -r 8k -e a-law hello-world.pcm |
把wav文件转换成8k采样率A率的pcm格式:
sox -t wav hello-world.wav -t raw -r 8k -e a-law hello-world.pcm |
把声卡的声音录制成wav格式,默认应该是48k采样率16bit量化的双声道Signed PCM编码.这些参数都可以指定:
rec -t wav rec.wav |
厉害吧~
另外,值得一提的是,由于libmagic包的故障,gentoo下的sox有时候不能根据扩展名来识别声音格式了,会报 no handler for detected file type `application/octet-stream; charset=binary’ 的错误,所以上述命令都加了-t参数直接指定格式,就没问题了.
chisiyuan 在 2009年05月06日 17:30 说:【 】
MS很强大,不过没用过。俺用的是mencoder或是ffmpeg。
TualatriX 在 2009年05月06日 19:00 说:【 】
不错,好工具,而且难得的高版本,居然14了。
boy89 在 2009年12月01日 21:09 说:【 】
只能一首一首的吗,能按列表播放不
bones7456 在 2009年12月02日 08:26 说:【 】
呃。。这个的目的不是播放器,要列表就自己写脚本喽,呵呵