Forçar o javascript a usar um dispositivo de som não padrão

Forçar o javascript a usar um dispositivo de som não padrão

Estou tentando forçar uma única página que está reproduzindo áudio por meio de javascript a usar uma placa de som diferente do resto do navegador (na verdade, do resto do sistema). Meu entendimento atual é que um navegador não acessa diretamente o coletor da placa de som, mas delega ao plug-in que deseja reproduzir o áudio. Teoricamente, isso deveria permitir que o javascript usasse um coletor de som diferente do flash ou de qualquer outro plug-in. Se é realmente possível...

Observe que isso não se destina a ser distribuído, estou apenas tentando alterar a saída em um computador, através do console ou similar.

Responder1

É o futuro e agora é possível! Você pode coletar saídas disponíveis deviceIdusando a mediaDevices.enumerateDevicesfunção. Em seguida, aplique o desejado deviceIda um Audioelemento comsetSinkId

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();

Tudo o que resta é aplicar algum som audiodefinindo-o srcou srcObjectcampo.

Código relacionado:https://codepen.io/smujmaiku/pen/oNjBmVj

Nota: audio.play()requer alguma interação do usuário primeiro.

Além disso: verifique suas bandeirashttps://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId

Responder2

Impossível. Talvez no futuro, mas por enquanto o Safari, Chrome, FireFox, Opera e o resto do navegador não tem nem opções em Configurações/Preferências para alterá-lo. E como você sabe, o javascript funciona no navegador da internet e é capaz de fazer o que eles (navegador da internet) podem fazer.

Agora estou pensando que há uma chance de mudar isso com o Node.js, pois você pode escrever um pacote/gancho principal/módulo externo e ser capaz de alterá-lo de alguma forma com javascript, mas o efeito de alterar a placa de som será apenas no servidor cliente paralelo com Node.js + seu módulo.

Se você quiser mudar isso (além de não poder usar javascript e navegador de internet), você pode usar o Virtual Audio Cablehttp://en.wikipedia.org/wiki/Virtual_Audio_Cableque é um aplicativo para Windows.

Pergunta semelhanteAltere o dispositivo de saída de áudio no Firefox

informação relacionada