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

View in English Always switch to English

BufferedChangeEvent

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

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

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die BufferedChangeEvent-Schnittstelle der Media Source Extensions API repräsentiert das Ereignisobjekt für das bufferedchange-Ereignis, das auf einem ManagedSourceBuffer ausgelöst wird. Dieses Ereignis wird immer dann ausgelöst, wenn sich die gepufferten Bereiche des ManagedSourceBuffer ändern, zum Beispiel als Ergebnis von Aufrufen von appendBuffer(), remove() oder endOfStream() oder wenn der Benutzeragent den Algorithmus zur Speicherbereinigung ausführt.

Event BufferedChangeEvent

Konstruktor

BufferedChangeEvent() Experimentell

Erstellt und gibt ein neues BufferedChangeEvent-Objekt zurück.

Instanz-Eigenschaften

Erbt auch Eigenschaften von seiner Elternschnittstelle, Event.

BufferedChangeEvent.addedRanges Schreibgeschützt Experimentell

Ein TimeRanges-Objekt, das die Zeitbereiche repräsentiert, die dem Puffer des ManagedSourceBuffer hinzugefügt wurden.

BufferedChangeEvent.removedRanges Schreibgeschützt Experimentell

Ein TimeRanges-Objekt, das die Zeitbereiche repräsentiert, die aus dem Puffer des ManagedSourceBuffer entfernt wurden.

Beispiele

Behandlung von Änderungen der gepufferten Bereiche

Dieses Beispiel erstellt eine ManagedMediaSource, verbindet sie mit einem <video>-Element, ruft eine fragmentierte MP4-Datei ab und lauscht dem bufferedchange-Ereignis. Wenn das Ereignis ausgelöst wird, protokolliert es die hinzugefügten Zeitbereiche.

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);

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

    sourceBuffer.addEventListener("bufferedchange", (event) => {
      for (let i = 0; i < event.addedRanges.length; i++) {
        console.log(
          `Added range: ${event.addedRanges.start(i)} - ${event.addedRanges.end(i)}`,
        );
      }
    });

    const response = await fetch(videoUrl);
    const data = await response.arrayBuffer();
    sourceBuffer.appendBuffer(data);
  });
}

Spezifikationen

Spezifikation
Media Source Extensions™
# dom-bufferedchangeevent

Browser-Kompatibilität

Siehe auch