公司的字典应用出现部分音频文件无法播放的现象,经过测试发现单个字的音频文件比较小,在浏览器下无法播放,于是使用sox在单个字的音频文件上叠加一段空音频,在配合shell脚本批量叠加,由于公司的服务器使用的亚马逊定制的系统(基于fedora),所以不能按照网上的教程直接apt-get或者yum来安装,只能动手编译。默认编译安装sox是无法支持mp3格式的,所以要先编译lame和MAD支持mp3

一、准备源码包

sox : http://sox.sourceforge.net/
lame : http://lame.sourceforge.net/download.php
MAD (MPEG Audio Decode): http://www.underbit.com/products/mad 需要下载MAD里的三个包

按照lame--->libid3tag--->libmad--->madplayer---->sox的顺序编译安装

二、开始安装

yum install gcc gcc-c++       

编译安装

       
./configure             
make       
make install        

基本上就都可以了sox要支持mp3格式在执行./configure后要注意已下的几处是否是yes

gsm........................yes (in-tree) 
lpc10......................yes (in-tree) 
mp2/mp3....................yes 
id3tag....................yes 
lame......................yes 
lame id3tag...............yes 
dlopen lame...............no 
mad.......................yes

如果没问题执行make -s && make install来安装sox
最后可以用sox a.mp3 b.mp3 ab.mp3来验证sox是否成功

三、解决编译出错

如果编译libmad遇到错误(make时):

cc1: error: unrecognized command line option '-fforce-mem' 
make[2]: *** [version.lo] Error 1 
make[2]: Leaving directory `/opt/libmad-0.15.1b'
make[1]: *** [all-recursive] Error 1 
make[1]: Leaving directory `/opt/libmad-0.15.1b'
make: *** [all] Error 2

这时vi Makefile删除-fforce-mem,在执行make就没有问题了

批量叠加mp3文件的shell脚本:https://opswill.com/articles/using-linux-shell-to-add-two-mp3.html

四、参考文章:

http://techblog.netwater.com/?p=4