JAVA音频转换MP3转AMR互转

AMR转MP3

maven依赖

        
            com.github.dadiyang
            jave
            1.0.5
        

该库集成了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

你可能感兴趣的:(JAVA,综合,java,ffmpeg)