Signatur
Beschreibung
Die Eigenschaft type der Schnittstelle AudioSession legt fest, welche Art von Audio eine Webseite erzeugt. Das Betriebssystem entscheidet anhand dieses Typs, ob die Wiedergabe andere Audioquellen unterbricht, sich mit ihnen mischt oder sie kurz leiser stellt („Ducking“). Außerdem hängt davon ab, ob der Stummschalter eines Geräts (z. B. beim iPhone) beachtet wird. Man erreicht die Sitzung über navigator.audioSession.
Die Eigenschaft ist les- und schreibbar. Erlaubte Werte sind:
"auto"– Standardwert. Der Browser wählt den Typ anhand der verwendeten Audio-APIs."playback"– Medienwiedergabe wie Musik oder Podcasts. Andere Audioquellen werden unterbrochen, der Stummschalter wird in der Regel ignoriert."transient"– kurze Töne, z. B. Hinweise oder Navigationsansagen. Andere Audioquellen werden währenddessen leiser gestellt."transient-solo"– kurze Töne, bei denen andere Audioquellen vollständig pausieren, z. B. Sprachansagen."ambient"– Hintergrundklänge, die sich mit anderem Audio mischen, etwa Spiel-Soundeffekte. Der Stummschalter wird beachtet."play-and-record"– gleichzeitige Aufnahme und Wiedergabe, z. B. bei Videokonferenzen mitgetUserMedia().
Setzen Sie den Typ am besten, bevor die Wiedergabe startet. Dann gilt das passende Verhalten schon für den ersten Ton. Den aktuellen Zustand der Sitzung ("active", "interrupted", "inactive") liefert die Eigenschaft state. Änderungen daran meldet das Ereignis statechange.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $value | "auto" | "playback" | "transient" | "transient-solo" | "ambient" | "play-and-record" | "auto" | Nur beim Schreiben: der neue Sitzungstyp. Ein ungültiger String wird stillschweigend ignoriert, wie bei WebIDL-Enums üblich. |
Rückgabewert
"auto", "playback", "transient", "transient-solo", "ambient" oder "play-and-record".Beispiele
Unterstützung prüfen und aktuellen Typ auslesen
if ('audioSession' in navigator) {
console.log('Aktueller Typ:', navigator.audioSession.type);
} else {
console.log('Audio Session API wird nicht unterstützt');
}
Spiel-Soundeffekte mit anderer Musik mischen
// Hintergrundmusik anderer Apps soll weiterlaufen
if ('audioSession' in navigator) {
navigator.audioSession.type = 'ambient';
}
const ctx = new AudioContext();
const playClick = () => {
const osc = ctx.createOscillator();
osc.frequency.value = 880;
osc.connect(ctx.destination);
osc.start();
osc.stop(ctx.currentTime + 0.05);
};
document.querySelector('#spielfeld')
.addEventListener('click', playClick);
Podcast-Player: Wiedergabe-Typ vor dem Abspielen setzen
const audio = document.querySelector('audio');
document.querySelector('#play').addEventListener('click', async () => {
if ('audioSession' in navigator) {
// Andere Audioquellen unterbrechen, Stummschalter ignorieren
navigator.audioSession.type = 'playback';
}
await audio.play();
console.log('Typ:', navigator.audioSession?.type);
});
navigator.audioSession?.addEventListener('statechange', () => {
console.log('Sitzungszustand:', navigator.audioSession.state);
});
Videokonferenz: Aufnahme und Wiedergabe
const startCall = async () => {
if ('audioSession' in navigator) {
navigator.audioSession.type = 'play-and-record';
}
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
console.log('Mikrofon aktiv, Typ:', navigator.audioSession?.type);
return stream;
};
startCall();
// Wichtig · Fallstricke
- Browser-Kompatibilität: Die Audio Session API ist ein W3C-Entwurf. Bisher unterstützt nur Safari sie (macOS und iOS ab 16.4). Chrome und Firefox kennen
navigator.audioSessionnicht. Prüfen Sie die Unterstützung deshalb immer vorher, z. B. mit'audioSession' in navigatoroder mit optionaler Verkettung (navigator.audioSession?.type). - Die Auswirkungen sind plattformabhängig und vor allem auf Mobilgeräten spürbar, etwa beim Stummschalter und beim Mischen mit anderen Apps. Auf dem Desktop ändert sich oft wenig.
- Ein Wechsel des Typs während einer laufenden Wiedergabe wird eventuell erst beim nächsten Start wirksam. Setzen Sie den Typ deshalb vor
play()bzw. vor dem Start desAudioContext. - Ungültige Werte lösen keinen Fehler aus. Die Zuweisung wird einfach ignoriert, und
typebehält den alten Wert. - Auch mit
"playback"gelten weiterhin die Autoplay-Richtlinien. Die Wiedergabe braucht meist eine Nutzerinteraktion.