1.Android 使用AudioRecord而實(shí)現(xiàn)錄音暫停以及wav文件轉(zhuǎn)mp3文件。因?yàn)閍ndroid系統(tǒng)開源的原因,導(dǎo)致許多生產(chǎn)廠商亂改系統(tǒng)源碼,此處小米最為惡心,使用android原生的AudioRecord錄制只能保存wav和pcm格式的語音文件,但是小米手機(jī)錄制的wav語音文件系統(tǒng)本身不支持,所以使用MediaPlayer不能播放wav格式的文件,其它手機(jī)可以。此時有一萬匹草泥馬從旁邊疾馳而過。。。
2.針對這個問題解決方案目前有兩種:
方案1: 將錄制完的wav文件轉(zhuǎn)化成mp3格式的,缺點(diǎn):轉(zhuǎn)碼過程不能需要花費(fèi)一部分時間,不能實(shí)時錄制保存mp3格式的文件
此處可以借助gitHub上的第三方庫來實(shí)現(xiàn)wav轉(zhuǎn)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)用進(jìn)行轉(zhuǎn)碼 轉(zhuǎn)碼過程需要一定的時候差不多1s能轉(zhuǎn)化1M,10M的wav文件差不多花費(fèi)10s時間轉(zhuǎn)成mp3,轉(zhuǎn)成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 默認(rèn)不支持MP3編碼,網(wǎng)上很多解決方案 比較成熟的方案就是使用Lame庫,通過 Lame 編碼生成 MP3 音頻文件。
此處提供一個gitHub的庫: https://github.com/lijunzz/Recorder-Android 這個比較新,而且還適配了as3.1,就是star數(shù)少了點(diǎn),勉強(qiáng)可以用吧
之后遇到問題繼續(xù)優(yōu)化總結(jié)。。。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VEVB武林網(wǎng)。
新聞熱點(diǎn)
疑難解答