Linux中使sox支持mp3的encoding和decoding

sox自身是不支持mp3格式的decodingencoding的,也就不能对mp3进行任何操作或者输出mp3文件。

直接使用soxmp3文件进行操作会提示这两个错误:

SoX was compiled without MP3 decoding support
SoX was compiled without MP3 encoding support

项目需要将wav转换成mp3,并且切割长mp3文件为多个短文件,这里我是借助lame来编码mp3输出,libmad库来解码mp3

sox以及两个库的介绍和下载:

SoX http://sox.sourceforge.net
download: https://nchc.dl.sourceforge.net/project/sox/sox/14.4.2/sox-14.4.2.tar.gz

Lame MP3 encoder  http://lame.sourceforge.net
download: https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz

libmad MP3 decoder   http://www.underbit.com/products/mad
download: https://nchc.dl.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz

安装libmad

tar -xzvf libmad-0.15.1b.tar.gz
#强行插入一步备注A
cd libmad-0.15.1b
./configure
make install

备注A:解压后需要修改一下编译参数,不然会编译报错:

gcc: error: unrecognized command line option '-fforce-mem'

修改configure文件,搜索-fforce-mem,删除这一行即可。

参考:https://stackoverflow.com/questions/16835803/gcc-error-unrecognized-command-line-option-fforce-mem

安装lame

tar -xzvf lame-3.100.tar.gz
cd lame-3.100
./configure
make install

这时候已经可以使用lame命令了,试试lame --help

安装sox

tar -xzvf sox-14.4.2.tar.gz
cd sox-14.4.2
./configure
make install

这样就安装完成了,可以运行sox --version试试,也有人很不幸,比如博主我,运行sox命令遇到了类似这种报错:

sox: error while loading shared libraries: libsox.so.3: cannot open shared object file: No such file or directory

这是因为使用了共享库文件,动态链接库的原因,运行ldconfig命令刷新一下库缓存就可以了。

参考:https://blog.csdn.net/u011641885/article/details/49071081

跟踪库加载
ldd /usr/local/bin/sox
库文件位置
/usr/local/lib
运行命令刷新库缓存
ldconfig

到此,就可以使用sox进行编码解码操作了,你的sox完全支持mp3了。

一条评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注