项目中需要录音上传服务器,服务器端使用浏览器播放,
有2种方案:
1. Android App录制wav格式音频上传服务器,服务器直接可以使用浏览器进行播放;
2. Android App录制amr格式音频上传服务器,服务器对音频进行转码为wav格式进行播放;
方案1:
思路1: 使用AudioRecord录制pcm格式音频,然后pcm转wav格式音频;
思路2: 使用Lame直接录制mp3格式音频;
方案2:
思路:使用MediaRecord录制amr格式音频,上传服务器使用JAVE转换为wav格式音频;
优缺点:
强烈推荐方案2,录制音频体积小,上传服务器节省流量,加快上传速度;
JAVE简介
1.JAVE是Java Audio Video Encoder简写,是Java包装的ffmpeg项目,可以将音频或视频从一种格式转码另一种格式,可以分离和转码音视频,可以调整视频大小、比例等;
2. 官方网站:http://www.sauronsoftware.it/projects/jave/index.php
amr转mp3/wav代码:
1.下载jave.jar;
2.代码如下:
package com.niubashaoye.java.demo;
import it.sauronsoftware.jave.AudioAttributes;
import it.sauronsoftware.jave.Encoder;
import it.sauronsoftware.jave.EncoderException;
import it.sauronsoftware.jave.EncodingAttributes;
import it.sauronsoftware.jave.InputFormatException;
import java.io.File;
public class Amr2Mp3 {
public static void main(String[] args) throws Exception {
String path1 = "E:\\124.amr";
String path2 = "E:\\124.wav";
changeToMp3(path1, path2);
}
public static void changeToMp3(String sourcePath, String targetPath) {
File source = new File(sourcePath);
File target = new File(targetPath);
AudioAttributes audio = new AudioAttributes();
Encoder encoder = new Encoder();
audio.setCodec("libmp3lame");
EncodingAttributes attrs = new EncodingAttributes();
attrs.setFormat("mp3");
attrs.setAudioAttributes(audio);
try {
encoder.encode(source, target, attrs);
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (InputFormatException e) {
e.printStackTrace();
} catch (EncoderException e) {
e.printStackTrace();
}
}
}