AudioContext: sinkId-Eigenschaft
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.
Die schreibgeschützte sinkId
-Eigenschaft des AudioContext
-Interfaces gibt die Sink-ID des aktuellen Ausgabe-Audiogeräts zurück.
Wert
Diese Eigenschaft gibt einen der folgenden Werte zurück, abhängig davon, wie die Sink-ID gesetzt wurde:
- Ein leerer String
-
Wenn eine Sink-ID nicht explizit gesetzt wurde, wird das standardmäßige System-Audioausgabegerät verwendet, und
sinkId
gibt einen leeren String zurück. - Ein String
-
Ist die Sink-ID als String-Wert gesetzt (mit
setSinkId()
oder dersinkId
-Option imAudioContext()
-Konstruktor), gibtsinkId
diesen gleichen String-Wert zurück. - Ein
AudioSinkInfo
-Objekt -
Ist die Sink-ID als Optionsobjekt gesetzt (mit
setSinkId()
oder dersinkId
-Option imAudioContext()
-Konstruktor), gibtsinkId
einAudioSinkInfo
-Objekt zurück, das die gleichen in dem ursprünglichen Optionsobjekt gesetzten Werte widerspiegelt.
Beispiele
In unserem SetSinkId-Testbeispiel (sehen Sie sich den Quellcode an) erstellen wir einen Audio-Graphen, der eine drei Sekunden lange Folge von weißem Rauschen über einen AudioBufferSourceNode
erzeugt, den wir auch durch einen GainNode
leiten, um die Lautstärke etwas zu reduzieren. Wir bieten dem Benutzer außerdem ein Dropdown-Menü an, um das Audioausgabegerät zu ändern.
Wenn die Wiedergabe-Taste gedrückt wird, bauen wir den Audio-Graphen zusammen und starten die Wiedergabe. Außerdem protokollieren wir 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. - Andernfalls wird der Wert eine Sink-ID-String sein, und wir protokollieren diese.
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 |