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: endstreaming Ereignis

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 endstreaming-Ereignis des ManagedMediaSource-Interfaces wird ausgelöst, wenn sich die streaming-Eigenschaft von true auf false ändert. Dies zeigt an, dass der User-Agent genügend Daten gepuffert hat, um eine unterbrechungsfreie Wiedergabe zu gewährleisten, und die Anwendung das Abrufen neuer Mediensegmente beenden kann.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignishandler-Eigenschaft.

js
addEventListener("endstreaming", (event) => {});

onendstreaming = (event) => {};

Ereignistyp

Ein generisches Event.

Beispiele

Anhalten des Abrufens als Reaktion auf endstreaming

Dieses Beispiel erstellt eine ManagedMediaSource, hängt sie an ein <video>-Element an und verwendet die startstreaming- und endstreaming-Ereignisse, um zu steuern, wann Mediensegmente abgerufen werden.

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

if (ManagedMediaSource.isTypeSupported(mediaType)) {
  const video = document.createElement("video");
  const source = new ManagedMediaSource();

  video.controls = true;
  video.disableRemotePlayback = true;
  video.src = URL.createObjectURL(source);
  document.body.appendChild(video);

  let shouldFetch = false;

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

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

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

Spezifikationen

Specification
Media Source Extensions™
# dfn-endstreaming

Browser-Kompatibilität

Siehe auch