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

View in English Always switch to English

MediaSource: sourceended-Ereignis

Eingeschränkt verfügbar

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

Want more browser support for this feature? Tell us why.

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

Das sourceended-Ereignis wird ausgelöst, wenn sich der readyState eines MediaSource-Objekts zu "ended" ändert. Dies zeigt an, dass die Anwendung keine weiteren Daten mehr an die MediaSource sendet. Wenn eine Anwendung alle Mediendaten an die mit einer MediaSource verknüpften SourceBuffer-Objekte angehängt hat, ruft sie die Methode MediaSource.endOfStream() für die MediaSource auf. Dadurch wechselt der readyState zu "ended", und das sourceended-Ereignis wird ausgelöst.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

js
addEventListener("sourceended", (event) => {})

Alternativ können Sie der Event-Handler-Eigenschaft der Schnittstelle einen Wert zuweisen:

js
onsourceended = (event) => {}

Ereignistyp

Ein generisches Event.

Beispiele

Das sourceopen-Ereignis behandeln

Dieses Beispiel zeigt, wie ein Videoelement für die Wiedergabe eingerichtet und das sourceended-Ereignis zur ordnungsgemäßen Freigabe von Ressourcen behandelt wird. Der Code richtet eine MediaSource ein, startet die Wiedergabe durch Abrufen und Puffern von Videodaten und nutzt anschließend das sourceended-Ereignis, um Event-Listener zu entfernen und den Benutzer zu benachrichtigen, wenn die Wiedergabe abgeschlossen ist.

js
const video = document.getElementById("myVideo");
const mediaSource = new MediaSource();

video.src = URL.createObjectURL(mediaSource);

mediaSource.addEventListener("sourceopen", (event) => {
  const sourceBuffer = mediaSource.addSourceBuffer(
    'video/mp4; codecs="avc1.42E01E"',
  );

  fetch("video-data.mp4")
    .then((response) => response.arrayBuffer())
    .then((data) => {
      sourceBuffer.appendBuffer(data);
      sourceBuffer.addEventListener("updateend", () => {
        mediaSource.endOfStream();
      });
    });
});

mediaSource.addEventListener("sourceended", (event) => {
  console.log("MediaSource sourceended:", event);
  URL.revokeObjectURL(video.src);
  // Perform cleanup

  // Remove event listeners from SourceBuffer and MediaSource
  sourceBuffer.removeEventListener("updateend", () => {});
  mediaSource.removeEventListener("sourceopen", () => {});

  // Notify user (e.g., display a "Playback finished" message)
  const messageElement = document.createElement("p");
  messageElement.textContent = "Playback finished.";
  document.body.appendChild(messageElement);
});

Spezifikationen

Spezifikation
Media Source Extensions™
# dfn-sourceended

Browser-Kompatibilität

Siehe auch