Estoy intentando forzar que una sola página que reproduce audio a través de JavaScript utilice una tarjeta de sonido diferente al resto del navegador (en realidad, al resto del sistema). Mi entendimiento actual es que un navegador no accede directamente al receptor de la tarjeta de sonido, sino que delega en el complemento que desea reproducir audio. En teoría, esto debería hacer posible que JavaScript utilice un receptor de sonido diferente al de Flash o cualquier otro complemento. Si es realmente posible...
Tenga en cuenta que esto no está destinado a ser distribuido, solo intento cambiar la salida en una computadora, a través de la consola o similar.
Respuesta1
¡Es el futuro y ahora es posible! Puede recopilar los resultados disponibles deviceId
utilizando la mediaDevices.enumerateDevices
función. Luego aplica lo que desees deviceId
a un Audio
elemento consetSinkId
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();
Todo lo que queda es aplicar algo de sonido audio
configurando su campo src
o srcObject
.
Código relacionado:https://codepen.io/smujmaiku/pen/oNjBmVj
Nota: audio.play()
primero requiere cierta interacción del usuario.
También: revisa tus banderashttps://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId
Respuesta2
Imposible. Quizás en el futuro, pero por ahora Safari, Chrome, Firefox, Opera y el resto de navegadores ni siquiera tienen opciones en Configuración/Preferencias para cambiarlo. Y como usted sabe, JavaScript funciona en el navegador de Internet y es capaz de hacer lo que él (el navegador de Internet) puede hacer.
Ahora estoy pensando que existe la posibilidad de cambiar esto con Node.js, ya que puedes escribir un paquete/enganche central/módulo externo y poder cambiarlo de alguna manera con javascript, pero el efecto de cambiar la tarjeta de sonido será solo en el servidor. Cliente lateral con Node.js + su módulo.
Si desea cambiar esto (además de que no puede utilizar JavaScript ni el navegador de Internet), puede utilizar el cable de audio virtual.http://en.wikipedia.org/wiki/Virtual_Audio_Cableque es una aplicación para windows.
pregunta similarCambiar el dispositivo de salida de audio en Firefox