Я создаю электронное приложение и хочу воспроизводить локальный аудиофайл (с компьютера, а не из каталога моего проекта) без использования файла типа ввода.

Я попробовал традиционный способ создания нового экземпляра Audio и предоставления ему абсолютного пути к mp3-файлу.

Внутри createAudio ()

const player = new Audio('/Absolute/path/to/music.mp3');
player.play();

Я ожидаю, что он будет воспроизводить аудиофайл, но по какой-то причине он выдает «Uncaught (в обещании) DOMException»

3
sam patel 16 Авг 2019 в 05:06

2 ответа

Лучший ответ

Элементы с http://localhost захватываются, даже если у них нет транзакций в данном месяце, потому что их количество по-прежнему> 0.…

Поэтому URL-адрес /Absolute/path/to/music.mp3, работающего на локальном хосте, теперь станет http://localhost/Absolute/path/to/music.mp3, хотя это не может быть проблемой для вас, при обращении к файловой системе всегда следует использовать абсолютные пути к файловой системе. E.G const player = new Audio('file:///Absolute/path/to/music.mp3'); это будет указывать на локальный файл.

Однако вы можете столкнуться с проблемами CORS, если в этом случае вам необходимо отключить CORS в браузере, который он использует, и в этом случае вам нужно получить ответы на Электрон (хром) отключить веб-безопасность

Если это не работает, нам нужно увидеть исключение,

player.play().catch(e => console.error("audio play failed with: "+e)) если у вас есть вывод консоли, или player.play().catch(e => alert("audio play failed with: "+e))

0
Barkermn01 20 Авг 2019 в 09:50

Вам необходимо внести изменения в правила автоигры. Добавьте строку ниже в основной процесс электрона и попробуйте.

app.commandLine.appendSwitch('autoplay-policy', 'no-user-gesture-required');
0
Ajey 17 Авг 2019 в 07:34