MediaStreamTrackGenerator

實驗性: 這是一項實驗性技術
在生產中使用此技術之前,請仔細檢查瀏覽器相容性表格

非標準:此特性未標準化。我們不建議在生產環境中使用非標準特性,因為它們瀏覽器支援有限,並且可能會更改或被移除。但是,在沒有標準選項的特定情況下,它們可以是合適的替代方案。

注意: 建議使用 VideoTrackGenerator

Insertable Streams for MediaStreamTrack API 中的 MediaStreamTrackGenerator 介面建立一個 WritableStream,它充當 MediaStreamTrack 的源。該物件消耗媒體幀流作為輸入,可以是音訊幀或影片幀。

建構函式

MediaStreamTrackGenerator() 實驗性 非標準

建立一個新的 MediaStreamTrackGenerator 物件,該物件接受 VideoFrameAudioData 物件。

例項屬性

此介面還繼承了 MediaStreamTrack 的屬性。

MediaStreamTrackGenerator.writable 實驗性 非標準

一個 WritableStream

例項方法

此介面不實現任何特定方法,但繼承了 MediaStreamTrack 的方法。

示例

以下示例來自文章 Insertable streams for MediaStreamTrack,它演示了一個條形碼掃描器應用程式,該應用程式處理條形碼並高亮顯示它們,然後將轉換後的幀寫入 MediaStreamTrackGenerator.writable 的可寫流。

js
const stream = await getUserMedia({ video: true });
const videoTrack = stream.getVideoTracks()[0];

const trackProcessor = new MediaStreamTrackProcessor({ track: videoTrack });
const trackGenerator = new MediaStreamTrackGenerator({ kind: "video" });

const transformer = new TransformStream({
  async transform(videoFrame, controller) {
    const barcodes = await detectBarcodes(videoFrame);
    const newFrame = highlightBarcodes(videoFrame, barcodes);
    videoFrame.close();
    controller.enqueue(newFrame);
  },
});

trackProcessor.readable
  .pipeThrough(transformer)
  .pipeTo(trackGenerator.writable);

另見

規範

此特性似乎未在任何規範中定義。

瀏覽器相容性