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 der sinkId-Option des AudioContext()-Konstruktors), gibt sinkId diesen selben Stringwert zurück.

Ein AudioSinkInfo-Objekt

Wenn die Sink-ID als Optionsobjekt gesetzt ist (mithilfe von setSinkId() oder der sinkId-Option des AudioContext()-Konstruktors), gibt sinkId ein AudioSinkInfo-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.
js
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

Siehe auch