MediaRecorder.
The browser API that takes a `MediaStream` (from screen capture or microphone) and produces encoded video/audio data as `Blob` chunks via the `ondataavailable` event. Every browser-based screen recorder uses it.
How chunks work
Constructed with a `timeslice` (Screendog uses 2000ms), `MediaRecorder` emits a `dataavailable` event every interval with the next encoded chunk. Push these to your server as they arrive (streaming upload) or buffer and upload at stop.
Why event ordering matters
`dataavailable` is synchronous, but reading the chunk via `arrayBuffer()` is async. Naïve code interleaves reads and ships chunks out of order. Screendog's record.html uses a single drain worker that awaits each chunk in source order.
Frequently asked
What format does it produce?
Configurable via `mimeType`. Defaults to WebM in Chrome/Firefox/Edge. Safari produces MP4 (H.264).
Try Screendog free.
5 recordings on the free trial. Real Linear, GitHub, Notion, Slack, and Jira filing. No credit card.
Start a workspace — free