当前位置:首页 > uni-app

uniapp录音组件

2026-02-06 05:05:37uni-app

uniapp录音组件的基本使用

uniapp提供了uni.getRecorderManager()API实现录音功能,适用于H5、小程序和App平台。创建一个录音管理器实例后,可通过方法控制录音流程。

const recorderManager = uni.getRecorderManager();

// 开始录音
recorderManager.start({
  duration: 60000, // 录音时长(ms)
  sampleRate: 44100, // 采样率
  numberOfChannels: 1, // 录音通道数
  format: 'mp3' // 音频格式(mp3/aac)
});

// 停止录音
recorderManager.stop();

录音事件监听

通过监听录音事件处理录音结果和状态变化。主要事件包括onStartonStoponErroronFrameRecorded

recorderManager.onStart(() => {
  console.log('录音开始');
});

recorderManager.onStop((res) => {
  console.log('录音停止', res.tempFilePath);
  // res.tempFilePath为临时文件路径
});

recorderManager.onError((res) => {
  console.error('录音错误', res.errMsg);
});

录音参数配置

录音参数通过start方法的配置对象设置。常用参数包括音频格式、采样率和录音时长。

uniapp录音组件

  • format:支持aacmp3等格式(平台差异需注意)
  • sampleRate:采样率可选8000/11025/12000/16000/22050/24000/32000/44100/48000
  • frameSize:指定帧大小,单位KB

平台兼容性注意事项

不同平台对录音功能的支持存在差异:

  • 微信小程序:需用户授权,格式默认为aac
  • H5:依赖浏览器支持,部分参数可能不生效
  • App:Android和iOS的实现方式不同,需测试真机效果

录音文件处理

录音完成后可通过uni.uploadFile上传或uni.saveFile保存到本地。

uniapp录音组件

uni.uploadFile({
  url: 'https://example.com/upload',
  filePath: tempFilePath,
  name: 'audio',
  success(res) {
    console.log('上传成功', res.data);
  }
});

权限处理

在App端需配置录音权限(AndroidManifest.xml和Info.plist)。小程序端需在app.json中声明权限。

// 微信小程序app.json
{
  "requiredPermissions": ["record"]
}

错误处理

常见错误包括权限拒绝、设备占用等,建议在onError中统一处理并给予用户提示。

recorderManager.onError((err) => {
  uni.showToast({
    title: '录音失败: ' + err.errMsg,
    icon: 'none'
  });
});

扩展功能实现

结合uni.createInnerAudioContext()可实现录音播放。通过onFrameRecorded可获取分片录音数据用于实时分析。

// 播放录音
const audioContext = uni.createInnerAudioContext();
audioContext.src = tempFilePath;
audioContext.play();

标签: 组件uniapp
分享给朋友:

相关文章

vue实现组件封装

vue实现组件封装

Vue 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发…

vue 实现组件刷新

vue 实现组件刷新

实现组件刷新的方法 在Vue中,组件刷新通常指重新渲染组件或重置组件状态。以下是几种常见的实现方式: 使用v-if控制渲染 通过v-if指令可以销毁并重新创建组件: <template&…

elementui组件

elementui组件

ElementUI 组件概述 ElementUI 是一套基于 Vue.js 的桌面端组件库,提供丰富的 UI 组件,适用于快速开发中后台系统。以下是其核心组件分类及典型用法。 基础组件 Butto…

uniapp视频

uniapp视频

uniapp视频开发基础 uniapp支持通过video组件实现视频播放功能,该组件兼容多端(H5、小程序、App等),基本用法如下: <template> <video…

uniapp切片

uniapp切片

uniapp 切片实现方法 在 uniapp 中实现切片功能通常指的是对图片或数据进行分割处理。以下是几种常见的切片实现方式: 图片切片展示 通过 CSS 和 JavaScript 实现图片的网格化…

uniapp使用axios无法请求

uniapp使用axios无法请求

uniapp中使用axios请求问题解决方案 在uniapp中使用axios可能会遇到跨域、请求失败或兼容性问题。以下是常见原因及解决方法: 检查axios安装与引入 确保已正确安装axios:…