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

  • 确保有录音权限

录音需要使用到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  

 

你可能感兴趣的:(录音,mp3,libmp3lame.so)