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

另见

规范

此特性似乎未在任何规范中定义。

浏览器兼容性