安卓开发里面怎么把mp3文件转为amr文件
使用jave 报错
 public static boolean Mp3ToAmr(String srcname, String targetname)
    {
        File source = new File(srcname);   //源文件
        File target = new File(targetname);   //目标文件
        AudioAttributes audio = new AudioAttributes();
        audio.setCodec("libmp3lame");
        EncodingAttributes attrs = new EncodingAttributes();
        attrs.setFormat("mp3");
        attrs.setAudioAttributes(audio);
        Encoder encoder = new Encoder();
        try {
            encoder.encode(source, target, attrs);
            return true;
        } catch (IllegalArgumentException | EncoderException e) {
            e.printStackTrace();
        }
        return false;
    }

解决方案 »

  1.   

    有一个强大的库叫做FFmpeg,但是这个库是C写的,最简单的方案是直接通过shell命令调用FFmpeg的转换命令转换:1.转换mp3到wav:
    ffmpeg -i DING.mp3 -f wav test.wav
    2.转换wav到amr:
    ffmpeg -i test.wav -acodec libamr_nb -ab 12.2k -ar 8000 -ac 1 wav2amr.amr
    参考资料:https://www.cnblogs.com/xiaofengfeng/p/3573025.html
    其实应该也有直接的转换命令,楼主可以自己查下FFmpeg转换工具的api。其实楼主为什么要做mp3转amr呢,按说二者是可以直接在android中播放的。还可以把mp3上传到服务器(占带宽流量稍多),在服务端通过代码调用FFmpeg库来实现转换。欢迎私信交流。
    有一个开源wav转amr的代码:https://github.com/Distrotech/opencore-amr/tree/distrotech-opencore-amr/test
      

  2.   

    微信发送语音只支持amr,所以需要把发的 mp3文件转为amr,
    服务端的转换已经搞定,但是6M需要5秒
    现在放到安卓端执行转换,没有找到合适的源码
      

  3.   

    调用api。