AMR转MP3
maven依赖
<dependency>
<groupId>com.github.dadiyang</groupId>
<artifactId>jave</artifactId>
<version>1.0.5</version>
</dependency>
该库集成了ffmpeg,用于音频转码,主要是在windows下进行使用。
JAVA代码
File sourceFile = new File(D:/source.mp3);//输入
File targetFile = new File("D:/target.amr");//输出
AudioUtils.amrToMp3(sourceFile, targetFile);//转换
MP3转AMR
JAVA代码
File source = new File("D:/source.mp3");//输入
File target = new File("D:/target.amr");//输出
AudioAttributes audio = new AudioAttributes();
audio.setCodec("libamr_nb");//编码器
audio.setBitRate(12200);//比特率
audio.setChannels(1);//声道;1单声道,2立体声
audio.setSamplingRate(8000);//采样率(重要!!!)
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("amr");//格式
attrs.setAudioAttributes(audio);//音频设置
Encoder encoder = new Encoder();
try {
encoder.encode(source, target, attrs);
} catch (EncoderException e) {
e.printStackTrace();
}
在进行编码器和参数设置后,使用参数进行转换,如果是转换视频,则设置视频编码器VideoAttributes
官方文档地址:
http://www.sauronsoftware.it/projects/jave/manual.php
===========================================================================================
接下来是重点了,由于Windows与Linux环境不同,该包在Linux下,不能支持完全的转码,在我的需求中,不能实现MP3转AMR,会报找不到libamr_nb编码器错误。
解决方式,使用外部ffmpeg进行转码,手动添加编码器。
安装环境:
CentOS:yum install -y automake autoconf libtool gcc gcc-c++
Ubuntu:apt-get install automake autoconf libtool gcc gcc-c++
官网下载ffmpeg:
http://ffmpeg.org/download.html
下载编译包:
yasm:http://yasm.tortall.net/Download.html
lame:http://lame.sourceforge.net/download.php
OenCore AMR:http://sourceforge.net/projects/opencore-amr
AmrNB & AmrWB:http://www.penguin.cz/~utx/amr
解压后使用命令:./configure && make && make install
进行安装
tar.gz解压缩:tar -xzvf XXX;
tar.bz2解压缩:tar -xjvf XXX;
编译安装ffmpeg:
进入解压后的ffmpeg目录
./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
make && make install
ldconfig
最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。
转换命令:
MP3转换AMR: ffmpeg -i source.mp3 -ac 1 -ar 8000 target.amr
AMR转换MP3: ffmpeg -i source.amr target.mp3
可能遇到的问题:
ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误
在/etc/ld.so.conf文件中添加以下条目来修复
# vim /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/lib
/usr/local/lib
保存后刷新:
ldconfig
参考帖子:https://blog.csdn.net/weixin_33912638/article/details/91771203