首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法加载音频- DOMException:由于没有找到支持的源,加载失败

无法加载音频- DOMException:由于没有找到支持的源,加载失败
EN

Stack Overflow用户
提问于 2020-09-12 16:30:06
回答 1查看 5.8K关注 0票数 0

我试图加载一个音频,我得到两个错误,但一切都很好,来源是正确的。

错误:

  • GET http://localhost:4200/src/assets/sound/welcome_Rift.mp3 404 (未找到) -Uncaught (承诺) DOMException:未能加载,因为没有找到支持的源。

javascript:

代码语言:javascript
复制
this.sound = new Audio();
        this.sound.src = 'src/assets/sound/welcome_Rift.mp3';
        this.sound.load();
        this.sound.play();

文件路径:src/资产/声音/欢迎_Rift.mp3

我不知道我为什么要犯这个错误,有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2020-09-12 16:45:41

GET http://localhost:4200/src/assets/sound/welcome_Rift.mp3 404 (未找到)

404错误表示您的媒体文件未被找到。这可能是很多事情。如果路径是正确的,那么可能是本地主机服务器,它不知道src/assets/sound/welcome_Rift.mp3应该指向哪里。也许可以检查来自src/welcome_Rift.mp3的文件是否有效,以查看问题所在。

DOMException:未能加载,因为没有找到支持的源。

这是因为HTMLMediaElement.play()返回一个Promise。它表示Uncaught in promise的部分意味着承诺无法处理错误,应该向其中添加一些带有catch()方法的允诺逻辑。此方法允许您在发生错误时执行某些操作。

代码语言:javascript
复制
this.sound = new Audio();
this.sound.src = 'src/assets/sound/welcome_Rift.mp3';
this.sound.load();
this.sound.play()
  .then(() => {
    // Audio is playing.
  })
  .catch(error => {
    console.log(error);
  });

旧浏览器在执行play()时可能不会返回承诺,因此在这种情况下,您应该检查它是否返回承诺。

代码语言:javascript
复制
this.sound = new Audio();
this.sound.src = 'src/assets/sound/welcome_Rift.mp3';
this.sound.load();
const promise = this.sound.play();
if (promise !== undefined) { // On older browsers play() does not return anything, so the value would be undefined.
  promise
    .then(() => {
      // Audio is playing.
    })
    .catch(error => {
      console.log(error);
    });
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63862495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档