Android錄製語音檔案wav轉mp3
1.Android 使用AudioRecord而實現錄音暫停以及wav檔案轉mp3檔案。因為android系統開源的原因,導致許多生產廠商亂改系統原始碼,此處小米最為噁心,使用android原生的AudioRecord錄製只能儲存wav和pcm格式的語音檔案,但是小米手機錄製的wav語音檔案系統本身不支援,所以使用MediaPlayer不能播放wav格式的檔案,其它手機可以。此時有一萬匹草泥馬從旁邊疾馳而過。。。
2.針對這個問題解決方案目前有兩種:
方案1: 將錄製完的wav檔案轉化成mp3格式的,缺點:轉碼過程不能需要花費一部分時間,不能實時錄製儲存mp3格式的檔案
此處可以藉助gitHub上的第三方庫來實現wav轉mp3
gitHub地址:ofollow,noindex">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數少了點,勉強可以用吧
之後遇到問題繼續優化總結。。。