在不使用输入类型文件的情况下在我的应用程序中播放本地音频文件
Play local audio files in My app without using the input type file
我正在创建一个电子应用程序并想在不使用输入类型文件的情况下播放本地音频文件(来自计算机而不是我的项目目录)。
我尝试了创建新音频实例并为其提供 mp3 文件的绝对路径的传统方法
在 createAudio() 中
const player = new Audio('/Absolute/path/to/music.mp3');
player.play();
我希望它能播放音频文件,但无论出于何种原因,它都会抛出 "Uncaught (in promise) DOMException"
您需要更改自动播放政策。在electron的主进程中添加下面一行试试。
app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required');
在 Javascript 或 HTML 中,以 / 开头的路径是 URLs 架构、主机名和端口 E.G http://localhost
、[=11= 的绝对路径]
所以 /Absolute/path/to/music.mp3
运行ning 在本地主机上的 URL 现在会变成 http://localhost/Absolute/path/to/music.mp3
虽然这对你来说可能不是问题,但你应该始终使用绝对文件系统路径访问文件系统时。 E.G const player = new Audio('file:///Absolute/path/to/music.mp3');
这将指向本地文件。
但是,您可能 运行 遇到 CORS 问题,如果是这种情况,您需要在其使用的浏览器上禁用 CORS,在这种情况下,您需要 Electron (chromium) disable web security[= 上的答案18=]
如果这不起作用,我们需要查看未捕获的异常,
player.play().catch(e => console.error("audio play failed with: "+e))
如果您显示了控制台输出,或者 player.play().catch(e => alert("audio play failed with: "+e))
我正在创建一个电子应用程序并想在不使用输入类型文件的情况下播放本地音频文件(来自计算机而不是我的项目目录)。
我尝试了创建新音频实例并为其提供 mp3 文件的绝对路径的传统方法
在 createAudio() 中
const player = new Audio('/Absolute/path/to/music.mp3');
player.play();
我希望它能播放音频文件,但无论出于何种原因,它都会抛出 "Uncaught (in promise) DOMException"
您需要更改自动播放政策。在electron的主进程中添加下面一行试试。
app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required');
在 Javascript 或 HTML 中,以 / 开头的路径是 URLs 架构、主机名和端口 E.G http://localhost
、[=11= 的绝对路径]
所以 /Absolute/path/to/music.mp3
运行ning 在本地主机上的 URL 现在会变成 http://localhost/Absolute/path/to/music.mp3
虽然这对你来说可能不是问题,但你应该始终使用绝对文件系统路径访问文件系统时。 E.G const player = new Audio('file:///Absolute/path/to/music.mp3');
这将指向本地文件。
但是,您可能 运行 遇到 CORS 问题,如果是这种情况,您需要在其使用的浏览器上禁用 CORS,在这种情况下,您需要 Electron (chromium) disable web security[= 上的答案18=]
如果这不起作用,我们需要查看未捕获的异常,
player.play().catch(e => console.error("audio play failed with: "+e))
如果您显示了控制台输出,或者 player.play().catch(e => alert("audio play failed with: "+e))