MediaSource: sourceended Ereignis

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 sourceended Ereignis wird ausgelöst, wenn sich der readyState eines MediaSource Objekts in "ended" ändert. Dies zeigt an, dass die Anwendung das Senden von Daten an die MediaSource abgeschlossen hat. Wenn eine Anwendung das Anhängen aller Mediendaten an die mit einer MediaSource verbundenen SourceBuffer Objekte beendet hat, ruft sie die Methode MediaSource.endOfStream() auf der MediaSource auf. Dies führt dazu, dass der readyState in "ended" übergeht und das sourceended Ereignis ausgelöst wird.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignis-Handler-Eigenschaft.

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

onsourceended = (event) => {}

Ereignistyp

Ein generisches Event.

Beispiele

Behandlung des sourceopen-Ereignisses

Dieses Beispiel zeigt, wie ein Videoelement für die Wiedergabe eingerichtet wird und das sourceended Ereignis zur ordnungsgemäßen Ressourcenverwaltung behandelt wird. Der Code richtet eine MediaSource ein, initiiert die Wiedergabe durch Abrufen und Puffern von Videodaten und verwendet dann das sourceended Ereignis, um Aufräumaufgaben wie das Entfernen von Ereignis-Listenern auszuführen 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

Specification
Media Source Extensions™
# dfn-sourceended

Browser-Kompatibilität

Siehe auch