当前位置: 首页 > article >正文

uniapp录制语音

给大家讲解瞎 录制语音 的功能,这部分主要涉及到以下几个步骤:开始录音、停止录音、播放录音的功能

1.开始录音 (startRecording 函数)

  • 当用户点击 开始录音 按钮时,调用 startRecording 函数开始录音。
  • 录音通过 uni.getRecorderManager() 来实现。recorderManager 是录音管理器,提供了启动、停止、暂停等控制录音的功能、
const startRecording = () => {
    const options = {
        duration: 60000,  // 限制录音时长,最大为60秒  
        format: 'mp3',  // 录音格式  
    };
    recorderManager.start(options);  // 调用 start 方法开始录音
};

2. 停止录音 (stopRecording 函数)

  • 当用户点击 停止录音 按钮时,调用 stopRecording 函数来停止录音。
2. 停止录音 (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() 播放录音。
  • 清理资源:在组件销毁时,销毁音频上下文,释放资源。

http://www.kler.cn/a/554649.html

相关文章:

  • 网络安全入门防御与加固(二)
  • Windows 10操作系统上安装PHP
  • 广度优先搜索--之重生之我是蒟蒻,从入坟到入坑式讲解
  • 练习题:45
  • JavaScript系列(78)--Service Worker 深入解析
  • RAGFLOW使用flask转发的open ai接口
  • BFS 解决 FloodFill 算法(典型算法思想)—— OJ例题算法解析思路
  • 神经网络八股(2)
  • Unity 位图字体
  • 3.1 actor基本框架(c#的Akka.Actor模式)
  • 约束性委派攻击和非约束性委派攻击
  • Vue 3 工程化:从理论到实践 (上篇)
  • DeepSeek在企业中的有那些具体应用?
  • 易基因: ChIP-seq+DRIP-seq揭示AMPK通过调控H3K4me3沉积和R-loop形成以维持基因组稳定性和生殖细胞完整性|NAR
  • jvm中各个参数的理解
  • ROS 2机器人开发--第一个节点
  • HTTP SSE 实现
  • 【清华大学】DeepSeek从入门到精通完整版pdf下载
  • Could not initialize class io.netty.util.internal.Platfor...
  • nginx配置ssl