Я пытаюсь заставить одну страницу, которая воспроизводит звук через javascript, использовать другую звуковую карту, нежели остальная часть браузера (на самом деле, остальная часть системы). Насколько я понимаю, браузер не обращается напрямую к приемнику звуковой карты, а делегирует это плагину, который хочет воспроизвести звук. Теоретически это должно позволить javascript использовать другой приемник звука, нежели flash или любой другой плагин. Возможно ли это на самом деле...
Обратите внимание, что это не предназначено для распространения, я лишь пытаюсь изменить вывод на одном компьютере через консоль или что-то подобное.
решение1
Это будущее, и теперь это возможно! Вы можете собрать доступные выходные данные deviceId
с помощью mediaDevices.enumerateDevices
функции. Затем примените желаемое deviceId
к Audio
элементу с помощьюsetSinkId
const devices = await navigator.mediaDevices.enumerateDevices();
const outputs = devices.filter(({ kind }) => kind === 'audiooutput');
const output = outputs[1]; // Choose a device
const audio = new Audio();
audio.setSinkId(output.deviceId);
audio.play();
Осталось только применить какой-нибудь звук, audio
установив его src
поле srcObject
.
Связанный codepen:https://codepen.io/smujmaiku/pen/oNjBmVj
Примечание: audio.play()
сначала требуется некоторое взаимодействие с пользователем.
Также: Проверьте свои флагиhttps://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId
решение2
Невозможно. Может быть в будущем, но сейчас Safari, Chrome, FireFox, Opera и остальные браузеры не имеют даже опций в Настройках/Предпочтениях, чтобы изменить это. И как вы знаете, javascript работает в интернет-браузере и способен делать то, что они (интернет-браузеры) могут делать.
Теперь я думаю, что есть шанс изменить это с помощью Node.js, поскольку вы можете написать пакет/основной хук/внешний модуль и иметь возможность каким-то образом изменить его с помощью JavaScript, но эффект от изменения звуковой карты будет только на стороне сервера клиента с Node.js + ваш модуль.
Если вы хотите это изменить (кроме того, вы не можете использовать JavaScript и интернет-браузер), вы можете использовать Virtual Audio Cable.http://en.wikipedia.org/wiki/Виртуальный_Аудиокабелькоторое является приложением для Windows.
Похожий вопросИзмените устройство вывода звука в Firefox