sox 自身是不支持
mp3 格式的
decoding 和
encoding 的,也就不能对
mp3 进行任何操作或者输出
mp3 文件。
直接使用
sox 对
mp3 文件进行操作会提示这两个错误:
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 了。
兄弟,太感谢你了!
有帮助就好