繁体   English   中英

使用java库将Audio AMR转换为WAV

[英]Convert Audio AMR to WAV using java libraries

我需要WAV格式的音频文件来建立一些功能,但如果我从客户端到服务器获得AMR格式的音频文件,我需要将其转换为WAV格式。 现在我使用JAVE库文件将其他格式的音频媒体文件转换为WAV格式。 一切正常,但当我收到AMR音频文件时,它会抛出异常,如“it.sauronsoftware.jave.EncoderException:持续时间:N / A,比特率:N / A”,我在下面发布了我的代码......

/**
 * method to convert all media format to wav format
 * 
 * @param fileLoc
 * @return
 */
public static String universalContentToWav(String fileLoc) {
    String location = SoundWaveConstants.AUDIO_LOCATION + new Date().getTime() + ".wav";
    AudioAttributes audio = new AudioAttributes();
    audio.setCodec("pcm_s16le");
    EncodingAttributes attrs = new EncodingAttributes();
    attrs.setFormat("wav");
    attrs.setAudioAttributes(audio);
    Encoder encoder = new Encoder();
    try {
        encoder.encode(new File(fileLoc), new File(location), attrs);
        System.out.println("done");
    } catch (Exception e) {
        e.printStackTrace();
    }
    return location;
}

我正在使用http://www.sauronsoftware.it/projects/jave/中的java库文件。 有没有办法将AMR文件更改为WAV或需要对我的代码进行一些更改。 提前致谢。

jave项目太旧了,无法处理某些异常情况。 我创建了一个解决EncoderException的项目。 您唯一需要做的就是包含maven依赖:

<dependency>
    <groupId>com.github.dadiyang</groupId>
    <artifactId>jave</artifactId>
    <version>1.0.2</version>
</dependency>

并调用AudioUtils.amrToWav方法:

 File source = new File("testAudio.amr");
 File wavTarget = new File("testAudio.wav");
 it.sauronsoftware.jave.AudioUtils.amrToWav(source, wavTarget);

该项目包括用于Linux / Mac / Windows的ffmpeg可执行文件,如果提供的exe与您的平台不兼容,您可以将ffmpeg.home设置为系统属性以告知您自己的ffmpeg可执行文件存在于何处,例如:

System.setProperty("ffmpeg.home", "/usr/local/bin/")

顺便说一句,为了兼容性,我的项目的包名与jave相同,为了避免包冲突,请删除sauronsoftware jave的jar。

项目地点: https//github.com/dadiyang/jave

英文文件: https//github.com/dadiyang/jave/blob/master/README-en.md

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM