使用MediaRecorder錄製音頻時,由於沒有提供暫停的API,所以在暫停操作時,只能先進行保存操作,然後再繼續錄製下一段,最後再對多個音頻文件的合併操作。
MediaRecorder提供的音頻輸出格式有RAW_AMR,AMR_NB,AMR_WB,3GP,MPG4這些格式。在使用ffmpeg做一些多媒體資源的轉換操作的時候,多多音頻的採樣率有要求。其中RAW_AMR和AMR_NB的採樣率爲8KHZ,而AMR_WB爲16KHZ。我在實際中與到的情況是:使用ffmpeg來生成MP4文件時,8KHZ的採樣率的音頻不能進行MP4的轉碼操作,但使用使用16KHZ的採樣率成功轉碼
由於使用MediaRecorder錄製只能是分段錄製,所以最關鍵的操作就在於,最後對多個音頻文件的合併操作,這一步操作最重要的就是去掉出第一個文件之外的頭文件信息,其中RAW_AMR,AMR_NB的頭文件長度固定爲6個字節,AMR_WB的頭文件長度爲9個字節。知道頭文件長度之後,剩下的操作就簡單多了。
示例代碼:
<script src="https://code.csdn.net/snippets/758781.js"></script>