uni-app recorderManager.onStop录音完成返回的duration时长不对?

uni-app recorderManager.onStop录音完成返回的duration时长不对?

1 回复

更多关于uni-app recorderManager.onStop录音完成返回的duration时长不对?的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,recorderManager.onStop返回的duration时长不准确,通常与系统底层实现或录音配置有关。以下为常见原因及解决方案:

  1. 采样率与帧率不匹配
    检查recorderManager.start()的配置参数,确保sampleRate(采样率)和numberOfChannels(声道数)与设备兼容。建议使用默认值或标准值(如采样率44100Hz)。

  2. 系统资源占用
    录音过程中若系统资源紧张(如CPU过载),可能导致时间计算偏差。可尝试关闭后台应用,或优化代码减少并发任务。

  3. 回调时机差异
    onStopduration可能从系统音频模块获取,而非精确计时。部分系统会包含录音启动的缓冲时间,导致数值偏大。可通过onFrameRecorded实时计算数据帧累积时长替代。

  4. 平台差异
    Android和iOS对录音时长的处理逻辑不同,建议分别测试并考虑使用uni.getSystemInfo区分平台调整逻辑。

  5. 框架版本问题
    升级HBuilderX及uni-app SDK至最新版本,修复已知的录音模块缺陷。

示例代码片段(实时计算时长):

let startTime = 0;
recorderManager.onStart(() => {
  startTime = Date.now();
});
recorderManager.onStop((res) => {
  const actualDuration = Date.now() - startTime;
  console.log('系统返回时长:', res.duration, '实际计算时长:', actualDuration);
});
回到顶部