MediaSource: endOfStream() Methode

Hinweis: Dieses Feature ist verfügbar in Dedicated Web Workers.

Die endOfStream()-Methode des MediaSource-Interfaces signalisiert das Ende des Streams.

Syntax

js
endOfStream()
endOfStream(endOfStreamError)

Parameter

endOfStreamError Optional

Ein String, der einen Fehler darstellt, der ausgelöst wird, wenn das Ende des Streams erreicht ist. Die möglichen Werte sind:

network

Beendet die Wiedergabe und signalisiert, dass ein Netzwerkfehler aufgetreten ist. Dies kann verwendet werden, um einen benutzerdefinierten Fehlerbehandler im Zusammenhang mit Medienstreams zu erstellen. Zum Beispiel könnten Sie eine Funktion haben, die Medienchunk-Anfragen bearbeitet, separat von anderen Netzwerkanfragen. Wenn Sie eine fetch()-Anfrage für einen Medienchunk stellen und einen Netzwerkfehler erhalten, könnten Sie endOfStream('network') aufrufen, eine beschreibende Nachricht in der Benutzeroberfläche anzeigen und möglicherweise die Netzwerk-Abfrage sofort erneut versuchen oder warten, bis das Netzwerk wieder verfügbar ist (durch eine Art von Polling).

decode

Beendet die Wiedergabe und signalisiert, dass ein Dekodierungsfehler aufgetreten ist. Dies kann verwendet werden, um darauf hinzuweisen, dass ein Parsing-Fehler beim Abrufen von Mediendaten aufgetreten ist; möglicherweise sind die Daten beschädigt oder sie sind mit einem Codec kodiert, den der Browser nicht dekodieren kann.

Rückgabewert

Keiner (undefined).

Ausnahmen

InvalidStateError DOMException

Wird ausgelöst, wenn MediaSource.readyState nicht gleich open ist oder eines oder mehrere der SourceBuffer-Objekte in MediaSource.sourceBuffers aktualisiert werden (d.h. deren SourceBuffer.updating-Eigenschaft true ist).

Beispiele

Das folgende Snippet stammt aus einem Beispiel von Nick Desaulniers (sehen Sie sich die vollständige Demo live an oder laden Sie den Sourcecode herunter für weitere Untersuchungen). Die Funktion getMediaSource(), die hier nicht definiert ist, gibt ein MediaSource zurück.

js
const assetURL = "frag_bunny.mp4";
// Need to be specific for Blink regarding codecs
// ./mp4info frag_bunny.mp4 | grep Codec
const mimeCodec = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';

let mediaSource;

if ("MediaSource" in window && MediaSource.isTypeSupported(mimeCodec)) {
  mediaSource = getMediaSource();
  console.log(mediaSource.readyState); // closed
  video.src = URL.createObjectURL(mediaSource);
  mediaSource.addEventListener("sourceopen", sourceOpen);
} else {
  console.error("Unsupported MIME type or codec: ", mimeCodec);
}

function sourceOpen() {
  console.log(this.readyState); // open
  const sourceBuffer = mediaSource.addSourceBuffer(mimeCodec);
  fetchAB(assetURL, (buf) => {
    sourceBuffer.addEventListener("updateend", () => {
      mediaSource.endOfStream();
      video.play();
      console.log(mediaSource.readyState); // ended
    });
    sourceBuffer.appendBuffer(buf);
  });
}

Spezifikationen

Specification
Media Source Extensions™
# dom-mediasource-endofstream

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch