给大家讲解瞎 录制语音 的功能,这部分主要涉及到以下几个步骤:开始录音、停止录音、播放录音的功能
1.开始录音 (startRecording
函数)
-
当用户点击 开始录音 按钮时,调用
startRecording
函数开始录音。 -
录音通过
uni.getRecorderManager()
来实现。recorderManager
是录音管理器,提供了启动、停止、暂停等控制录音的功能、const startRecording = () => {
const options = {
duration: 60000, // 限制录音时长,最大为60秒
format: 'mp3', // 录音格式
};
recorderManager.start(options); // 调用 start 方法开始录音
};
2. 停止录音 (stopRecording
函数)
-
当用户点击 停止录音 按钮时,调用
stopRecording
函数来停止录音。- 停止录音 (stopRecording 函数)
当用户点击 停止录音 按钮时,调用 stopRecording 函数来停止录音。
- 停止录音 (stopRecording 函数)
3. 录音过程的管理
-
在录音过程中,你需要显示录音时长,实时更新时长信息。为了实现这一功能,你可以设置一个定时器,在录音过程中定时更新时间
recorderManager.onStart(() => {
console.log('录音开始');
isRecording.value = true; // 标记录音状态为进行中
recordingStartTime = Date.now(); // 记录开始时间
recordingInterval = setInterval(() => {
recordingDuration.value = Math.floor((Date.now() - recordingStartTime) / 1000); // 每秒更新一次录音时长
}, 1000);
});
4. 录音停止后的处理
-
当录音停止后,你可以通过
recorderManager.onStop
获取录音的文件路径。recorderManager.onStop((res) => {
console.log('录音停止', res);
isRecording.value = false; // 标记录音结束
audioSrc.value = res.tempFilePath; // 获取录音文件的路径
clearInterval(recordingInterval); // 停止定时器
recordingDuration.value = Math.floor((Date.now() - recordingStartTime) / 1000); // 更新最终录音时长
});
5. 播放录音 (playAudio
函数)
- 用户录音完成后,可以通过
playAudio
函数播放录音。
const playAudio = () => {
if (audioSrc.value) { // 确保有录音文件
innerAudioContext.src = audioSrc.value; // 设置录音文件的路径
innerAudioContext.play(); // 播放录音
innerAudioContext.onPlay(() => {
console.log('开始播放');
});
innerAudioContext.onError((err) => {
console.error('播放错误', err);
});
}
};
总结
录音功能的实现主要包括以下几个方面:
- 开始录音 :通过
recorderManager.start()
开始录音。 - 停止录音 :通过
recorderManager.stop()
停止录音,并获取录音文件路径。 - 管理录音时长:使用定时器实时更新录音时长。
- 播放录音 :通过
innerAudioContext.play()
播放录音。 - 清理资源:在组件销毁时,销毁音频上下文,释放资源。