Android 錄音轉mp3

ZlwAudioRecorder

功能

  1. 使用AudioRecord進行錄音
  2. 實現pcm、wav、mp3音頻的錄製
  3. 實時獲取錄音的音量、及錄音byte數據
  4. 獲取wav/mp3錄音文件的時長
  5. 可配置錄音的採樣率、位寬 (v1.04更新)
  6. 錄音可視化 (v1.05更新)

Gradle

dependencies {
        implementation 'com.github.zhaolewei:ZlwAudioRecorder:v1.07'
}

allprojects {
    repositories {
        ...
        maven { url 'https://www.jitpack.io' }
    }
}

如何使用

  1. 初始化
  • init

    /**
    * 參數1: Application 實例
    * 參數2: 是否打印日誌   
    */
    RecordManager.getInstance().init(MyApp.getInstance(), false);
  • 在清單文件中註冊Services

    <service android:name="com.zlw.main.recorderlib.recorder.RecordService" />
  • 確保有錄音權限

錄音需要使用到AudioRecord類,這裏說一下他的構造方法中的參數的意義 
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 : 錄音期間聲音數據的寫入緩衝區大小(單位是字節)。 
這裏參數audioSource 、sampleRateInHz 、channelConfig 、audioFormat 都是可以根據需要進行選擇,只有bufferSizeInBytes 這個參數,需要通過計算來獲得。在介紹計算方法之前,先看一下音頻數據的讀取與轉換。

  1. 配置錄音參數
  • 修改錄音格式(默認:WAV)mp3

     RecordManager.getInstance().changeFormat(RecordConfig.RecordFormat.MP3);
  • 修改錄音配置

         RecordManager.getInstance().changeRecordConfig(recordManager.getRecordConfig().setSampleRate(16000));
         RecordManager.getInstance().changeRecordConfig(recordManager.getRecordConfig().setEncodingConfig(AudioFormat.ENCODING_PCM_8BIT));
  • 修改錄音文件存放位置(默認sdcard/Record)

       RecordManager.getInstance().changeRecordDir(recordDir);
  • 錄音狀態監聽

    RecordManager.getInstance().setRecordStateListener(new RecordStateListener() {
       @Override
       public void onStateChange(RecordHelper.RecordState state) {
           }
       }
    
       @Override
       public void onError(String error) {
       }
    });
  • 錄音結果監聽

    RecordManager.getInstance().setRecordResultListener(new RecordResultListener() {
       @Override
       public void onResult(File result) {
       }
    });
  • 聲音大小監聽

     RecordManager.getInstance().setRecordSoundSizeListener(new RecordSoundSizeListener() {
        @Override
        public void onSoundSize(int soundSize) {
        }
    });
  • 音頻數據監聽

      recordManager.setRecordDataListener(new RecordDataListener() {
         @Override
         public void onData(byte[] data) {
         }
     });
  • 音頻可視化數據監聽

       recordManager.setRecordFftDataListener(new RecordFftDataListener() {
          @Override
          public void onFftData(byte[] data) {
              audioView.setWaveData(data);
          }
        });
    
    
    錄音控制
  • 開始錄音/暫停錄音/恢復錄音/停止
    RecordManager.getInstance().start()/pasue()/resume()/stop();

最討厭的源碼爲你們奉上:https://github.com/zhaolewei/ZlwAudioRecorder  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章