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

View in English Always switch to English

ManagedMediaSource

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Hinweis: Diese Funktion ist in Dedicated Web Workers verfügbar.

Das ManagedMediaSource Interface der Media Source Extensions API ist ein MediaSource, das aktiv seinen Speicherinhalt verwaltet. Im Gegensatz zu einer regulären MediaSource kann der Benutzeragent Inhalte aus seinen ManagedSourceBuffer Objekten jederzeit entfernen, etwa aufgrund von Speicher- oder Hardwarebeschränkungen. Dies macht es geeignet für energieeffiziente Streaming-Szenarien, bei denen der Benutzeragent mehr Kontrolle über gepufferte Mediendaten benötigt.

Wenn addSourceBuffer() auf einer ManagedMediaSource aufgerufen wird, werden ManagedSourceBuffer Objekte (anstelle von SourceBuffer Objekten) erstellt, die bufferedchange Ereignisse auslösen, um die Anwendung zu benachrichtigen, wenn gepufferte Bereiche vom Benutzeragenten geändert werden.

Hinweis: Unter Safari wird ManagedMediaSource nur aktiviert, wenn die Fernwiedergabe im Media-Element ausdrücklich deaktiviert wird (durch Setzen von HTMLMediaElement.disableRemotePlayback auf true) oder wenn eine AirPlay-Quellenalternative bereitgestellt wird (zum Beispiel ein HLS <source> Element). Ohne eines dieser beiden wird das sourceopen Ereignis nicht ausgelöst.

EventTarget MediaSource ManagedMediaSource

Konstruktor

ManagedMediaSource()

Erstellt und gibt eine neue ManagedMediaSource Objektinstanz ohne zugehörige Quellenpuffer zurück.

Instanz-Eigenschaften

Erbt auch Eigenschaften von seiner übergeordneten Schnittstelle, MediaSource.

ManagedMediaSource.streaming Schreibgeschützt

Ein Boolean, der anzeigt, ob das ManagedMediaSource Objekt derzeit streamt. Wenn true, sollte die Anwendung aktiv Mediendaten abrufen und anhängen. Wenn false, kann die Anwendung das Abrufen neuer Daten stoppen.

Instanz-Methoden

Erbt Methoden von seiner übergeordneten Schnittstelle, MediaSource.

Ereignisse

Erbt auch Ereignisse von seiner übergeordneten Schnittstelle, MediaSource.

startstreaming

Wird ausgelöst, wenn sich die streaming Eigenschaft der ManagedMediaSource von false auf true ändert, was bedeutet, dass die Mediaquelle das Streaming gestartet hat.

endstreaming

Wird ausgelöst, wenn sich die streaming Eigenschaft der ManagedMediaSource von true auf false ändert, was bedeutet, dass die Mediaquelle das Streaming gestoppt hat.

Beispiele

Einrichten einer verwalteten Medienquelle

Das folgende Beispiel richtet eine ManagedMediaSource ein, verbindet sie mit einem <video> Element und lauscht auf die startstreaming und endstreaming Ereignisse, um zu steuern, wann Mediendaten abgerufen werden. bufferedchange Ereignisse werden unter dem Video protokolliert.

js
const videoUrl =
  "https://mdn.github.io/shared-assets/videos/flower-fragmented.mp4";
const mediaType = 'video/mp4; codecs="avc1.64001F, mp4a.40.2"';
const video = document.querySelector("video");

if (!window.ManagedMediaSource?.isTypeSupported(mediaType)) {
  console.log("ManagedMediaSource is not supported in this browser.");
} else {
  const source = new ManagedMediaSource();
  video.disableRemotePlayback = true;
  video.src = URL.createObjectURL(source);

  source.addEventListener("sourceopen", () => {
    const sourceBuffer = source.addSourceBuffer(mediaType);

    sourceBuffer.addEventListener("bufferedchange", (event) => {
      for (let i = 0; i < event.addedRanges.length; i++) {
        console.log(
          `Buffered: ${event.addedRanges.start(i).toFixed(2)}s – ${event.addedRanges.end(i).toFixed(2)}s`,
        );
      }
    });

    source.addEventListener("startstreaming", async () => {
      console.log("startstreaming — fetching media data…");
      const response = await fetch(videoUrl);
      const data = await response.arrayBuffer();
      sourceBuffer.appendBuffer(data);
    });

    source.addEventListener("endstreaming", () => {
      console.log("endstreaming — enough data buffered");
    });
  });
}

Spezifikationen

Specification
Media Source Extensions™
# dom-managedmediasource

Browser-Kompatibilität

Siehe auch