Start · Sprachen · JavaScript · Referenz · MediaSession.playbackState

MediaSession.playbackState

Eigenschaft

Gibt an, ob die aktuelle Mediensitzung gerade abspielt (<code>"playing"</code>), pausiert ist (<code>"paused"</code>) oder keinen Zustand hat (<code>"none"</code>). Lesen und Schreiben sind möglich.

seit JavaScript Chrome 73+, Edge 79+, Firefox 82+, Safari 15+ Kategorie: webapi

Signatur

navigator.mediaSession.playbackState

Beschreibung

Die Eigenschaft playbackState der MediaSession-Schnittstelle teilt dem Browser und dem Betriebssystem mit, ob die Medienwiedergabe der Seite gerade läuft oder pausiert ist. Anhand dieses Werts stellen die Mediensteuerungen des Systems (Sperrbildschirm, Benachrichtigungen, Media-Hub, Hardware-Medientasten) das passende Symbol dar, zum Beispiel Play oder Pause.

Zulässige Werte sind:

  • "none": Der Browser leitet den Zustand selbst ab, meist aus dem Zustand der <audio>- bzw. <video>-Elemente auf der Seite. Das ist der Standardwert.
  • "paused": Die Wiedergabe ist pausiert und kann fortgesetzt werden.
  • "playing": Die Wiedergabe läuft gerade.

Du brauchst diese Eigenschaft vor allem dann, wenn der Browser den Zustand nicht zuverlässig selbst erkennen kann, etwa bei der Wiedergabe über die Web Audio API, bei eigenen Playern mit mehreren Medienelementen oder bei gestreamten Inhalten, die über MediaSource gepuffert werden. Setze den Wert dann immer mit, wenn du in deinen Aktions-Handlern (setActionHandler("play"), setActionHandler("pause")) die Wiedergabe startest oder anhältst.

Das Setzen von playbackState startet oder stoppt die Wiedergabe nicht. Die Eigenschaft beschreibt nur den Zustand für die Systemoberfläche. Um die eigentliche Wiedergabe kümmerst du dich selbst.

Parameter

Name Typ Default Beschreibung
$value "none" | "paused" | "playing" "none" Neuer Wiedergabezustand beim Schreiben der Eigenschaft. Ungültige Zeichenketten werden stillschweigend ignoriert und nicht übernommen.

Rückgabewert

Typ
"none" | "paused" | "playing"
Beschreibung
Der aktuell gesetzte Wiedergabezustand der Mediensitzung. Der Wert ist der zuletzt von der Seite gesetzte Zustand und nicht unbedingt der tatsächliche Zustand eines Medienelements.

Beispiele

Zustand mit Play/Pause-Handlern synchron halten

const audio = document.querySelector('audio');

if ('mediaSession' in navigator) {
  navigator.mediaSession.setActionHandler('play', async () => {
    await audio.play();
    navigator.mediaSession.playbackState = 'playing';
  });

  navigator.mediaSession.setActionHandler('pause', () => {
    audio.pause();
    navigator.mediaSession.playbackState = 'paused';
  });
}

Zustand automatisch aus Medien-Events ableiten

const video = document.querySelector('video');

const syncState = () => {
  if (!('mediaSession' in navigator)) return;
  navigator.mediaSession.playbackState = video.paused ? 'paused' : 'playing';
  console.log('Zustand:', navigator.mediaSession.playbackState);
};

video.addEventListener('play', syncState);
video.addEventListener('pause', syncState);
video.addEventListener('ended', syncState);
Zustand: playing Zustand: paused

Web-Audio-Player ohne Medienelement

const ctx = new AudioContext();

const togglePlayback = async () => {
  if (ctx.state === 'running') {
    await ctx.suspend();
    navigator.mediaSession.playbackState = 'paused';
  } else {
    await ctx.resume();
    navigator.mediaSession.playbackState = 'playing';
  }
  console.log(navigator.mediaSession.playbackState);
};

navigator.mediaSession.setActionHandler('play', togglePlayback);
navigator.mediaSession.setActionHandler('pause', togglePlayback);
document.querySelector('#toggle').addEventListener('click', togglePlayback);
playing

Ungültige Werte werden ignoriert

navigator.mediaSession.playbackState = 'paused';
navigator.mediaSession.playbackState = 'stopped'; // kein gültiger Wert
console.log(navigator.mediaSession.playbackState);
paused

// Wichtig · Fallstricke

  • Nur beschreibend: Wenn du playbackState setzt, ändert sich die tatsächliche Wiedergabe nicht. Hältst du den Wert nicht aktuell, zeigen die Systemsteuerungen falsche Symbole an.
  • Ungültige Werte wie "stopped" lösen keinen Fehler aus. Die Zuweisung wird einfach ignoriert.
  • Kein eigener Zustand für „beendet“: Wenn die Wiedergabe endet, setzt du am besten "paused" oder "none".
  • Die Mediensteuerung des Systems erscheint meist erst, nachdem die Seite tatsächlich hörbare Medien abgespielt hat. Das reine Setzen von "playing" reicht dafür nicht.
  • Kompatibilität: Unterstützt in Chromium-Browsern (ab Chrome 73), Firefox 82+ und Safari 15+. Prüfe die Verfügbarkeit mit 'mediaSession' in navigator. Die API ist nur in sicheren Kontexten (HTTPS) garantiert verfügbar. Wie der Zustand dargestellt wird, hängt von Plattform und Betriebssystem ab.