收藏
回答

recordMange.start,stop偶发报错 fail recorder not start

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug getRecorderManager 微信iOS客户端 8.0.44 3.2.4
代码如下,当recordManger.onStart的时候recordClicked = true 记录开始录音。
当用户点击停止的时候触发recordManger.stop()停止录音,我们在onStop的时候,把标志recordClicked = false,记录完成录音,提示发送按钮。
但是目前有部分用户反馈,开始录音后无法停止,查看日志,发现日志反馈onError:{"errMsg":"operateRecorder:fail recorder not start"}。
我们是在onstart之后才开放停止按钮的,而且用户录音都是10秒以上的不存在1秒以内时间太多的情况。这个应该不存在异步还没开始的问题呢。


设备型号	iPhone 12 Pro<iPhone13,3>

        const recordManger = wx.getRecorderManager();
        this.remainingTime = RECORD_DURATION;
      recordManger.onStop((res) => {
        this.recordClicked = false;
        this.recordPaused = false;
        this.tempRecordFilePath = res.tempFilePath;
        this.audioDuration = Math.round(res.duration);
        this.recordFileSize = res.fileSize;
        InnerAudioContext2.src = res.tempFilePath;
        this.recordDuration = parseInt(RECORD_DURATION - this.remainingTime);
        this.remindPlayTime = this.recordDuration;
        this.remainingTime = RECORD_DURATION;
        clearInterval(this.interver);
      });
      recordManger.onStart(() => {
        this.recordFileSize = 0;
        this.recordClicked = true;
        clearInterval(this.interver);
        // this.remainingTime = RECORD_DURATION
        this.interver = setInterval(() => {
          !this.recordPaused && this.remainingTime--;
          if (this.remainingTime === 0) {
            clearInterval(this.interver);
            recordManger.stop();
            this.recordClicked = false;
            this.recordPaused = false;
          }
        }, 1000);
      });
      // 错误回调
      recordManger.onError((res) => {
        onlineConsultationHook.emit(
          'recorderErrMsg',
          this.consultItem,
          JSON.stringify(res)
        );
      });
    // 开始录音
    startRecordVoice() {
      checkRecordPermission(
        () => {
          this.initPlugin();
          recordManger &&
            recordManger.start({
              format: 'mp3',
              duration: RECORD_DURATION * 1000
            });
        },
        () => {}
      );
    },
    // 暂停录音
    pauseRecordVoice() {
      this.recordPaused = true;
      recordManger && recordManger.pause();
    },
    // 继续录音
    resumeRecordVoice() {
      this.recordPaused = false;
      recordManger && recordManger.resume();
    },
    // 停止录音
    stopRecordVoice() {
      recordManger && recordManger.stop();
    },
回答关注问题邀请回答
收藏

2 个回答

  • Demons
    Demons
    2023-12-11

    请具体描述问题出现的流程,并提供能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2023-12-11
    有用
    回复 4
    • Geefib
      Geefib
      2023-12-11
      用户点击开始录音,触发recordManger.start。在onstart记录开始录音并开放停止按钮,用户录制10秒之后,点击停止.触发recordManger.stop。触发了onError,错误信息:operateRecorder:fail recorder not start。偶发,代码如上
      2023-12-11
      回复
    • Why not?
      Why not?
      2023-12-15回复Geefib
      他们要的是能直接运行的代码片段,帖子里贴代码他们是不接受的
      2023-12-15
      回复
    • 冷暖自知🍃
      冷暖自知🍃
      2023-12-25回复Geefib
      解决了吗
      2023-12-25
      回复
    • Geefib
      Geefib
      01-11
      监听onpause
      01-11
      回复
  • REN :)
    REN :)
    02-21

    您好,请问解决了吗

    02-21
    有用
    回复 1
    • Geefib
      Geefib
      02-21
      监听onpause,有的会一开始就pause
      02-21
      回复
登录 后发表内容