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 deviceId
mit der mediaDevices.enumerateDevices
Funktion sammeln. Wenden Sie dann Ihre gewünschten Ergebnisse deviceId
auf ein Audio
Element 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, audio
indem Sie das entsprechende src
Feld 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