Start · Sprachen · JavaScript · Referenz · HTMLMediaElement.disableRemotePlayback

HTMLMediaElement.disableRemotePlayback

Eigenschaft

Boolesche Eigenschaft, die festlegt, ob ein <code>&lt;audio&gt;</code>- oder <code>&lt;video&gt;</code>-Element Fernwiedergabe (z. B. AirPlay, Chromecast) samt zugehöriger Bedienoberfläche anbieten darf.

seit JavaScript Remote Playback API: Safari 13.1+, Chrome 121+ (Ei Kategorie: webapi

Signatur

HTMLMediaElement.disableRemotePlayback

Beschreibung

Die Eigenschaft disableRemotePlayback spiegelt das HTML-Attribut disableremoteplayback wider. Steht sie auf true, darf der Browser für dieses Medienelement keine Fernwiedergabe anbieten. Damit fallen auch die eingebauten Bedienelemente weg, etwa die AirPlay-Schaltfläche in Safari oder die Cast-Schaltfläche in Chrome.

Die Eigenschaft gehört zur Remote Playback API. Setzen Sie sie, wenn Inhalte nicht auf externe Geräte gestreamt werden sollen. Typische Gründe sind Lizenzbeschränkungen, DRM-geschützte Streams, die das Zielgerät nicht abspielen kann, oder ein eigener Player, der Fernwiedergabe selbst über HTMLMediaElement.remote steuert.

Setzen Sie den Wert auf true, während schon eine Fernwiedergabe läuft, wird die Verbindung getrennt: remote.state wechselt zu "disconnected" und die Wiedergabe geht lokal weiter. Aufrufe wie remote.watchAvailability() oder remote.prompt() werden dann mit einer InvalidStateError-DOMException abgelehnt.

Rückgabewert

Typ
boolean
Beschreibung
true, wenn Fernwiedergabe deaktiviert ist, sonst false (Standardwert). Der Wert ist les- und schreibbar.

Beispiele

Fernwiedergabe per JavaScript deaktivieren

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

// AirPlay-/Cast-Schaltfläche ausblenden und Fernwiedergabe verbieten
video.disableRemotePlayback = true;

console.log(video.disableRemotePlayback);
console.log(video.hasAttribute('disableremoteplayback'));
true true

Deklarativ im HTML und Funktionsprüfung

// HTML: <video src="film.mp4" controls disableremoteplayback></video>
const video = document.querySelector('video');

if ('disableRemotePlayback' in HTMLMediaElement.prototype) {
  console.log('Fernwiedergabe deaktiviert:', video.disableRemotePlayback);
} else {
  console.log('Remote Playback API wird nicht unterstützt');
}
Fernwiedergabe deaktiviert: true

Fernwiedergabe nur für geschützte Inhalte sperren

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

const loadMedia = ({ url, drmProtected }) => {
  // Geschützte Streams nicht auf externe Geräte senden
  video.disableRemotePlayback = drmProtected;
  video.src = url;
};

loadMedia({ url: '/media/trailer.mp4', drmProtected: false });
console.log(video.disableRemotePlayback);

loadMedia({ url: '/media/premium.mp4', drmProtected: true });
console.log(video.disableRemotePlayback);

// Versuch, trotzdem einen Geräte-Dialog zu öffnen
video.remote?.prompt().catch((err) => console.log(err.name));
false true InvalidStateError

// Wichtig · Fallstricke

  • Browser-Unterstützung: Safari (macOS und iOS) und Chromium-Browser unterstützen die Eigenschaft. In Firefox ist sie nur hinter dem Flag media.remoteplayback.enabled verfügbar. Prüfen Sie die Unterstützung vorher mit 'disableRemotePlayback' in HTMLMediaElement.prototype.
  • In älteren Safari-Versionen gibt es stattdessen das herstellerspezifische Attribut x-webkit-airplay="deny". Setzen Sie für eine breite Abdeckung beide Varianten.
  • Kein Schutz vor Mitschnitt: Die Eigenschaft blendet nur die Fernwiedergabe im Browser aus. Bildschirmspiegelung auf Betriebssystemebene oder Mitschnitte verhindert sie nicht. Wirksamen Inhaltsschutz bieten nur DRM-Lösungen (Encrypted Media Extensions).
  • Setzen Sie den Wert während einer laufenden Fernwiedergabe auf true, bricht die Verbindung sofort ab. Warnen Sie Nutzer gegebenenfalls vorher.
  • Die Eigenschaft ist ein boolesches Attribut. Auch disableremoteplayback="false" im HTML deaktiviert die Fernwiedergabe. Zum Wieder-Aktivieren müssen Sie das Attribut entfernen oder die Eigenschaft auf false setzen.