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
了。
标题:Linux中使sox支持mp3的encoding和decoding
原文链接:https://beltxman.com/2341.html
若无特殊说明本站内容为 行星带 原创,未经同意请勿转载。
兄弟,太感谢你了!
有帮助就好