jave 实现mp3转换amr音频

现有个需求需要微信小程序发出的mp3语音文件转amr格式到终端设备,在网上查了一些方式又说用com.github.dadiyang的jave包转换在linux有问题的,经过实践知识音频编码正确设置就可以正常转换代码如下:

public static void mp3ToAmrUtil(File source, File target){
        AudioAttributes audio = new AudioAttributes();
        audio.setCodec("libopencore_amrnb");
        audio.setBitRate(12200);//比特率
        audio.setChannels(1);//声道;1单声道,2立体声
        audio.setSamplingRate(8000);//采样率(重要!!!)
        EncodingAttributes attrs = new EncodingAttributes();
        attrs.setFormat("amr");
        attrs.setAudioAttributes(audio);
        Mp3ToAmrEncoder encoder = new Mp3ToAmrEncoder();
        try {
            encoder.encode(source, target, attrs);
        } catch (EncoderException e) {
            log.error("mp3ToAmrUtil is error source={}, target", source.getAbsolutePath(), target.getAbsolutePath(), e);
            throw new IllegalArgumentException(ErrorCode.EJ0000000.getCode(), e.getMessage());
        }
    }

有个坑直接用包中的encoder会一直抛异常,因此集成包中encoder 来解决,如下:

public class Mp3ToAmrEncoder extends Encoder {

    @Override
    protected void processErrorOutput(EncodingAttributes attributes, BufferedReader errorReader, File source, EncoderProgressListener listener) throws EncoderException, IOException {
        try {
            String line;
            while ((line = errorReader.readLine()) != null) {
                log.info(line);
            }
        } catch (Exception exp) {
            log.error("file convert error message process failed. ", exp);
        }

    }
}

你可能感兴趣的:(jave 实现mp3转换amr音频)