【发布时间】:2014-06-02 06:48:59
【问题描述】:
我在 android 应用程序中录制用户的声音,稍后我将其上传到服务器上,但服务器只接受 .mp3、.wav 和 .gsm(8000 Hz,单声道)在服务器上播放声音我正在使用mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP),以便我的文件保存为 .3gp。
因为服务器是第 3 方,我们无权访问它,所以我需要转换或录制 mp3/wav 或 gsm 格式的文件。
但我不知道如何在 mp3 或 wav 中转换或录制文件,android 中有没有办法做到这一点
到目前为止,我正在使用以下代码 mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(AudioEncoder.AMR_NB);
【问题讨论】:
-
您还没有说明服务器支持哪些编解码器。但是如果我们假设 mpeg-1 layer-3、gsm 06.10 和未压缩的 PCM,那么 AMR_NB 显然是行不通的。您最好的选择可能是将 mp3 或 gsm 06.10 编码器与您的应用程序捆绑在一起(请记住,可能会涉及版税),使用
AudioRecord类录制未压缩的 PCM,使用捆绑的编码器对音频进行编码,然后将其上传到服务器。如果带宽不是问题,您可以在 PCM 数据上添加 RIFF 标头以获取 WAV 文件并上传,而无需对数据进行编码。 -
你能告诉我如何从 AMR 获取 WAV 文件吗?在安卓中