安卓音频转码,wav格式转为mp3

1.Android 使用AudioRecord而实现录音暂停以及wav文件转mp3文件。因为android系统开源的原因,导致许多生产厂商乱改系统源码,此处小米最为恶心,使用android原生的AudioRecord录制只能保存wav和pcm格式的语音文件,但是小米手机录制的wav语音文件系统本身不支持,所以使用MediaPlayer不能播放wav格式的文件,其它手机可以。此时有一万匹草泥马从旁边疾驰而过。。。

2.针对这个问题解决方案目前有两种:
方案1: 将录制完的wav文件转化成mp3格式的,缺点:转码过程可能需要花费一部分时间,不能实时录制保存mp3格式的文件
此处可以借助gitHub上的第三方库来实现wav转mp3
gitHub地址:https://github.com/adrielcafe/AndroidAudioConverter

2.1初始化:

public class App extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        AndroidAudioConverter.load(this, new ILoadCallback() {
            @Override
            public void onSuccess() {
                // Great!
            }
            @Override
            public void onFailure(Exception error) {
                // FFmpeg is not supported by device
            }
        });
    }
}

2.2调用出调用,可以在录音完成的时候调用进行转码 转码过程需要一定的时候差不多1s能转化1M,10M的wav文件差不多花费10s时间转成mp3,转成mp3后文件缩小了10几倍

File flacFile = new File(Environment.getExternalStorageDirectory(), "my_audio.flac");
IConvertCallback callback = new IConvertCallback() {
    @Override
    public void onSuccess(File convertedFile) {
        // So fast? Love it!
    }
    @Override
    public void onFailure(Exception error) {
        // Oops! Something went wrong
    }
};
AndroidAudioConverter.with(this)
    // Your current audio file
    .setFile(flacFile)  
    
    // Your desired audio format 
    .setFormat(AudioFormat.MP3)
    
    // An callback to know when conversion is finished
    .setCallback(callback)
    
    // Start conversion
    .convert();

2.3 gradle中的配置如下:

repositories {
  maven {
    url "https://jitpack.io"
  }
}

dependencies {
  compile 'com.github.adrielcafe:AndroidAudioConverter:0.0.8'
}

方案2:
格式的
Recorder 通过 AudioRecord 或 MediaRecorder 录制的时候 直接录制成MP3 或 AAC 音频文件。
因 Android 默认不支持MP3编码,网上很多解决方案 比较成熟的方案就是使用Lame库,通过 Lame 编码生成 MP3 音频文件。

此处提供一个gitHub的库:https://github.com/lijunzz/Recorder-Android 这个比较新,而且还适配了as3.1,就是star数少了点,勉强可以用吧
之后遇到问题继续优化总结。。。

你可能感兴趣的:(安卓音频转码,wav格式转为mp3)