6

我正在開發一個音頻處理應用程序,我需要錄製音頻,然後對其進行處理以獲取該錄製的功能。但是,我希望音頻以可播放的格式在MediaPlayer中播放。Android AudioRecord和MediaRecorder

我已經看到,要錄製音頻來處理它,最好使用AudioRecord,因爲我可以從那裏獲取原始音頻。但是,我不能以可播放的格式將數據寫入文件(是否有任何庫可以在android中執行此操作?)。

我用這個方法來記錄原始數據,然後將其寫入文件: http://andrewbrobinson.com/2011/11/27/capturing-raw-audio-data-in-android/ 但是,當我嘗試在設備上播放這個文件,它是不能播放。

然後,如果我使用MediaRecorder,我不知道如何解碼數據以提取功能。我一直在尋找MediaExtractor,但它接近MediaExtractor不解碼幀。

那麼..這樣做的最好方法是什麼?我想這在任何音頻處理應用程序中都很常見,但我無法找到管理這個方法的方法。

感謝您的回覆。

回答

16

使用AudioRecord是,如果你需要做任何處理,以正確的方式去。要回放,你有幾個選項。如果您只打算在您的應用中播放,則可以使用AudioTrack而不是MediaPlayer播放原始PCM流。

如果您希望它可以與其他應用程序一起播放,您需要首先將其轉換爲其他應用程序。 WAV通常是最簡單的,因爲你只需要添加header。您還可以找到用於轉換爲其他格式的庫,如用於OGG的JOrbis或用於MP3的JLayer等。

+0

謝謝,這對我有用。最後,我錄製了原始pcm文件中的音頻,並且我可以使用AudioTrack播放它們。 – Miquel

2

如果使用AudioRecord對象獲取原始音頻信號,則下一步將其另存爲可播放文件並不難,只需要在捕獲的音頻數據前添加一個WAV文件頭,然後就可以得到一個.WAV文件,您可以在大多數手機上播放該文件。

.WAV文件是RIFF格式下的文件。 WAV文件的RIFF頭是44字節長,幷包含採樣率,採樣寬度和通道計數信息。你可以從here

得到詳細信息我做了Android手機上的示例功能,它工作。