概述`MediaStreamTrackProcessor` 可将媒体轨转换为带 `VideoFrame` 的可读流,`MediaStreamTrackGenerator` 将帧写回为媒体轨。结合 TransformStream 可进行帧级处理与特效。用法/示例const stream = await navigator.mediaDevices.getUserMedia({ video: true })
const track = stream.getVideoTracks()[0]
const processor = new MediaStreamTrackProcessor({ track })
const generator = new MediaStreamTrackGenerator({ kind: 'video' })
const transformer = new TransformStream({
async transform(frame, controller) {
// 示例:直接透传,实际可用 Canvas/WebGL 进行滤镜处理
controller.enqueue(frame)
frame.close()
}
})
processor.readable.pipeThrough(transformer).pipeTo(generator.writable)
const output = new MediaStream([generator])
工程建议在 Worker/OffscreenCanvas 中进行处理,降低主线程干扰;控制分辨率与帧率以稳定时延。规范帧的关闭与资源回收,避免内存泄漏;对失败帧做保护性处理。在不支持环境回退到 `<canvas>` 渲染与 `captureStream()`。参考与验证MDN:VideoFrame — https://developer.mozilla.org/docs/Web/API/VideoFrameweb.dev:Bring your own effects — https://web.dev/articles/mediastreamtrackprocessor

发表评论 取消回复