小程序
小游戏
企业微信
微信支付
扫描小程序码分享
想实现录音时麦克风随音量大小变化的动画效果,不知道RecorderManager如何实现。
1 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
调用两个微信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); };
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
调用两个微信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); };