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: sourceopen-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 sourceopen-Ereignis wird ausgelöst, wenn sich der readyState eines MediaSource-Objekts zu "open" ändert. Dies zeigt an, dass die MediaSource bereit ist, Daten von SourceBuffer-Objekten zu empfangen. Das kann geschehen, wenn das MediaSource-Objekt erstmals mit einem Medienelement verbunden wird oder wenn der readyState von "ended" zurück zu "open" wechselt.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

js
addEventListener("sourceopen", (event) => {});

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

js
onsourceopen = (event) => {};

Ereignistyp

Ein generisches Event.

Beispiele

Das sourceopen-Ereignis behandeln

Dieses Beispiel richtet eine MediaSource ein, verbindet sie mit einem Videoelement und wartet auf das sourceopen-Ereignis. Wenn das Ereignis ausgelöst wird, fügt es einen SourceBuffer zur Verarbeitung der Videodaten hinzu, ruft die Daten ab, hängt sie an den Puffer an und gibt schließlich die Objekt-URL frei, wenn die Quelle endet.

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

video.src = URL.createObjectURL(mediaSource);

mediaSource.addEventListener("sourceopen", (event) => {
  console.log("MediaSource sourceopen:", event);
  // Add source buffers and begin adding media data.
  const sourceBuffer = mediaSource.addSourceBuffer(
    'video/mp4; codecs="avc1.42E01E"',
  );
  fetch("video-data.mp4")
    .then((response) => response.arrayBuffer())
    .then((data) => {
      sourceBuffer.appendBuffer(data);
    });
});

mediaSource.addEventListener("sourceended", () => {
  URL.revokeObjectURL(video.src);
});

Spezifikationen

Spezifikation
Media Source Extensions™
# dfn-sourceopen

Browser-Kompatibilität