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 des Audios zu deklarieren, das sie produziert – zum Beispiel Musik-Wiedergabe, ein Videoanruf oder eine kurze Benachrichtigung. Die Plattform verwendet den deklarierten Typ, um zu entscheiden, wie das Audio der Seite und Audio von anderen Anwendungen und Tabs koexistieren sollen – ob pausiert, gedämpft (die Lautstärke gesenkt) oder parallel abgespielt werden soll.
Die Schnittstelle bietet auch die state Eigenschaft, die anzeigt, ob Audio aktiv auf der Seite abgespielt wird, inaktiv ist oder unterbrochen wurde, sowie das statechange Ereignis, das eine Benachrichtigung liefert, wenn sich der Zustand ändert. Während hörbare Medien automatisch durch Unterbrechungen pausiert/fortgesetzt werden, ermöglicht die Zustandsüberwachung die Konfiguration von Verhalten, das nicht automatisch gesteuert wird.
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.stateSchreibgeschützt-
Ein String, der den aktuellen Zustand der Audiositzung darstellt. Mögliche Werte sind
"active","interrupted"und"inactive".
Ereignisse
Hören Sie auf diese Ereignisse mit addEventListener() oder indem Sie einen Ereignis-Listener der oneventname Eigenschaft dieser Schnittstelle zuweisen.
statechange-
Wird ausgelöst, wenn sich die
stateEigenschaft ändert. Auch verfügbar über dieonstatechangeEreignis-Handler-Eigenschaft.
Beispiele
>Grundlegende Nutzung
Das folgende Beispiel setzt den Audiositzungstyp auf "playback", bevor die Medienwiedergabe gestartet wird (vorausgesetzt, AudioSession wird unterstützt). Dies signalisiert, dass die Seite Medien wie Musik oder Video abspielt.
if ("audioSession" in navigator) {
// Set the audio session type for media playback
navigator.audioSession.type = "playback";
}
// Play some audio
audioElement.play();
Einrichtung einer Video-Konferenzanwendung
Dieses Beispiel setzt den Audiositzungstyp auf "play-and-record" für eine Videokonferenz-Anwendung.
Zuerst verwenden wir Navigator.audioSession, um zu signalisieren, dass die Seite simultane Wiedergabe und Aufnahme benötigt. Dies kann dazu führen, dass das System Audio durch den richtigen Ausgang leitet (zum Beispiel Ohrhörer statt Lautsprecher auf mobilen Geräten) und verhindert, dass das Audio anderer Anwendungen den Anruf unterbricht. Dann beginnen wir mit dem Abspielen des entfernten Medien und dem Streamen unseres eigenen Videos und Audios.
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 lauscht auf das statechange Ereignis. Wenn der Sitzungszustand durch die Plattform auf "interrupted" gesetzt wird, zum Beispiel aufgrund eines eingehenden Telefonanrufs, pausiert der Handler ungemutetes lokales und entferntes Video, solange die Unterbrechung dauert (die Plattform selbst wird alle Elemente, die eine hörbare Ausgabe haben, pausieren und neu starten).
// 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> |