Android實時將PCM轉碼MP3並播放音頻

AudioCapturePlay

基於AudioRecord錄製原始pcm音頻,使用開源庫lame實時轉換pcm音頻爲MP3格式音頻,採用Service、MediaPlayer播放MP3,提供錄製音頻計時器顯示,音頻音量分貝值顯示,音頻頻譜顯示,錄製、播放狀態控制等git

項目地址

  1. 單獨音頻錄製播放(github.com/MannaYang/A…)
  2. 音視頻錄製合成(github.com/MannaYang/A…)

功能簡介

目前包含基本的音頻錄製、播放操做,功能以下:github

  1. 基於AudioRecord錄製原始PCM格式音頻數據
  2. 基於lame庫實時轉換PCM音頻爲MP3格式音頻
  3. 基於原始lame項目中C文件編譯生成對應so文件、提供調用lame編碼封裝類
  4. 基於FFT格式化PCM數據並實時顯示音頻頻譜
  5. 提供錄製音頻計時器顯示、音量分貝值顯示、錄製開始、暫停、繼續等狀態控制與文件寫入
  6. 提供AudioPlayManager對象控制MediaPlayer播放、暫停、繼續狀態、Timer定時更新SeekBar進度條
  7. 提供ObjectAnimator方式實現唱針、唱片旋轉、復原動畫操做

其它音頻格式:app

  1. wav、m4a、aac可在錄製PCM格式實時回調中添加相應頭文件、轉換操做

lame編解碼

  1. lame_encode_buffer_interleaved 該方法爲傳入雙聲道音頻buffer,若是AudioCapture中使用AudioFormat.CHANNEL_IN_STEREO
  2. lame_encode_buffer 該方法爲傳入單聲道音頻buffer,若是AudioCapture中使用AudioFormat.CHANNEL_IN_MONO

Chronometer、RoundedBitmapDrawable控件類

  1. Chronometer爲原生計時器,提供計時、倒計時等功能,初始格式爲00:00,經過setFormat格式化爲00:00:00,暫停、繼續計時需減掉已計時時間戳
  2. RoundedBitmapDrawable可做爲圓角Bitmap使用,經過setCornerRadius、setCircular可實現圓角設置、圓型

公共庫

  1. 包含錄音控制類、lame編解碼cpp文件、編譯so文件、Service播放控制類,使用方式參見app中AudioCaptureActivity.class

截圖展現

錄製開始、暫停、完成 :ide

音頻文件 :動畫

播放準備 :編碼

播放中 :.net

感謝開源

  1. 音頻頻譜柱狀圖 github.com/zhaolewei/M…
  2. lame編解碼庫 sourceforge.net/projects/la…

個人我的新球

歡迎加入星球一塊兒討論項目、研究新技術,共同成長!code

相關文章
相關標籤/搜索