Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

AudioSession

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die AudioSession-Schnittstelle der Audio Session API ermöglicht es einer Webseite, den Typ der von ihr produzierten Audioausgabe zu deklarieren - zum Beispiel Musik-Wiedergabe, ein Videoanruf oder eine kurze Benachrichtigung. Die Plattform verwendet den deklarierten Typ, um zu entscheiden, wie die Audioausgabe der Seite und die Audiosignale anderer Anwendungen und Tabs koexistieren sollen — ob sie pausiert, abgesenkt (die Lautstärke verringert) oder parallel abgespielt werden sollen.

Die Schnittstelle bietet auch die Eigenschaft state, die anzeigt, ob Audio aktiv auf der Seite abgespielt wird, inaktiv ist oder unterbrochen wurde, sowie das Ereignis statechange, das eine Benachrichtigung bereitstellt, wenn sich der Zustand ändert. Während hörbare Medien automatisch durch Unterbrechungen pausiert/fortgesetzt werden, ermöglicht die Zustandsüberwachung die Konfiguration von nicht automatisch gesteuertem Verhalten.

EventTarget AudioSession

Instanz-Eigenschaften

AudioSession.type

Ein String, der den Typ der Audiositzung darstellt. Mögliche Werte sind "auto", "playback", "transient", "transient-solo", "ambient" und "play-and-record".

AudioSession.state Schreibgeschützt

Ein String, der den aktuellen Zustand der Audiositzung darstellt. Mögliche Werte sind "active", "interrupted" und "inactive".

Ereignisse

Diese Ereignisse können mithilfe von addEventListener() oder durch Zuweisung eines Ereignis-Handlers zur oneventname-Eigenschaft dieser Schnittstelle gehört werden.

statechange

Wird ausgelöst, wenn sich die state-Eigenschaft ändert. Auch verfügbar über die onstatechange Ereignishandler-Eigenschaft.

Beispiele

Grundlegende Verwendung

Das folgende Beispiel setzt den Audiositzungstyp auf "playback", bevor die Medienwiedergabe gestartet wird (sofern AudioSession unterstützt wird). Dies signalisiert, dass die Seite Medien wie Musik oder Video abspielt.

js
if ("audioSession" in navigator) {
  // Set the audio session type for media playback
  navigator.audioSession.type = "playback";
}

// Play some audio
audioElement.play();

Einrichten einer Video-Konferenzanwendung

Dieses Beispiel setzt den Audiositzungstyp für eine Videokonferenzanwendung auf "play-and-record".

Zuerst verwenden wir Navigator.audioSession, um zu signalisieren, dass die Seite gleichzeitige Wiedergabe und Aufnahme benötigt. Dadurch kann das System den Audioausgang korrekt routen (zum Beispiel das Ohrstück statt des Lautsprechers auf Mobilgeräten verwenden) und verhindern, dass die Audioausgabe anderer Anwendungen den Anruf unterbricht. Dann beginnen wir mit der Wiedergabe des fremden Mediums und dem Streamen unseres eigenen Videos und Audios.

js
navigator.audioSession.type = "play-and-record";

// Start playing remote media
remoteVideo.srcObject = remoteMediaStream;
remoteVideo.play();

// Start capturing local media
const stream = await navigator.mediaDevices.getUserMedia({
  audio: true,
  video: true,
});
localVideo.srcObject = stream;

Der folgende Code hört auf das statechange-Ereignis. Wenn der Sitzungszustand vom System unterbrochen wird, zum Beispiel aufgrund eines eingehenden Telefonanrufs, pausiert der Handler ungemutetes lokales und fremdes Video, solange die Unterbrechung anhält (das System selbst pausiert und startet alle Elemente neu, die eine hörbare Ausgabe haben).

js
// Pause local playback and recording while the platform interrupts the call
navigator.audioSession.addEventListener("statechange", () => {
  const interrupted = navigator.audioSession.state === "interrupted";

  // remoteVideo is the audio/video from the remote end.
  // We pause it on interruption if it was muted (and hence not paused automatically)
  if (remoteVideo.muted) {
    if (interrupted) {
      remoteVideo.pause();
    } else {
      remoteVideo.play();
    }
  }

  // localVideo is the preview for the local user.
  // This is typically muted by default,
  // so the page must pause and resume it explicitly.
  if (interrupted) {
    localVideo.pause();
  } else {
    localVideo.play();
  }
});

Spezifikationen

Spezifikation
Audio Session
# audiosession

Browser-Kompatibilität

Siehe auch