ffmpeg 音频转amr

1.安装ffmpeg
Mac:
不需要安装,直接在官网下载 http://ffmpeg.org/download.html
下载地址:https://evermeet.cx/ffmpeg/(免安装版,将其copy到自己的目录,直接可以用)
ffmpeg安装后,输入ffmepg -version命令,查看是否支持opencore-amr的解码器
Linux:
下载地址:https://www.johnvansickle.com/ffmpeg/
我选择的是: x86_64 build(适合自己的服务器)也是免安装版
2.amr格式需要opencore-amr
其下载地址:https://sourceforge.net/projects/opencore-amr/
amr编译方法:参考自:http://blog.csdn.net/tylz04/article/details/9041739

其编译方法;
    chmod 755 opencore-amr-0.1.3.tar.gz     //改变文件操作权限
    tar -xzvf opencore-amr-0.1.3.tar.gz     //解压文件
    cd opencore-amr-0.1.3       //进入到opencore-amr文件夹内
    ./configure --enable-shared=no --enable-static=yes  //配置
    make        //编译
    make install

ffmpeg会自己寻找解码器
ffmpeg查看是否支持opencore-amr:
终端输入: ffmpeg查看 –enable-libopencore-armnb和–enable-libopencore-amrwb表示支持opencore-amr解码器

configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzmq --enable-libzvbi --enable-version3 --disable-ffplay --disable-indev=qtkit

3.mp3与wav转amr代码

/** ffmpeg的安装目录,用于启用ffmpeg */
private static final String ffmpeg = "/usr/local/ffmpeg-3.3-64bit-static/ffmpeg";
/**
 * -ab(-b:a) bitrate 设置音频码率
 * -ar freq 设置音频采样率
 * -c:a(-acodec) 设置声音解码器
 * -y 覆盖输出文件,若果源文件已经存在,那么不经提示,直接覆盖
 * -vol 音量大小
 * -ac (声道数1和2)
 * @param sourcePath 源文件地址,输出位置:源文件文件夹内,只改变文件格式
 */
public static boolean changeToAmer(String sourcePath){
    try {
        String prefix = sourcePath.substring(0,sourcePath.lastIndexOf("."));
        String commend = ffmpeg + " -i " + sourcePath + " -c:a libopencore_amrnb -ac 1 -ar 8000 -b:a 7.95K -y " + prefix + ".amr";
        VideoUtilsExt.executeCommend(commend);
    } catch (IOException e) {
        e.printStackTrace();
        return false;
    }
    return true;
}

public static void executeCommend(String commend) throws IOException{
        System.out.println(commend);
        Process process = new ProcessBuilder(Arrays.asList(commend.split(" "))).redirectErrorStream(true).start();
        new MyPrintStream(process.getInputStream()).start();
        try {
            process.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

补充:MyPrintStream内部类,其实就是将视频转换的获得的流打印出来(包括ffmeg相关信息,命令行,以及转换过程,异常信息等)

class MyPrintStream extends Thread{
    InputStream iStream = null;
    public MyPrintStream(InputStream iStream) {
        this.iStream = iStream;
    }

    @Override
    public void run() {
        try{
            int r = 0;
            while ((r = iStream.read())!= -1) {
                System.out.print((char)(r));
            }
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

另外,如果视频转换的并发量比较大,可以创建一个线程池,将转换代码放到线程里面完成。

FFmpeg是一个开源的多媒体处理工具,可以用于音频和视频码、解码和编码等操作。AMR是一种音频格式,通常用于手机语音通话和语音留言等应用。 要在FFmpeg中支持AMR格式,可以参考以下步骤: 1. 下载FFmpeg源代码和OpenCORE AMR库。你可以从FFmpeg官方网站下载源代码[3],从SourceForge下载OpenCORE AMR库。 2. 解压下载的源代码和OpenCORE AMR库。进入FFmpeg源代码目录。 3. 执行以下命令来配置FFmpeg并编译安装: ```shell ./configure --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-nonfree make sudo make install ``` 这些命令将会启用OpenCORE AMR库,并编译安装支持AMR格式的解码器。 4. 安装完成后,你将可以使用FFmpeg来处理AMR格式的音频文件。例如,你可以使用以下命令将一个WAV格式的音频文件换为AMR格式: ```shell ffmpeg -i input.wav -c:a libopencore_amrnb -ar 8000 -ab 12.2k -ac 1 output.amr ``` 这个命令会将输入文件"input.wav"换为输出文件"output.amr",采样率为8000 Hz,比特率为12.2k,通道数为1。 注意,这些步骤是在Linux环境下进行的,适用于Suse 64bit OS。如果你的系统环境不同,请根据实际情况进行相应的调整。 引用表示了一个使用FFmpeg将WAV格式音频文件换为AMR格式的命令示例。引用提供了获取支持AMR解码器的FFmpeg文件的方法。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值