基礎篇-音頻工具的熟悉和使用1.MediaRecorder

 

         本篇幫大家一起回顧一下Android常用的錄音工具,MediaRecorder,AudioRecord,這兩個工具錄製音頻還是有一點不同的,MediaRecorder錄製音頻(也可以錄製視頻)比較簡單,創建完成,塞進去指定路徑就可以,它會幫你完成其他工作,而AudioRecord則是給你具體的音頻流,這個工具比較適合對音頻修改,壓縮等需求的場景。但是MediaRecorder也能獲取到音頻流,相比AudioRecord,簡直麻煩到家了,但是我還是堅持完成了,這個後邊講一下。我沒有對音質問題進行研究,我只研究了怎麼用各種方法得到體積最小的音頻。

MediaRecorder

在開始之前,一定要記得要權限,三個權限,內存讀寫權限,音頻錄製權限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

好,下面開始介紹一下創建過程,先構造出MediaRecorder,使用起來還是比較簡單的,我看了幾篇博客,都寫的差不多少,

mediaRecorder = new MediaRecorder();

然後是參數的設置,介紹一下主要的幾個參數:

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

設置錄製的音頻源,這裏我們用手機mic就可以了,千萬別瞎放啊,還有這個方法一定要在設置輸出格式setOutputFormat()之前調用,不然會拋異常。

 

 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);

設置音頻輸出格式,我們用AMR,這個格式IOS也可以用,可以省不少事。而且amr相對來說體積比較小,且音質還說的過去。

 

mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

設置音頻的編碼格式,也用AMR

 

 mediaRecorder.setOutputFile(path);

指定錄音輸出路徑,根據自己的項目隨意改,願意寫到哪就寫到哪

 

 mediaRecorder.setAudioSamplingRate(8000);

然後關乎音頻大小的就是上面這個參數,採樣率的設置,源碼裏有關於具體使用場景的採樣率,但是8k就是我們要的最小的


mediaRecorder.prepare();
mediaRecorder.start();

好了,基本參數基本就設置完成,調用prepare和start就可以開始了,prepare一定要在start之前調用,否則IllegalStateException伺候。

 

 mediaRecorder.stop();
 mediaRecorder.release();
 mediaRecorder = null;

當錄音結束後,一定要及時釋放,不釋放的話,在下一次使用的時候會抱一個-38的錯誤,mic在佔用中。。

霧擦。。傳了一個小Demo上去,不知怎的它給我定了5積分,本想0積分供參考的。。沒關係,如果需要的話,私我郵箱。

資源名稱:Android MediaRecorder Demo1

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章