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 des MediaSource
-Interfaces signalisiert das Ende des Streams.
Syntax
endOfStream()
endOfStream(endOfStreamError)
Parameter
endOfStreamError
Optional-
Ein String, der einen Fehler darstellt, der ausgelöst wird, wenn das Ende des Streams erreicht wird. 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. Beispielsweise könnten Sie eine Funktion haben, die Medienchunks anfordert, getrennt von anderen Netzwerk-Anfragen. Wenn Sie einen
fetch()
-Aufruf für einen Media-Chunk machen und ein Netzwerkfehler auftritt, könnten SieendOfStream('network')
aufrufen, eine beschreibende Nachricht in der Benutzeroberfläche anzeigen und möglicherweise die Netzwerk-Anfrage sofort wiederholen oder warten, bis das Netzwerk wiederhergestellt ist (durch eine Art Polling). decode
-
Beendet die Wiedergabe und signalisiert, dass ein Dekodierungsfehler aufgetreten ist. Dies kann verwendet werden, um anzuzeigen, dass ein Parsingfehler beim Abrufen von Mediendaten aufgetreten ist; möglicherweise sind die Daten beschädigt oder mit einem Codec codiert, den der Browser nicht dekodieren kann.
Rückgabewert
Keiner (undefined
).
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn
MediaSource.readyState
nicht gleichopen
ist oder eines oder mehrere derSourceBuffer
-Objekte inMediaSource.sourceBuffers
aktualisiert werden (d.h. ihreSourceBuffer.updating
-Eigenschaft isttrue
).
Beispiele
Der folgende Ausschnitt stammt aus einem Beispiel von Nick Desaulniers (sehen Sie die vollständige Demo live an oder laden Sie den Quellcode herunter für weitere Untersuchungen). Die Funktion getMediaSource()
, die hier nicht definiert ist, gibt eine MediaSource
zurück.
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 |