uniapp 如何获取录音数据

在uniapp中如何获取录音数据?我试了uni.startRecord可以开始录音,但不知道怎样获取录音文件的数据流或者保存路径。需要把录音数据上传到服务器,应该怎么操作?求具体代码示例。

2 回复

在Uniapp中,使用uni.getRecorderManager()获取录音管理器,通过onFrameRecorded监听录音数据。录音数据为PCM格式,可直接处理或转码。


在 UniApp 中,可以通过 uni.getRecorderManager() 方法获取录音管理器,然后使用它来录制音频并获取录音数据。以下是具体步骤和示例代码:

步骤说明

  1. 创建录音管理器:使用 uni.getRecorderManager() 获取全局唯一的录音管理器实例。
  2. 配置录音选项:设置录音参数,如格式、采样率等。
  3. 监听录音事件:包括开始、暂停、继续、结束和错误事件。
  4. 获取录音数据:在 onStop 回调中通过 res.tempFilePath 获取临时文件路径,用于后续处理或上传。

示例代码

// 创建录音管理器实例
const recorderManager = uni.getRecorderManager();

// 配置录音选项
const options = {
  duration: 10000, // 录音时长(毫秒),默认 10 秒
  sampleRate: 44100, // 采样率
  numberOfChannels: 1, // 录音通道数
  encodeBitRate: 192000, // 编码码率
  format: 'mp3' // 音频格式,支持 'aac'、'mp3' 等
};

// 监听录音开始事件
recorderManager.onStart(() => {
  console.log('录音开始');
});

// 监听录音结束事件,获取录音数据
recorderManager.onStop((res) => {
  console.log('录音结束', res.tempFilePath);
  // res.tempFilePath 是录音文件的临时路径,可用于播放或上传
  // 例如:上传到服务器或本地播放
  uni.uploadFile({
    url: 'https://example.com/upload',
    filePath: res.tempFilePath,
    name: 'audio',
    success: (uploadRes) => {
      console.log('上传成功', uploadRes.data);
    }
  });
});

// 开始录音
recorderManager.start(options);

// 如果需要停止录音(例如在按钮点击事件中)
// recorderManager.stop();

注意事项

  • 平台兼容性:录音功能在微信小程序、App 端和 H5 中支持,但不同平台可能有细微差异(如格式支持)。
  • 临时文件路径:录音文件为临时文件,应用关闭后可能被清理,如需持久化请及时上传或保存。
  • 用户权限:首次录音时会请求用户授权,需确保应用有录音权限。

通过以上方法,您可以轻松在 UniApp 中录制音频并获取数据。如果有进一步需求(如实时处理音频流),需结合其他插件或原生开发。

回到顶部