Android录音上传服务器进行播放问题(amr 2 wav)

     项目中需要录音上传服务器,服务器端使用浏览器播放,

有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();
		}
	}

}

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 点我我会动 设计师:上身试试 返回首页