← 返回首页
MediaStreamTrackGenerator - Web APIs | MDN

MediaStreamTrackGenerator

Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.

Non-standard: This feature is not standardized. We do not recommend using non-standard features in production, as they have limited browser support, and may change or be removed. However, they can be a suitable alternative in specific cases where no standard option exists.

Note: Consider using VideoTrackGenerator instead.

The MediaStreamTrackGenerator interface of the Insertable Streams for MediaStreamTrack API creates a WritableStream that acts as a MediaStreamTrack source. The object consumes a stream of media frames as input, which can be audio or video frames.

In this article

Constructor

MediaStreamTrackGenerator()

Creates a new MediaStreamTrackGenerator object which accepts either VideoFrame or AudioData objects.

Instance properties

This interface also inherits properties from MediaStreamTrack.

MediaStreamTrackGenerator.writable

A WritableStream.

Instance methods

This interface doesn't implement any specific methods, but inherits methods from MediaStreamTrack.

Examples

The following example is from the article Insertable streams for MediaStreamTrack, and demonstrates a barcode scanner application, which process barcodes and highlights them before writing the transformed frames to the writable stream of 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);

See also

Specifications

This feature does not appear to be defined in any specification.

Browser compatibility

Enable JavaScript to view this browser compatibility table.