MediaSource: endOfStream()-Methode

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.

Die endOfStream()-Methode der MediaSource-Schnittstelle 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 Media-Streams zu erstellen. Zum Beispiel könnten Sie eine Funktion haben, die Media-Chunk-Anfragen verwaltet, getrennt von anderen Netzwerkanfragen. Wenn Sie eine fetch()-Anfrage für einen Media-Chunk ausführen und einen Netzwerkfehler erhalten, möchten Sie vielleicht endOfStream('network') aufrufen, eine beschreibende Nachricht in der UI anzeigen und eventuell die Netzwerkanfrage sofort wiederholen oder warten, bis das Netzwerk wieder verfügbar ist (via irgendeiner Art von Überprüfung).

decode

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

Rückgabewert

Keiner (undefined).

Ausnahmen

InvalidStateError DOMException

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

Beispiele

Der folgende Ausschnitt stammt aus einem Beispiel von Nick Desaulniers (sehen Sie die vollständige Demo live, oder laden Sie den Quellcode herunter für weitere Untersuchungen). Die Funktion getMediaSource(), die hier nicht definiert ist, gibt eine 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

Siehe auch