Android錄制語音文件wav轉mp3的方法示例
1.Android 使用AudioRecord而實現(xiàn)錄音暫停以及wav文件轉mp3文件。因為android系統(tǒng)開源的原因,導致許多生產(chǎn)廠商亂改系統(tǒng)源碼,此處小米最為惡心,使用android原生的AudioRecord錄制只能保存wav和pcm格式的語音文件,但是小米手機錄制的wav語音文件系統(tǒng)本身不支持,所以使用MediaPlayer不能播放wav格式的文件,其它手機可以。此時有一萬匹草泥馬從旁邊疾馳而過。。。
2.針對這個問題解決方案目前有兩種:
方案1: 將錄制完的wav文件轉化成mp3格式的,缺點:轉碼過程不能需要花費一部分時間,不能實時錄制保存mp3格式的文件
此處可以借助gitHub上的第三方庫來實現(xiàn)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調(diào)用出調(diào)用,可以在錄音完成的時候調(diào)用進行轉碼 轉碼過程需要一定的時候差不多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編碼,網(wǎng)上很多解決方案 比較成熟的方案就是使用Lame庫,通過 Lame 編碼生成 MP3 音頻文件。
此處提供一個gitHub的庫: https://github.com/lijunzz/Recorder-Android 這個比較新,而且還適配了as3.1,就是star數(shù)少了點,勉強可以用吧
之后遇到問題繼續(xù)優(yōu)化總結。。。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Android實現(xiàn)橫向無限循環(huán)滾動的單行彈幕效果
這篇文章主要為大家詳細介紹了Android實現(xiàn)橫向無限循環(huán)滾動的單行彈幕效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-06-06
Flutter學習LogUtil封裝與實現(xiàn)實例詳解
這篇文章主要為大家介紹了Flutter學習LogUtil封裝與實現(xiàn)實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-09-09
Android通過實現(xiàn)GridView的橫向滾動實現(xiàn)仿京東秒殺效果
這篇文章主要介紹了Android通過實現(xiàn)GridView的橫向滾動實現(xiàn)仿京東秒殺效果,實現(xiàn)代碼簡單易懂,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2018-07-07
Android中父View和子view的點擊事件處理問題探討
當屏幕中包含一個ViewGroup,而這個ViewGroup又包含一個子view,這個時候android系統(tǒng)如何處理Touch事件呢,接下來將對此問題進行深入了解,感興趣的朋友可以了解參考下,或許對你有所幫助2013-01-01
Android實現(xiàn)四級聯(lián)動地址選擇器
這篇文章主要為大家詳細介紹了Android實現(xiàn)四級聯(lián)動地址選擇器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-10-10
Android使用IntentService進行apk更新示例代碼
這篇文章主要介紹了Android使用IntentService進行apk更新示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Android之Viewpager+Fragment實現(xiàn)懶加載示例
本篇文章主要介紹了Android之Viewpager+Fragment實現(xiàn)懶加載示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-03-03

