uni-app 小程序 getRecorderManager录音结束后获得的音频fileSize都是0
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. 录音未成功
- 确保录音已经成功启动并且在录音过程中没有出现错误。可以通过监听
onStart
和onError
事件来确认录音是否正常进行。
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. 录音格式不支持
- 确保使用的录音格式是支持的格式。不同平台可能支持的格式不同,常见的格式有
mp3
、aac
、wav
等。如果不支持的格式可能会导致录音失败或文件大小为 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秒后停止录音