不使用输入类型文件在我的应用中播放本地音频文件

sam*_*tel 8 javascript audio html5-audio electron

我正在创建一个电子应用程序,想要播放本地音频文件(来自计算机而不是我的项目目录)而不使用输入类型文件。

我尝试了创建新 Audio 实例并为其提供 mp3 文件的绝对路径的传统方法

在 createAudio() 内部

const player = new Audio('/Absolute/path/to/music.mp3');
player.play();
Run Code Online (Sandbox Code Playgroud)

我希望它能够播放音频文件,但无论出于何种原因,它都会抛出“未捕获(承诺)DOMException”

Bar*_*n01 2

在 Javascript 或 HTML 中,以 / 开头的路径是 URL 模式、主机名和端口 EG 的绝对路径http://localhosthttp://localhost:8080

/Absolute/path/to/music.mp3因此,在 localhost 上运行 的 URL将变为http://localhost/Absolute/path/to/music.mp3现在,虽然这对您来说可能不是问题,但访问文件系统时应始终使用绝对文件系统路径。EGconst player = new Audio('file:///Absolute/path/to/music.mp3');这将指向本地文件。

但是,如果您需要在所使用的浏览器上禁用 CORS,您可能会遇到 CORS 问题,在这种情况下,您需要Electron (chromium) 禁用 Web 安全性上的答案

如果这不起作用,我们需要查看未被捕获的异常,

player.play().catch(e => console.error("audio play failed with: "+e))如果显示控制台输出,或者player.play().catch(e => alert("audio play failed with: "+e))