寫在前面
關於微信小程序的錄音和語音方面,踩了很多坑,記錄一下
recorderManager相關文檔
innerAudioContext相關文檔
RecorderManager錄音相關
- 在使用RecorderManager相關方法之前,在page外先定義全局唯一的錄音管理器:
const recorderManager = wx.getRecorderManager();
- 錄音開始
recorderManager.start(options);
經常使用的options的參數:
1.duration:錄音時長,默認類型number,默認值60000(10分鍾),單位ms;
2.format:音頻格式,默認類型aac,默認值string,可選mp3、aac、wav、PCM;
使用recorderManager.start時會彈窗語音授權。
- 錄音停止
recorderManager.stop();
- 錄音暫停
recorderManager.pause();
- 錄音繼續
recorderManager.resume();
- 常用監聽事件相關
// 1.監聽錄音開始
recorderManager.onStart(function callback);
// 2.監聽錄音停止
recorderManager.onStop(function callback);
// 3.監聽錄音暫停
recorderManager.onPause(function callback);
// 4.監聽錄音繼續
recorderManager.onResume(function callback);
// 5.監聽錄音錯誤
recorderManager.onError(function callback);
innerAudioContext播放相關
- 在使用RecorderManager相關方法之前,在page外先定義全局唯一的錄音管理器:
const innerAudioContext = wx.createInnerAudioContext();
innerAudioContext常用的屬性:
- src —— 音頻地址
踩坑注意:在ios系統中音頻地址的左斜杠‘/’和右斜杠‘\’並不通用,使用右斜杠會導致音頻無法播放!!!! - autoplay —— 是否自動播放 默認為false
- loop —— 是否循環播放 默認為false
- obeyMuteSwitch —— 是否遵循系統靜音開關 默認為true
踩坑注意:在ios系統中,如果obeyMuteSwitch為默認值true,那么在系統靜音的時候揚聲器不會播放音頻,但是耳機可以!!!如果有需要,請將obeyMuteSwitch值設置為false
- 音頻播放
innerAudioContext.play();
- 音頻停止
innerAudioContext.stop();
- 音頻暫停
innerAudioContext.pause()
- 常用監聽事件相關
// 1.監聽音頻自然播放到結束
innerAudioContext.onEnded(function callback);
// 2.監聽音頻錯誤
innerAudioContext.onError(function callback);
// 3.監聽音頻暫停
innerAudioContext.onPause(function callback);
//4. 監聽音頻播放
innerAudioContext.onPlay(function callback)
