【问题标题】:Android AudioRecord and MediaRecorderAndroid AudioRecord 和 MediaRecorder
【发布时间】:2012-09-28 15:24:21
【问题描述】:

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

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

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

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

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

感谢您的回复。

【问题讨论】:

    标签: android media-player mediarecorder audiorecord feature-extraction


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这对我有用。最后,我将音频录制在原始 pcm 文件中,并且可以使用 AudioTrack 播放它们。
    【解决方案2】:

    为了获得最佳质量结果,您必须使用 AudioRecord 类而不是 MediaRecorder。
    请查看以下链接:
    Need a simple example for audio recording

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-10-07
        • 2011-08-18
        • 2012-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-23
        • 2011-06-10
        • 1970-01-01
        相关资源
        最近更新 更多