uni-app 小程序 getRecorderManager录音结束后获得的音频fileSize都是0

发布于 1周前 作者 ionicwang 来自 Uni-App

uni-app 小程序 getRecorderManager录音结束后获得的音频fileSize都是0

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
### 操作步骤:
```javascript
const recorderManager = uni.getRecorderManager();
recorderManager.onStop(res => {
console.log('停止了')
console.log(res)  
});

预期结果:

返回的结果都是fileSize=0

实际结果:

返回的结果都是fileSize=0

bug描述:

getRecorderManager录音结束后 小程序获得的音频都是0kb文件
duration: 0, tempFilePath: “wxfile://tmp_d02599a96ec150172e114e74508a13d2.mp3”, fileSize: 0


5 回复

在原生小程序中测试下是否有问题,如有问题请向微信开发者社区反馈。


子组件异常 非组件方式是正常的

经过测试 子组件出现问题

解决了吗?

在 uni-app 开发小程序时,使用 getRecorderManager 进行录音时,如果在录音结束后获取到的音频 fileSize 为 0,可能是由于以下几个原因导致的:

1. 录音未成功

  • 确保录音已经成功启动并且在录音过程中没有出现错误。可以通过监听 onStartonError 事件来确认录音是否正常进行。
const recorderManager = uni.getRecorderManager();

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

recorderManager.onError((err) => {
    console.error('录音失败', err);
});

recorderManager.start({
    format: 'mp3', // 录音格式
    duration: 60000, // 录音时长,单位 ms
});

2. 录音未停止

  • 确保在录音结束后调用 stop 方法停止录音。如果录音未正确停止,可能会导致获取到的音频文件大小为 0。
recorderManager.onStop((res) => {
    console.log('录音结束', res);
    console.log('文件大小', res.fileSize); // 检查文件大小
});

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

3. 录音时长过短

  • 如果录音时长过短,可能会导致生成的音频文件大小为 0。尝试增加录音时长,确保录音有足够的时间来生成有效的音频文件。
recorderManager.start({
    format: 'mp3',
    duration: 10000, // 10秒
});

4. 录音格式不支持

  • 确保使用的录音格式是支持的格式。不同平台可能支持的格式不同,常见的格式有 mp3aacwav 等。如果不支持的格式可能会导致录音失败或文件大小为 0。
recorderManager.start({
    format: 'mp3', // 确保使用支持的格式
    duration: 60000,
});

5. 小程序平台限制

  • 不同的小程序平台(如微信、支付宝等)对录音功能的实现可能有所不同,某些平台可能会有特定的限制或问题。确保你使用的是最新版本的 SDK,并检查相关文档是否有已知问题。

6. 文件路径问题

  • 在某些情况下,虽然录音成功,但文件路径可能不正确,导致无法获取到文件大小。确保 res.tempFilePath 是正确的文件路径,并且可以正常访问。
recorderManager.onStop((res) => {
    console.log('录音结束', res);
    console.log('临时文件路径', res.tempFilePath);
    console.log('文件大小', res.fileSize);
});

7. 权限问题

  • 确保小程序已经获取了录音权限。如果用户拒绝了录音权限,录音将无法正常进行。

8. 调试工具问题

  • 如果你是在开发工具的模拟器中测试,有时模拟器可能会出现一些异常行为。尝试在真机上测试,看看问题是否依然存在。

示例代码

以下是一个完整的录音示例代码:

const recorderManager = uni.getRecorderManager();

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

recorderManager.onStop((res) => {
    console.log('录音结束', res);
    console.log('临时文件路径', res.tempFilePath);
    console.log('文件大小', res.fileSize);
});

recorderManager.onError((err) => {
    console.error('录音失败', err);
});

// 开始录音
recorderManager.start({
    format: 'mp3',
    duration: 10000, // 10秒
});

// 停止录音
setTimeout(() => {
    recorderManager.stop();
}, 10000); // 10秒后停止录音
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!