AudioContext: AudioContext() Konstruktor

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2021.

Der AudioContext() Konstruktor erstellt ein neues AudioContext Objekt, das einen Audioverarbeitungsgraphen darstellt. Dieser wird aus Audio-Modulen gebildet, die miteinander verbunden sind, wobei jedes durch ein AudioNode repräsentiert ist.

Syntax

js
new AudioContext()
new AudioContext(options)

Parameter

options Optional

Ein Objekt zur Konfiguration des Kontexts. Die verfügbaren Eigenschaften sind:

latencyHint Optional

Der Typ der Wiedergabe, für die der Kontext verwendet wird, als vordefinierter String ("balanced", "interactive" oder "playback") oder als Gleitkommawert mit doppelter Genauigkeit, der die bevorzugte maximale Latenz des Kontexts in Sekunden angibt. Der Benutzeragent kann diese Anforderung möglicherweise nicht erfüllen; prüfen Sie den Wert von AudioContext.baseLatency, um die tatsächliche Latenz nach Erstellung des Kontexts zu bestimmen.

  • "balanced": Der Browser balanciert Audioausgabe-Latenz und Energieverbrauch, wenn er einen Latenzwert auswählt.
  • "interactive" (Standardwert): Das Audio ist an interaktiven Elementen beteiligt, z.B. bei Reaktionen auf Nutzeraktionen oder wenn es mit visuellen Hinweisen wie einem Video oder einer Spielaktion übereinstimmen muss. Der Browser wählt die niedrigste mögliche Latenz, die keine Audioaussetzer verursacht. Dies erfordert wahrscheinlich einen erhöhten Energieverbrauch.
  • "playback": Der Browser wählt eine Latenz, die die Wiedergabezeit maximiert, indem der Energieverbrauch auf Kosten der Latenz minimiert wird. Nützlich für nicht-interaktive Wiedergabe, wie z.B. Musik.
sampleRate Optional

Gibt die Abtastrate an, die für den neuen Kontext verwendet werden soll. Der Wert muss ein Gleitkommawert sein, der die Abtastrate in Abtastungen pro Sekunde angibt, um den neuen Kontext zu konfigurieren; zusätzlich muss der Wert von AudioBuffer.sampleRate unterstützt werden. Der Wert wird typischerweise zwischen 8.000 Hz und 96.000 Hz liegen; der Standardwert variiert je nach Ausgabegerät, aber die Abtastrate 44.100 Hz ist die häufigste. Wenn die Eigenschaft sampleRate nicht in den Optionen enthalten ist oder die Optionen beim Erstellen des Audiokontexts nicht angegeben werden, wird standardmäßig die bevorzugte Abtastrate des Ausgabegeräts des neuen Kontexts verwendet.

sinkId Optional Experimentell

Gibt die Sink-ID des Audioausgabegeräts an, das für den AudioContext verwendet werden soll. Dies kann einen der folgenden Wertetypen annehmen:

  • Ein String, der die Sink-ID darstellt, z.B. abgerufen über die deviceId Eigenschaft der MediaDeviceInfo Objekte, die von MediaDevices.enumerateDevices() zurückgegeben werden.
  • Ein Objekt, das verschiedene Optionen für eine Sink-ID darstellt. Derzeit nimmt dies eine einzige Eigenschaft, type, mit einem Wert von none an. Wenn dieser Parameter gesetzt ist, wird das Audio verarbeitet, ohne dass es über ein Audioausgabegerät abgespielt wird.

Rückgabewert

Eine neue Instanz von AudioContext.

Ausnahmen

NotSupportedError DOMException

Wird ausgelöst, wenn die angegebene sampleRate vom Kontext nicht unterstützt wird.

Nutzungshinweise

Die Spezifikation geht nicht detailliert auf Themen wie die Anzahl der Audiokontexte ein, die ein Benutzeragent unterstützen sollte, oder auf Mindest- oder Höchstanforderungen an die Latenz (falls vorhanden), sodass sich diese Details von Browser zu Browser unterscheiden können. Achten Sie darauf, die Werte zu überprüfen, wenn sie für Sie wichtig sind.

Insbesondere gibt die Spezifikation keine maximale oder minimale Anzahl an Audiokontexten an, die gleichzeitig geöffnet sein müssen, dies wird den Browser-Implementierungen überlassen.

Google Chrome

Beschränkung der Audiokontexte pro Tab in Chrome

Vor Version 66 unterstützte Google Chrome nur bis zu sechs Audiokontexte pro Tab gleichzeitig.

Nicht-standardisierte Ausnahmen in Chrome

Wenn der Wert der latencyHint Eigenschaft nicht gültig ist, wirft Chrome eine TypeError Ausnahme mit der Nachricht "The provided value '...' is not a valid enum value of type AudioContextLatencyCategory".

Beispiel

Dieses Beispiel erstellt einen neuen AudioContext für interaktives Audio (optimiert für Latenz) mit einer Abtastrate von 44,1 kHz und einer spezifischen Audioausgabe.

js
const audioCtx = new AudioContext({
  latencyHint: "interactive",
  sampleRate: 44100,
  sinkId: "bb04fea9a8318c96de0bd...", // truncated for brevity
});

Spezifikationen

Specification
Web Audio API
# dom-audiocontext-audiocontext

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch