AudioCapturePlay
基於AudioRecord錄製原始pcm音頻,使用開源庫lame實時轉換pcm音頻爲MP3格式音頻,採用Service、MediaPlayer播放MP3,提供錄製音頻計時器顯示,音頻音量分貝值顯示,音頻頻譜顯示,錄製、播放狀態控制等git
項目地址
- 單獨音頻錄製播放(github.com/MannaYang/A…)
- 音視頻錄製合成(github.com/MannaYang/A…)
功能簡介
目前包含基本的音頻錄製、播放操做,功能以下:github
- 基於AudioRecord錄製原始PCM格式音頻數據
- 基於lame庫實時轉換PCM音頻爲MP3格式音頻
- 基於原始lame項目中C文件編譯生成對應so文件、提供調用lame編碼封裝類
- 基於FFT格式化PCM數據並實時顯示音頻頻譜
- 提供錄製音頻計時器顯示、音量分貝值顯示、錄製開始、暫停、繼續等狀態控制與文件寫入
- 提供AudioPlayManager對象控制MediaPlayer播放、暫停、繼續狀態、Timer定時更新SeekBar進度條
- 提供ObjectAnimator方式實現唱針、唱片旋轉、復原動畫操做
其它音頻格式:app
- wav、m4a、aac可在錄製PCM格式實時回調中添加相應頭文件、轉換操做
lame編解碼
- lame_encode_buffer_interleaved 該方法爲傳入雙聲道音頻buffer,若是AudioCapture中使用AudioFormat.CHANNEL_IN_STEREO
- lame_encode_buffer 該方法爲傳入單聲道音頻buffer,若是AudioCapture中使用AudioFormat.CHANNEL_IN_MONO
Chronometer、RoundedBitmapDrawable控件類
- Chronometer爲原生計時器,提供計時、倒計時等功能,初始格式爲00:00,經過setFormat格式化爲00:00:00,暫停、繼續計時需減掉已計時時間戳
- RoundedBitmapDrawable可做爲圓角Bitmap使用,經過setCornerRadius、setCircular可實現圓角設置、圓型
公共庫
- 包含錄音控制類、lame編解碼cpp文件、編譯so文件、Service播放控制類,使用方式參見app中AudioCaptureActivity.class
截圖展現
錄製開始、暫停、完成 :ide
音頻文件 :動畫
播放準備 :編碼
播放中 :.net
感謝開源
- 音頻頻譜柱狀圖 github.com/zhaolewei/M…
- lame編解碼庫 sourceforge.net/projects/la…
個人我的新球
歡迎加入星球一塊兒討論項目、研究新技術,共同成長!code