Android提供了兩個API用於實現錄音功能:android.media.AudioRecord、android.media.MediaRecorder。
網上有很多談論這兩個類的資料。現在大致總結下:
1、AudioRecord
主要是實現邊錄邊播(AudioRecord+AudioTrack)以及對音頻的實時處理(如會說話的湯姆貓、語音)
優點:語音的實時處理,可以用代碼實現各種音頻的封裝
缺點:輸出是PCM語音數據,如果保存成音頻文件,是不能夠被播放器播放的,所以必須先寫代碼實現數據編碼以及壓縮
示例:
使用AudioRecord類錄音,並實現WAV格式封裝。錄音20s,輸出的音頻文件大概為3.5M左右(已寫測試代碼)
2、MediaRecorder
已經集成了錄音、編碼、壓縮等,支持少量的錄音音頻格式,大概有.aac(API = 16) .amr .3gp
優點:大部分以及集成,直接調用相關接口即可,代碼量小
缺點:無法實時處理音頻;輸出的音頻格式不是很多,例如沒有輸出mp3格式文件
示例:
使用MediaRecorder類錄音,輸出amr格式文件。錄音20s,輸出的音頻文件大概為33K(已寫測試代碼)
3、音頻格式比較
WAV格式:錄音質量高,但是壓縮率小,文件大
AAC格式:相對於mp3,AAC格式的音質更佳,文件更小;有損壓縮;一般蘋果或者Android SDK4.1.2(API 16)及以上版本支持播放
AMR格式:壓縮比比較大,但相對其他的壓縮格式質量比較差,多用於人聲,通話錄音
至於常用的mp3格式,使用MediaRecorder沒有該視頻格式輸出。一些人的做法是使用AudioRecord錄音,然后編碼成wav格式,再轉換成mp3格式
再貼上一些測試工程。
功能描述:
1、點擊“錄音WAV文件”,開始錄音。錄音完成后,生成文件/sdcard/FinalAudio.wav
2、點擊“錄音AMR文件”,開始錄音。錄音完成后,生成文件/sdcard/FinalAudio.amr
3、點擊“停止錄音”,停止錄音,並顯示錄音輸出文件以及該文件大小。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。