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

View in English Always switch to English

ManagedSourceBuffer

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 ManagedSourceBuffer-Interface der Media Source Extensions API ist ein SourceBuffer, das von einer ManagedMediaSource erstellt wird, wenn addSourceBuffer() aufgerufen wird. Es erbt alle Eigenschaften und Methoden von SourceBuffer und löst zusätzlich ein bufferedchange-Ereignis aus, wann immer sich die gepufferten Bereiche ändern – einschließlich der Fälle, in denen der User Agent Inhalte im Rahmen seines Speicherbereinigungsalgorithmus entfernt.

Anwendungen sollten auf das bufferedchange-Ereignis hören, um Änderungen an gepufferten Daten zu verfolgen, da eine ManagedMediaSource Inhalte jederzeit aus Gründen wie Speicher- oder Hardwarebeschränkungen entfernen kann.

EventTarget SourceBuffer ManagedSourceBuffer

Instanz-Eigenschaften

Erbt Eigenschaften von seiner Elternschnittstelle, SourceBuffer.

Instanz-Methoden

Erbt Methoden von seiner Elternschnittstelle, SourceBuffer.

Ereignisse

Erbt auch Ereignisse von seiner Elternschnittstelle, SourceBuffer.

bufferedchange

Wird ausgelöst, wenn sich der gepufferte Bereich des ManagedSourceBuffer ändert, nachdem ein Aufruf von appendBuffer(), remove(), endOfStream(), oder als Folge des Speicherbereinigungsalgorithmus des User Agents erfolgt.

Beispiele

Überwachung von Änderungen der gepufferten Bereiche

Dieses Beispiel richtet eine ManagedMediaSource ein, fügt einen ManagedSourceBuffer hinzu, ruft eine fragmentierte MP4-Datei ab und überwacht das bufferedchange-Ereignis, um Änderungen an den gepufferten Bereichen zu protokollieren.

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 source = new ManagedMediaSource();
  const video = document.createElement("video");

  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: ${event.addedRanges.start(i)}s - ${event.addedRanges.end(i)}s`,
        );
      }
    });

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

Spezifikationen

Specification
Media Source Extensions™
# dom-managedsourcebuffer

Browser-Kompatibilität

Siehe auch