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

运行时创建音频报错MEDIA_ERR_SRC_NOT_SUPPORTED,应从服务器还是缓存刷新?

结论

该场景下传false即可,是更优的选择。

原因

  1. 你遇到的偶发加载失败不是缓存资源损坏、也不是服务端返回的资源本身有问题,而是Chrome加载大体积媒体文件时的已知偶发初始化异常,你自己也验证过同一会话下只要重试就能正常加载,哪怕读取本地缓存也可以正常解析,不需要强制跳过缓存请求服务端资源,平白增加带宽开销和加载时长。
  2. 传true强制刷新的唯一适用场景是确认本地缓存的资源已经损坏/过期,你的场景完全不满足这个前提,使用false从缓存读取即可解决问题。

额外优化建议

直接刷新整个页面的代价过高,建议先尝试更轻量的降级方案:

  • 出错时不要直接刷新,先尝试重置音频对象的src后手动调用load()方法重试加载,设置最多2~3次重试阈值,多次重试失败再走页面刷新逻辑,代码示例:
let retryCount = 0
const MAX_RETRY = 3
snd.onerror = _ => {
  if(retryCount < MAX_RETRY) {
    retryCount++
    snd.src = "file.mp3"
    snd.load()
    return
  }
  // 多次重试失败再刷新
  window.location.reload(false)
}

注意:正确的页面刷新方法是window.location.reload(),你写的refresh是笔误,该方法不存在。

  • 初始化音频时可以显式设置preload="auto"属性,大文件场景下比默认配置的加载稳定性更高。
  • 如果音频体积超过10MB,更推荐使用MediaSource API做分片流式加载,从根本上解决大文件单次加载的偶发异常问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:36:05