收藏
回答

请教一下:RecorderManager能否获取到音量?

想实现录音时麦克风随音量大小变化的动画效果,不知道RecorderManager如何实现。

回答关注问题邀请回答
收藏

1 个回答

  • 张业贵
    张业贵
    2022-10-03

    调用两个微信API,自己进行计算吧

    一是获取录音分片, RecorderManager.onFrameRecorded(function listener)

    监听已录制完指定帧大小的文件事件。如果设置了 frameSize,则会回调此事件。

    https://developers.weixin.qq.com/miniprogram/dev/api/media/recorder/RecorderManager.onFrameRecorded.html

    二是提取分贝信息 AnalyserNode WebAudioContext.createAnalyser() 

    创建一个 AnalyserNode 。可以用来获取音频时间和频率数据,以及实现数据可视化。

    https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/WebAudioContext.createAnalyser.html

    const audioCtx = wx.createWebAudioContext();
    const analyser = audioCtx.createAnalyser();
    analyser.fftSize = 2048;
    const bufferLength = analyser.fftSize;
    const dataArray = new Uint8Array(bufferLength);
    analyser.getByteTimeDomainData(dataArray);
    

    三是计算音量,模拟一下,参考代码

     const onFrame = () => {
        analyserNode.getFloatTimeDomainData(pcmData);
        let sumSquares = 0.0;
        for (const amplitude of pcmData) { sumSquares += amplitude*amplitude; }
        volumeMeterEl.value = Math.sqrt(sumSquares / pcmData.length);
        window.requestAnimationFrame(onFrame);
    };
    




    2022-10-03
    有用 2
    回复 4
    • Ratchet
      Ratchet
      2022-10-07
      太感谢了!
      2022-10-07
      回复
    • 会飞的乌龟哥哥
      会飞的乌龟哥哥
      2023-03-06
      请问这个第三步是怎么计算的,有点没明白
      2023-03-06
      回复
    • 包包
      包包
      2023-11-03回复Ratchet
      你好,请问按照这个实现了吗,怎么实现的啊,没太清楚这三步怎么串起来的
      2023-11-03
      回复
    • 包包
      包包
      2023-11-03
      没太清楚这三步怎么串起来的
      2023-11-03
      回复
登录 后发表内容