AudioContext: sinkId-Eigenschaft
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig, bevor Sie diese produktiv verwenden.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die schreibgeschützte Eigenschaft sinkId
des AudioContext
-Interfaces gibt die Sink-ID des aktuellen Audioausgabegeräts zurück.
Wert
Diese Eigenschaft gibt je nach Einstellung der Sink-ID einen der folgenden Werte zurück:
- Ein leerer String
-
Wenn keine Sink-ID explizit gesetzt wurde, wird das standardmäßige Audioausgabegerät des Systems verwendet und
sinkId
gibt einen leeren String zurück. - Ein String
-
Wenn die Sink-ID als Stringwert gesetzt ist (mithilfe von
setSinkId()
oder dersinkId
-Option desAudioContext()
-Konstruktors), gibtsinkId
diesen selben Stringwert zurück. - Ein
AudioSinkInfo
-Objekt -
Wenn die Sink-ID als Optionsobjekt gesetzt ist (mithilfe von
setSinkId()
oder dersinkId
-Option desAudioContext()
-Konstruktors), gibtsinkId
einAudioSinkInfo
-Objekt zurück, das die gleichen Werte widerspiegelt, die im ursprünglichen Optionsobjekt festgelegt wurden.
Beispiele
In unserem SetSinkId Testbeispiel erstellen wir einen Audiographen, der einen dreisekündigen Ausbruch von Weißem Rauschen über einen AudioBufferSourceNode
erzeugt, den wir auch über einen GainNode
laufen lassen, um die Lautstärke etwas zu reduzieren. Wir bieten dem Benutzer auch ein Dropdown-Menü, um das Audioausgabegerät zu ändern.
Wenn der Abspiel-Button geklickt wird, bauen wir den Audiographen zusammen und starten ihn, und wir loggen auch Informationen über das aktuelle Gerät in der Konsole basierend auf dem Wert von sinkId
:
- Ein leerer String bedeutet, dass das Standardgerät weiterhin verwendet wird.
- Wenn der Wert ein Objekt ist, wird das Audio auf keinem Gerät abgespielt, da wir ein Optionsobjekt mit
type: 'none'
gesetzt haben. - Ansonsten wird der Wert eine Sink-ID als String sein, sodass wir diese loggen.
playBtn.addEventListener("click", () => {
const source = audioCtx.createBufferSource();
source.buffer = myArrayBuffer;
source.connect(gain);
gain.connect(audioCtx.destination);
source.start();
if (audioCtx.sinkId === "") {
console.log("Audio playing on default device");
} else if (
typeof audioCtx.sinkId === "object" &&
audioCtx.sinkId.type === "none"
) {
console.log("Audio not playing on any device");
} else {
console.log(`Audio playing on device ${audioCtx.sinkId}`);
}
});
Spezifikationen
Specification |
---|
Web Audio API # dom-audiocontext-sinkid |
Browser-Kompatibilität
BCD tables only load in the browser