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

Flutter just_audio包在Android与iOS上音频返回时长不一致问题咨询

问题原因与解决方案

可能的原因

  • iOS底层依赖的AVPlayer与Android媒体框架对网络音频时长的解析逻辑存在差异:AVPlayer加载网络音频时,会先基于初始获取的不完整元数据估算时长,后续随音频数据加载才会修正;若音频流的元数据本身存在歧义(比如ID3标签标注的时长与实际编码时长不符),就会出现最终时长偏差。
  • just_audio在iOS端调用setUrl时,可能在元数据未完全加载完成的情况下就返回了初始估算的时长,而Android端会等待完整元数据加载后返回准确值。

解决方法

  1. 不要依赖setUrl的返回值获取时长,改为监听durationStream,这个流会在音频时长更新时推送最新的准确值:
    _audioPlayer.durationStream.listen((Duration? duration) {
      if (duration != null) {
        print("准确时长:${duration.toString()}");
      }
    });
    await _audioPlayer.setUrl(url);
    
  2. 检查音频文件的元数据:使用ffmpeg等工具验证音频的实际编码时长与标签时长是否一致,若不一致,重新生成正确的元数据后再上传。
  3. iOS端无需额外系统配置,just_audio的iOS实现不需要特殊权限或配置来获取准确时长,核心是通过流监听获取最终修正后的时长。

内容的提问来源于stack exchange,提问作者Vishnu E R

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:34:57