6

我正在开发一个音频处理应用程序,我需要在其中录制音频,然后对其进行处理以获得该录音的功能。但是,我希望使用 MediaPlayer 播放可播放格式的音频。

我已经看到要录制音频以进行处理,最好使用 AudioRecord,因为我可以从那里获取原始音频。但是我不能以可播放的格式将数据写入文件(在 android 中是否有任何库可以做到这一点?)。

我使用这种方法记录原始数据,然后将其写入文件: http ://andrewbrobinson.com/2011/11/27/capturing-raw-audio-data-in-android/ 但是当我尝试播放这个文件时在设备上,它无法播放。

然后,如果我使用 MediaRecorder,我不知道如何解码数据以提取特征。我一直在看 MediaExtractor,但它似乎 MediaExtractor 不解码帧。

那么.. 最好的方法是什么?我想这在任何音频处理应用程序中都很常见,但我无法找到管理它的方法。

感谢您的回复。

4

3 回答 3

16

AudioRecord如果您需要进行任何类型的处理,使用是正确的方法。要播放它,您有几个选择。如果您只打算在您的应用程序中播放它,您可以使用AudioTrack而不是MediaPlayer播放原始 PCM 流。

如果您希望它可以与其他应用程序一起玩,您需要先将其转换为其他应用程序。WAV 通常是最简单的,因为您只需要添加header。您还可以找到用于转换为其他格式的库,例如用于 OGG 的 JOrbis 或用于 MP3 的 JLayer 等。

于 2012-10-08T13:02:35.420 回答
2

为了获得最佳质量结果,您必须使用 AudioRecord 类而不是 MediaRecorder。
请查看以下链接:
需要一个简单的录音示例

也看看这个链接:http: //i-liger.com/article/android-wav-audio-recording

于 2012-10-08T11:29:41.613 回答
2

如果使用 AudioRecord 对象获取原始音频信号,下一步将其保存为可播放文件并不难,您只需在捕获的音频数据前添加一个 WAV Head,然后您将获得一个 .WAV 文件您可以在大多数手机上播放它。

.WAV 文件是 RIFF 格式的文件。WAV 文件的 RIFF 标头长 44 字节,包含采样率、采样宽度和通道计数信息。您可以从这里获取详细信息

我在 Android 手机上做了示例功能,它工作正常。

于 2014-02-06T15:33:46.420 回答