HarmonyOS 鸿蒙Next 5 模拟器使用AVRecorder录制音频(ArkTS),只有模拟器启动后第一次录制成功
HarmonyOS 鸿蒙Next 5 模拟器使用AVRecorder录制音频(ArkTS),只有模拟器启动后第一次录制成功 参照文档
使用AVRecorder录制音频(ArkTS)
环境:DevEco Studio 5.0.5 Release、MacOS
功能:AVRecorder 录制 mp3
我写了录音功能,但是只有在模拟器启动后,第一次录音才会成功,之后的录音都不行,播放出来就是短促的杂音,我查看了不成功的 mp3 文件都只有 3、4 kb
编写逻辑每次都是新建实例,通过 createAVRecorder,然后取消或结束都会置 undefined 和 release 这个实例,同时也会关闭文件描述符 fs.closeSync(this.recordFile.fd);
请问是什么问题呢?
更多关于HarmonyOS 鸿蒙Next 5 模拟器使用AVRecorder录制音频(ArkTS),只有模拟器启动后第一次录制成功的实战教程也可以访问 https://www.itying.com/category-93-b0.html
应该是buffer没写进去吧,avrecorder已经有lame库了吗?没有lame好像只能写wav吧,
更多关于HarmonyOS 鸿蒙Next 5 模拟器使用AVRecorder录制音频(ArkTS),只有模拟器启动后第一次录制成功的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
鸿蒙Next 5模拟器中,AVRecorder首次录制音频成功但后续失败,通常与资源未正确释放有关。确保每次录制后调用release()方法释放资源,并检查音频输入权限是否持续有效。若使用同一实例重复录制,需重新配置参数或创建新实例。排查音频设备占用状态,避免冲突。
从描述看,这是典型的AVRecorder资源释放或状态重置问题。虽然你提到每次新建实例并调用release,但模拟器可能存在状态残留。
检查以下几点:
- 确保在每次录制前调用AVRecorder的reset()方法清除之前的状态
- 验证文件描述符关闭时机,确保在release之前完成所有IO操作
- 在on(‘stateChange’)回调中确认状态已变为idle后再进行下一次录制
- 尝试在录制失败时增加延迟重试机制
建议在release后添加短暂延时再创建新实例,模拟器环境下资源回收可能需要时间。同时检查音频参数配置是否一致,特别是采样率和通道数。


