The HTMLCanvasElement captureStream() method returns a MediaStream which includes a CanvasCaptureMediaStreamTrack containing a real-time video capture of the canvas's contents.
Syntax
MediaStream = canvas.captureStream(frameRate);
Parameters
frameRateOptional- A double-precision floating-point value that indicates the rate of capture of each frame. If not set, a new frame will be captured each time the canvas changes; if set to
0, frames will not be captured automatically; instead, they will only be captured when the returned track'srequestFrame()method is called.
Return value
A reference to a MediaStream object, which has a single CanvasCaptureMediaStreamTrack in it.
Exceptions
NotSupportedError- The value of
frameRateis negative.
Example
// Find the canvas element to capture
var canvasElt = document.querySelector('canvas');
// Get the stream
var stream = canvasElt.captureStream(25); // 25 FPS
// Do things to the stream
// E.g. Send it to another computer using an RTCPeerConnection
// pc is an RTCPeerConnection created elsewhere
pc.addStream(stream);
Specifications
| Specification | Status | Comment |
|---|---|---|
| Media Capture from DOM Elements The definition of 'HTMLCanvasElement.captureStream()' in that specification. |
Working Draft | Initial definition |
Browser compatibility
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
captureStream | Chrome Full support 51 | Edge Full support ≤79 | Firefox Full support 43 | IE No support No | Opera Full support 36 | Safari Full support 11 | WebView Android Full support 51 | Chrome Android Full support 51 | Firefox Android Full support 43 | Opera Android Full support 36 | Safari iOS Full support 11 | Samsung Internet Android Full support 5.0 |
Legend
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.
- Experimental. Expect behavior to change in the future.
See also
HTMLMediaElement.captureStream(), which allows capturing a stream from a media element.MediaStreamMedia Capture and Streams API
