2013-04-29 109 views
1

我嘗試構建一個應用程序,其中有一個記錄功能。我希望用戶能夠選擇記錄質量,其中一個選項是AAC記錄。我正在使用下面的代碼,但我一直在設置audioSamplingRate錯誤..任何想法?Mediarecorder setParameter failed(setAudioSamplingRate)

mediaRecorder = new MediaRecorder(); 
        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
        mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
        mediaRecorder.setAudioSamplingRate(96000); 
        mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC); 

04-29 10:32:17.477: E/MediaRecorder(18750): setParameters(audio-param-sampling-rate=96000) failed: -22 
04-29 10:32:17.477: E/com.test.com.AudioRecorder(18750): setParameter failed. 
04-29 10:32:17.477: E/com.test.com.AudioRecorder(18750): prepare() method called on illegal state 
+0

96 kHz是一個非常高的採樣率,並不保證被支持。我建議您嘗試一個共同採樣率<= 48 kHz(例如48000,41001,22050,16000,8000)。 – Michael 2013-04-29 09:26:10

+0

我試圖將它設置爲16000,不會返回最初的錯誤,但另一個..以下錯誤:04-29 12:15:09.989:E/MediaRecorder(23954):準備失敗:-2147483648 04-29 12:15:09.989:E/com.test.com.AudioRecorder(23954):準備失敗。 – 2013-04-29 10:16:12

回答

0

每個音頻採樣率是不是在設備支持的錯誤。所以,如果它不被支持,它會給出錯誤或內部裁剪,使其適合。爲質量,您可以設置音頻編碼比特率與採樣率.44100採樣率是由所有Android設備支持根據其audiorecorder文檔。您可以使用根據你need.this公式可以幫助你

比特率=(採樣速率)×(位深度)×(通道數)

位深度的比特率通常在8機器人裝置是。