2017-02-19 85 views
1

我用這個代碼捕獲音頻在Android Studio中 但尺寸型音頻它的大(1分= 1MB) 如何可以壓縮音頻沒有質量損失如何可以壓縮音頻輸入呼叫記錄的Android

AudioRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
AudioRecorder.setOutputFormat(MediaRecorder.OutputFormat.AAC_ADTS); 
AudioRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB); 
AudioRecorder.setAudioChannels(1); 
AudioRecorder.setAudioEncodingBitRate(44100); 
AudioRecorder.setAudioSamplingRate(128000); 

回答

0

你設定編碼器到AMR_N8。大約1 MB /秒的聲音對於該編碼器來說是正確的。如果你想壓縮它,你可以選擇另一種編碼,比如Vorbis。

請注意,不同的編碼器有不同的目的。如果沒有質量損失,它們都不會壓縮 - 我們正在將模擬聲音轉換爲數字值,因此總會有質量損失。不同的編碼器針對不同用途進行了優化。 AMR針對人聲進行了優化。它濾除不在人聲範圍內的頻率。這是質量損失,但它可能是你想要的(就像在打電話)。你無法得到所有的東西 - 你將不得不犧牲尺寸或質量。我建議你研究在https://developer.android.com/reference/android/media/MediaRecorder.AudioEncoder.html找到的不同編碼,並找出最適合你的編碼。