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

JS中Audio.duration在音频末尾微小变动是否为文档化行为?

Audio元素播放至末尾时duration微小变动的原因

这是浏览器媒体处理的正常行为,并非你的操作错误。

核心原因:

  • 音频的duration值并非加载完成后就完全固定。浏览器在音频解码和播放过程中,会根据实际解析出的音频帧数据,逐步修正时长的精度。尤其是接近播放结束时,会基于实际播放的最后一帧位置,调整duration到更精确的数值。
  • 浏览器必须严格保证0 <= audio.currentTime <= audio.duration的约束成立。当currentTime接近最初估算的时长时,为了避免播放到最后时currentTime超出duration,浏览器会微调duration来匹配实际的播放终点,这就出现了你看到的末尾数值变化。

关于你的代码:

你的测试代码没有问题,通过requestAnimationFrame持续打印duration的方式,正好捕捉到了浏览器对时长精度的最后修正过程。这种精度调整是符合HTML5媒体规范的,规范允许浏览器根据实际媒体数据动态修正duration值,以保证播放逻辑的一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:47:06