如何獲取通過android麥克風進入的音頻流的音量?獲取麥克風音量
獲取麥克風音量
回答
有可能是一個更簡單的方法,但我知道將工作的方法是使用配置看MediaRecorder.AudioSource.MIC
音頻源,並且記錄在8位(AudioFormat.ENCODING_PCM_8BIT
)的AudioRecord
對象。您需要一個線程才能在後臺運行,並通過調用read()
調用不斷調查對象的音頻,從而使用麥克風的音頻數據填充給定的字節數組。
由於您是以8位記錄,每個音頻採樣的最大範圍將是-128到127(儘管我可能有這個錯誤 - 它可能是從0到256)。您必須嘗試從返回的字節數組中獲取最大幅度字節,或者根據應用程序的需要獲取RMS平均值。字節數組的大小在確定您的應用程序能夠採樣輸入音頻音量的頻率方面也起着一定的作用。
你好,你可能提供一個樣本,或有點進一步的解釋,我需要做什麼與我捕獲的數據。我已經完成了音頻記錄位,但是,8位不起作用 - 它似乎只是使仿真器崩潰,所以我使用16位PCm代替,是嗎?如果是這樣,「最大量值字節」是什麼意思,這是給定數組的最高值? – januszstabik 2010-10-14 21:43:55
如果您被迫使用16位PCM進行記錄,那麼您必須查看每個其他字節的值,因爲每個採樣都會跨越兩個字節。技巧是知道要查看哪個字節 - 我相信它應該是字節數組中返回的奇數索引字節。 或如果您想要更高的保真度,您可以查看兩個字節,並且您將知道範圍2^15內的輸出音量,而不是2^7。
由於字節類型是用Java簽名的,因此您可以簡單地查看每個buffer[index * 2 + 1]
字節並保存最大的字節。這會給你在給定樣品上檢測到的最大體積。
正如我的其他答案所述,你也可以取這些值的平均值,這取決於你使用這個數字。
- 1. Silverlight Mac麥克風音量
- 2. Win7:獲取麥克風靜音狀態
- 3. 從麥克風獲取聲音
- 4. 獲取音頻數據從麥克風
- 5. 用於從音量調節麥克風獲取語音的Api
- 6. 調整麥克風錄音音量
- 7. 如何從麥克風輸入獲取音量
- 8. 在錄製時獲取麥克風音量
- 9. Swift - 如何從麥克風輸入獲取當前音量(AVAudioPCMBuffer)
- 10. 獲取/設置揚聲器/麥克風音量
- 11. 修復用戶的麥克風音量
- 12. 不能得到麥克風音量
- 13. JMF麥克風音量控制器
- 14. iOS xcode麥克風音量檢測?
- 15. 調整麥克風輸入音量
- 16. MonoTouch:從麥克風捕獲音頻流
- 17. Java麥克風錄音
- 18. 靜音麥克風音頻getUserMedia
- 19. 如何獲得麥克風音量在Windows Phone 8的
- 20. 使用C#程序從PC麥克風獲取音頻
- 21. 在Windows 7中錄製時獲取麥克風聲音級別
- 22. 如何從Macbook麥克風獲取音頻數據?
- 23. 在Android中獲取麥克風聲音級別(分貝級別)
- 24. 在android中獲取麥克風音頻。 AudioContext
- 25. Windows:獲取默認麥克風名稱
- 26. 用Windows語音識別麥克風音量的最小中斷
- 27. 從麥克風記錄的聲音的音量
- 28. 我可以更改音量/將麥克風從foxpro靜音嗎?
- 29. 音頻:如何設置默認麥克風的音量?
- 30. Loudtalks麥克風
我只能在文檔中看到如何獲得進入麥克風的最大和最小音量。您在錄音時是否想要獲得動態音量? – Cameron 2010-10-14 00:19:51
不,我認爲這很好。但是,我只能在文檔getStreamMaxVolume中找到唯一的流值,我可以發現看起來相關的是:STREAM_VOICE_CALL,這是麥克風流嗎?那是你發現的嗎? – januszstabik 2010-10-14 08:05:28
所有getStreamMaxVolume()函數都會返回該流的輸出音量,而不是手機接收或處理的音量。 – 2010-10-14 13:20:30