You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Expo AV iOS设备RecordingStatus中durationMillis始终为0问题求助

iOS真机录音durationMillis始终为0的排查方案

问题场景

  • 仅iOS真机出现异常,iOS模拟器、安卓全平台(真机/模拟器)运行正常
  • 使用Expo Audio模块创建录音时,传入的状态回调中durationMillis字段始终为0,即使isRecording已切换为true
  • 该功能此前在iOS真机上正常运行,突然失效;已尝试卸载重装应用、分别使用Expo Go/TestFlight构建版本测试,问题未解决

相关代码与日志

创建录音代码

await Audio.Recording.createAsync(
  {...Audio.RecordingOptionsPresets.HIGH_QUALITY},
  statusUpdateCallback,
);

状态回调函数

const statusUpdateCallback = async (status: Audio.RecordingStatus) => {
  console.log(status);
};

iOS真机日志输出

LOG  {"canRecord": true, "durationMillis": 0, "isRecording": false, "mediaServicesDidReset": false, "metering": -120}
 LOG  {"canRecord": true, "durationMillis": 0, "isRecording": false, "mediaServicesDidReset": false, "metering": -120}
 LOG  {"canRecord": true, "durationMillis": 0, "isRecording": true, "mediaServicesDidReset": false, "metering": -28.657485961914062}
 LOG  {"canRecord": true, "durationMillis": 0, "isRecording": true, "mediaServicesDidReset": false, "metering": -24.778385162353516}

排查思路

  • 校验expo-av版本兼容性:确认当前使用的expo-av版本是否存在iOS真机时长统计bug,直接升级到最新稳定版,或回退至之前能正常运行的版本
  • 替换预设配置为自定义参数:Audio.RecordingOptionsPresets.HIGH_QUALITY可能在iOS真机上存在配置缺失,手动指定完整录音参数,示例:
    const customOptions = {
      sampleRate: 44100,
      numberOfChannels: 1,
      format: Audio.RECORDING_OPTION_IOS_FORMAT_M4A,
      bitRate: 128000,
      audioQuality: Audio.RECORDING_OPTION_IOS_AUDIO_QUALITY_HIGH
    };
    await Audio.Recording.createAsync(customOptions, statusUpdateCallback);
    
  • 重新验证iOS权限与隐私配置:检查APP的麦克风权限是否为“允许”,同时确认Info.plist中已正确配置NSMicrophoneUsageDescription字段(即使之前配置过,系统更新可能导致权限重置)
  • 排查系统音频服务异常:iOS媒体服务偶尔会出现异常,尝试重启设备;同时在APP中监听mediaServicesDidReset状态,触发时重新初始化录音模块
  • 绕过回调状态,主动获取时长:暂时不依赖回调中的durationMillis,在录音过程中定时调用getDurationAsync()获取真实时长,验证是否为回调状态统计问题:
    // 录音过程中定时执行
    const fetchRealDuration = async () => {
      const realDuration = await recordingInstance.getDurationAsync();
      console.log('真实录音时长:', realDuration);
    };
    
  • 确认iOS系统版本影响:测试不同iOS版本的真机,排查是否为特定系统版本(如iOS 17.x)引入的兼容性问题

内容的提问来源于stack exchange,提问作者cip123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:43:15