Erzwingen Sie die Verwendung eines nicht standardmäßigen Soundgeräts durch Javascript

Erzwingen Sie die Verwendung eines nicht standardmäßigen Soundgeräts durch Javascript

Ich versuche, eine einzelne Seite, die Audio über JavaScript abspielt, dazu zu zwingen, eine andere Soundkarte zu verwenden als der Rest des Browsers (eigentlich der Rest des Systems). Nach meinem derzeitigen Verständnis greift ein Browser nicht direkt auf die Soundkarten-Sink zu, sondern delegiert dies an das Plugin, das Audio abspielen möchte. Dies sollte es JavaScript theoretisch ermöglichen, einen anderen Sound-Sink als Flash oder ein anderes Plugin zu verwenden. Ob das tatsächlich möglich ist …

Beachten Sie, dass dies nicht zur Verbreitung bestimmt ist. Ich versuche lediglich, die Ausgabe auf einem Computer über die Konsole oder Ähnliches zu ändern.

Antwort1

Das ist die Zukunft und jetzt ist es möglich! Sie können verfügbare Ausgaben deviceIdmit der mediaDevices.enumerateDevicesFunktion sammeln. Wenden Sie dann Ihre gewünschten Ergebnisse deviceIdauf ein AudioElement mitsetSinkId

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

Jetzt müssen Sie nur noch etwas Ton hinzufügen, audioindem Sie das entsprechende srcFeld festlegen srcObject.

Zugehöriger Codepen:https://codepen.io/smujmaiku/pen/oNjBmVj

Hinweis: audio.play()Erfordert zunächst eine gewisse Benutzerinteraktion.

Außerdem: Überprüfen Sie Ihre Flaggenhttps://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId

Antwort2

Unmöglich. Vielleicht in Zukunft, aber im Moment haben Safari, Chrome, FireFox, Opera und andere Browser nicht einmal Optionen in den Einstellungen/Präferenzen, um dies zu ändern. Und wie Sie wissen, funktioniert JavaScript in Internetbrowsern und kann tun, was es (Internetbrowser) tun kann.

Jetzt denke ich, dass es eine Chance gibt, dies mit Node.js zu ändern, da Sie ein Paket/einen Core-Hook/ein externes Modul schreiben und es irgendwie mit JavaScript ändern können, aber die Auswirkung der Änderung der Soundkarte wird nur auf den serverseitigen Client mit Node.js + Ihrem Modul wirken.

Wenn Sie dies ändern möchten (außerdem können Sie kein Javascript und keinen Internetbrowser verwenden), können Sie Virtual Audio Cable verwendenhttp://en.wikipedia.org/wiki/Virtual_Audio_CableDas ist eine Anwendung für Windows.

Ähnliche FrageÄndern Sie das Audioausgabegerät in Firefox

verwandte Informationen