MediaSource: sourceclose 事件

可用性有限

此特性不是基線特性,因為它在一些最廣泛使用的瀏覽器中不起作用。

注意:此功能在 專用 Web Workers 中可用。

MediaSource 物件的 readyState 變為 "closed" 時,會觸發 sourceclose 事件。這表明 MediaSource 已從媒體元素中分離。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

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

onsourceclose = (event) => { }

事件型別

一個通用的 Event

示例

處理 sourceclose 事件

此示例演示如何將媒體元素與 MediaSource 分離,並處理 sourceclose 事件以進行適當的資源管理。程式碼設定一個 MediaSource,將其附加到影片元素,並偵聽 sourceclose 事件。當事件觸發時,它會執行清理任務(revokeObjectURL)。

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);
    });
});

function detachMediaSource() {
  video.src = null; // Detach the MediaSource
}

mediaSource.addEventListener("sourceclose", (event) => {
  console.log("MediaSource sourceclose:", event);
  // Perform cleanup tasks here, e.g., release resources, update UI
  URL.revokeObjectURL(video.src); // Clean up the object URL
});

// Call detachMediaSource() when appropriate, e.g., on a button click
document
  .getElementById("detachButton")
  .addEventListener("click", detachMediaSource);

規範

規範
Media Source Extensions™
# dfn-sourceclose

瀏覽器相容性