網(wǎng)上查了下妻味,Android 用 MediaRecorder 和 AudioRecord 實現(xiàn)錄音粱挡。這里主要是用 MediaRecorder 實現(xiàn)錄音着撩,至于 AudioRecord 有空再研究下付材。
MediaRecorder
已集成了錄音妆偏、編碼刨肃、壓縮等古拴,支持少量的錄音音頻格式(aac/amr/3gp)
優(yōu)點:代碼量少
缺點:無法實時處理音頻,輸出的音頻格式少
AudioRecord
實現(xiàn)邊錄邊播以及對音頻的實時處理
優(yōu)點:語音的實時處理之景,可以用代碼實現(xiàn)各種音頻的封裝
缺點:輸出是PCM語音數(shù)據(jù)斤富,如果保存成音頻文件,是不能被播放的锻狗,所以必須先寫代碼實現(xiàn)編碼以及壓縮
AudioRecord 構造函數(shù)
public AudioRecord(int audioSource, int sampleRateInHz, int channelConfig, int audioFormat, int bufferSizeInBytes)
audioSource : 聲音來源满力,一般使用 MediaRecorder.AudioSource.MIC(麥克風)
sampleRateInHz :官方明確說到只有 44100Hz 是所有設備都支持的。其他 22050轻纪、16000 和 11025 只能在某些設備上使用
channelConfig :有立體聲(CHANNEL_IN_STEREO)和單聲道(CHANNEL_IN_MONO)兩種油额。但只有單聲道(CHANNEL_IN_MONO)是所有設備都支持的
audioFormat :有 ENCODING_PCM_16BIT 和 ENCODING_PCM_8BIT 兩種音頻編碼格式。同樣的刻帚,官方聲明只有 ENCODING_PCM_16BIT 是所有設備都支持的
bufferSizeInBytes :錄音期間聲音數(shù)據(jù)的寫入緩沖區(qū)大辛仕弧(單位是字節(jié))
setAudioSource() 聲音來源,一般使用 MediaRecorder.AudioSource.MIC(麥克風)
這里不詳細講 AudioRecord 崇众,有興趣可以看以下博文:
Android錄音--AudioRecord掂僵、MediaRecorder
常用音頻格式
1. WAV 格式:錄音質(zhì)量高航厚,但是壓縮率小,文件大
2. AAC 格式:相對于 mp3锰蓬,AAC 格式的音質(zhì)更佳幔睬,文件更小,有損壓縮芹扭,一般蘋果或者Android SDK4.1.2(API 16)及以上版本支持播放
3. AMR 格式:壓縮比比較大麻顶,但相對其他的壓縮格式質(zhì)量比較差,多用于人聲舱卡,通話錄音
4. mp3 格式辅肾,使用 MediaRecorder 沒有該音頻格式輸出。一些人的做法是使用 AudioRecord 錄音轮锥,然后編碼成 wav 格式矫钓,再轉(zhuǎn)換成 mp3 格式