2013-05-03 113 views
0

我想知道設置Android AudioRecord類和媒體記錄類中的音頻採樣率有什麼區別?在音頻記錄類我們設置採樣率,同時創造一個類的對象像Android音頻記錄類和MediaRecord類中的採樣率

recorder = new AudioRecord(MediaRecorder.AudioSource.MIC, 
              SampleRateInHz, RECORDER_CHANNELS,RECORDER_AUDIO_ENCODING, bufferSize); 

而在MediaRecorder類,我們通過函數調用顯式設置。即

mrec.setAudioSamplingRate(samplingRate); 

我嘗試都但同時音頻記錄未記錄通過量mediaRecorder類而採樣速率的效果只能看到。我不明白兩者有何不同。

回答

1

作爲android sdk文檔,MediaRecord用於記錄音頻和視頻。錄製控制基於簡單的狀態機。您將始終使用MediaRecord錄製聲音,除非您需要訪問原始音頻數據並處理它們(例如,應用您自己的DSP效果)。在這種情況下,您將使用AudioRecordsetAudioSamplingRateMediaRecord與將SampleRateInHz設置爲AudioRecord的設置相同,設置所需的採樣率。採樣率越高,您獲得的音質和頻率範圍就越好。理想的人耳可以聽到20-20000Hz的聲音。如果您設置你的採樣率爲4100hz,那麼你的頻率響應將等於4100/2,這幾乎是20000hz。然而,設備支持的頻率範圍是不同的。你應該經常檢查設備是否支持你想要的頻率。

爲了檢查是否一個特定的頻率工作的,則可以使用下面的代碼段:

int bufferSize = AudioRecord.getMinBufferSize(rate[i],AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT); 

如果BUFFERSIZE值是大於0,那麼,你提供你的requency由設備支持。

+0

感謝您的全面回覆,但我仍然面臨同樣的問題,即setAudioSamplingRate對音頻沒有任何影響,隨着採樣率變高,背景噪音會降低。但如果您更改音頻錄音類中的值,則其頻率和音高也會發生變化。這是我必須單獨錄製音頻和視頻的原因。 – 2013-05-03 09:20:29

+0

音質問題到底是什麼?請給我們一些你的'MediaRecord'上的代碼。你想應用於哪些效果?你學過AudioFx嗎? – 2013-05-03 09:34:06