微信小程序的錄音功能通過一組API來實現,主要涉及錄音管理器(RecorderManager)的使用。下面是詳細的實現步驟和代碼示例:
- 初始化錄音管理器
首先需要獲取錄音管理器的實例,可以通過 wx.getRecorderManager() 方法來獲取。
const recorderManager = wx.getRecorderManager();
- 配置錄音參數
配置錄音參數可以在開始錄音之前進行。這些參數包括采樣率、編碼格式等。
const options = {duration: 60000, // 最長錄音時間,單位毫秒sampleRate: 44100, // 采樣率numberOfChannels: 1, // 錄音通道數encodeBitRate: 192000, // 編碼比特率format: 'aac' // 音頻格式,有效值 aac/mp3
};
- 監聽錄音事件
可以為錄音管理器綁定一些事件回調函數,例如開始錄音、結束錄音、停止錄音、錄音錯誤等。
recorderManager.onStart(() => {console.log('recorder start');
});recorderManager.onStop((res) => {console.log('recorder stop', res);const { tempFilePath } = res;// tempFilePath 是錄音文件的臨時路徑,可以用來播放或上傳
});recorderManager.onError((err) => {console.error('recorder error', err);
});
- 開始和停止錄音
在需要開始錄音的時候調用 recorderManager.start(options) 方法,在需要停止錄音的時候調用 recorderManager.stop() 方法。
// 開始錄音
recorderManager.start(options);// 停止錄音
recorderManager.stop();
- 播放錄音
錄音完成后,可以使用音頻上下文 wx.createInnerAudioContext() 來播放錄音文件。
const innerAudioContext = wx.createInnerAudioContext();innerAudioContext.src = tempFilePath; // 設置音頻文件路徑// 監聽音頻播放事件
innerAudioContext.onPlay(() => {console.log('開始播放');
});innerAudioContext.onError((res) => {console.error(res.errMsg);console.error(res.errCode);
});
// 播放音頻
innerAudioContext.play();