uni-app APP端录音问题

uni-app APP端录音问题

测试过的手机:

ALL

操作步骤:

  • 录音管理的这个函数onFrameRecorded不允许APP端用

预期结果:

  • 预期uni.getRecorderManager()的onFrameRecorded这个语法可以在APP中实现,按道理来讲APP端应该更加强大才是,这怎么还不行呢

实际结果:

  • 希望官方解决

bug描述:

看到几年前的帖子官方就说后续更新计划会推出APP版本的录音返回分片帧数据,结果现在也没更新,甚至我怀疑都没有这个计划了,因此我发这个帖子强烈建议把这个功能纳入开发日程并尽快上线,这功能对你们官方来讲也不难甚至可以说很容易的,微信小程序能用APP却不能用很烦,这个功能也不是那种无关紧要的,可以说是很重要的一个功能,例如平时开发实时语音返回文字都能用到,虽说现在插件市场有几个插件都能实现这个功能,但都比较贵一个插件要几百块还只能用在一个项目上,最主要的是这种开发者搞的插件稳定性也肯定不如官方的 真心强烈建议开发这个功能 发布这个bug帖子的原因也是因为发了普通贴你们官方的人看不到所以出此下策,虽然这个对你们来讲不算bug但对需要这个功能的人来讲就是算bug的,明明有这个语法却限制了不让APP用


更多关于uni-app APP端录音问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

30 回复

感谢反馈,让你久等了,此问题已交给相关负责人进行修复

更多关于uni-app APP端录音问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


不容易啊,终于看到我了。毕竟这功能挺重要的,APP端好几年都没出,希望尽快推出吧

请问大概什么时候修好

回复 2***@qq.com: 具体还得看安卓那边的负责人zl同事,你可以@DCLOUD_Android_zl

我卖你个原生本地插件,1000块。我们以前项目用到的

我项目做完了已经买了插件,但是我觉得这个功能本应就是官方该做的不应该通过去购买插件的形式实现,毕竟小程序平台均都有这个API

顶一下,官方什么时候出分片式录音

这个真的是一个很重要的功能,对于你们官方来讲会原生开发做一个这样的功能不会花很多时间吧?但确确实实能为不少的开发者带来用处

官方人员是假期还没结束嘛,咋感觉回复率这么低,如果看到的话能不能解决麻烦有个答复

顶+1+1+1

没有官方的人来回答一下吗

估计还在假期的梦中度过,看了好多帖子都没官方的人回复。社区效率不太行啊,这种功能早就该有了,拖了几年,如果没人持续的反馈估计永久都不会出,之前4年前的帖子官方人员就说过后续会搞现在也没消息

而且这问题也不是我一个人提,看到过好几个提这问题的,这么重要的功能官方也不重视一下

?????官方的人走过路过看一看

别顶了, 官方才不会管你这么多。我早就反馈过了,他们说优先级不高

回复 9***@qq.com: 优先级不高也得做啊,这是个重要的功能,而且再优先级不高几年了也该做了吧,没人催他们永远都不会做,顶一顶催一催还有希望

顶一下,官方来个人回复下,搞与不搞起码有个信

顶顶顶,来人

顶上去

???????????

官方什么效率。社区帖子看不见是吧?

官方什么效率。社区帖子看不见是吧?

每日一催

我这一看官方的精力都分配到uniappx上去了,uniapp有点不管不顾的意思。关于uniappx的帖子回复都很积极

负责人也不回应一下

每日一顶

@DCLOUD_Android_zl 请问下什么时候处理呢,都这么久了

@DCloud_Android_zl 请问下什么时候处理呢,都这么久了

在 uni-app 中实现 APP 端的录音功能,可以使用 uni.getRecorderManager() API。该 API 提供了录音管理功能,支持在 App 端进行录音操作。以下是一个简单的实现示例,帮助你了解如何使用这个 API。

1. 引入录音管理模块

const recorderManager = uni.getRecorderManager();

2. 监听录音事件

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

recorderManager.onPause(() => {
  console.log('录音暂停');
});

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

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

3. 开始录音

recorderManager.start({
  duration: 60000, // 录音时长,单位 ms,默认 60000(1分钟)
  sampleRate: 44100, // 采样率,默认 44100
  numberOfChannels: 1, // 录音通道数,默认 1
  encodeBitRate: 192000, // 编码码率,默认 192000
  format: 'mp3', // 音频格式,默认 'mp3'
});

4. 暂停录音

recorderManager.pause();

5. 继续录音

recorderManager.resume();

6. 停止录音

recorderManager.stop();

7. 上传录音文件

录音停止后,可以通过 tempFilePath 获取录音文件的临时路径,然后使用 uni.uploadFile 将文件上传到服务器。

uni.uploadFile({
  url: 'https://example.com/upload', // 服务器地址
  filePath: tempFilePath,
  name: 'file',
  success: (uploadRes) => {
    console.log('上传成功', uploadRes.data);
  },
  fail: (err) => {
    console.error('上传失败', err);
  },
});

8. 处理权限问题

在 App 端录音时,可能需要获取录音权限。你可以在 manifest.json 中配置权限:

{
  "app-plus": {
    "permissions": {
      "audio-capture": {
        "description": "需要录音权限"
      }
    }
  }
}

9. 完整示例

以下是一个完整的录音功能示例:

<template>
  <view>
    <button @click="startRecording">开始录音</button>
    <button @click="pauseRecording">暂停录音</button>
    <button @click="resumeRecording">继续录音</button>
    <button @click="stopRecording">停止录音</button>
  </view>
</template>

<script>
export default {
  data() {
    return {
      recorderManager: uni.getRecorderManager(),
      tempFilePath: '',
    };
  },
  methods: {
    startRecording() {
      this.recorderManager.start({
        duration: 60000,
        sampleRate: 44100,
        numberOfChannels: 1,
        encodeBitRate: 192000,
        format: 'mp3',
      });
    },
    pauseRecording() {
      this.recorderManager.pause();
    },
    resumeRecording() {
      this.recorderManager.resume();
    },
    stopRecording() {
      this.recorderManager.stop();
    },
  },
  mounted() {
    this.recorderManager.onStop((res) => {
      this.tempFilePath = res.tempFilePath;
      console.log('录音文件路径:', this.tempFilePath);
    });
  },
};
</script>
回到顶部