当前位置:首页 > 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
分享给朋友:

相关文章

uniapp模板库

uniapp模板库

uniapp模板库推荐 官方模板库 uni-app官方提供多个模板,涵盖电商、社交、新闻等多个领域。这些模板可直接在HBuilderX中通过新建项目选择,包含基础结构和常用功能模块,适合快速启动项目。…

uniapp前端页面

uniapp前端页面

Uniapp 前端页面开发指南 Uniapp 是一个基于 Vue.js 的跨平台开发框架,支持一次开发,多端部署(H5、小程序、App等)。以下是开发 Uniapp 前端页面的关键方法和注意事项。…

uniapp 如何封装request请求

uniapp 如何封装request请求

封装 request 请求的核心思路 在 UniApp 中封装请求通常基于 uni.request,通过统一处理 URL、参数、header 和拦截逻辑提升代码复用性。以下是一个完整封装方案: 创建…

react组件如何通讯

react组件如何通讯

React 组件通讯方式 React 组件间的通讯方式主要包括以下几种方法,适用于不同场景下的数据传递和状态管理需求。 父子组件通讯(Props 传递) 父组件通过 props 向子组件传递数据或回…

uniapp探探

uniapp探探

uniapp实现探探滑动卡片效果 探探的滑动卡片效果主要包含卡片堆叠、左右滑动操作、动画反馈等功能。在uniapp中可以通过以下方式实现类似交互: 使用swiper组件实现基础滑动 uniapp的s…

vue 实现组件刷新

vue 实现组件刷新

组件局部刷新 在Vue中实现组件刷新可以通过强制重新渲染组件来实现。常用的方法有以下几种: 使用v-if指令 通过切换v-if条件触发组件的销毁和重建 <template> <…