媒体流轨道 API 的可插入流
媒体流轨道 API 的可插入流提供了一种向MediaStreamTrack
添加新组件的方法。
概念和用法
在处理视频或音频时,有时您可能希望插入其他元素或以其他方式处理流。例如,应用程序可能包含需要组合在一起的两个轨道,例如天气地图和解释地图的演示者的视频。或者,您可能希望对轨道进行处理以模糊背景、消除背景噪音或引入其他元素(例如为人们添加有趣的帽子等等)。此 API 通过提供对流的直接访问权限,从而允许对其进行操作,从而提供了一种执行此操作的方法。
接口
MediaStreamTrackGenerator
-
创建一个充当
MediaStreamTrack
源的WritableStream
。 MediaStreamTrackProcessor
-
使用
MediaStreamTrack
对象的源并生成媒体帧流。
示例
以下示例来自文章 媒体流轨道上的可插入流,并演示了一个条形码扫描仪应用程序,该应用程序突出显示视频流中的条形码。这将通过 MediaStreamTrackProcessor.readable
访问的流进行转换。
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);