Beyond playing files (Multimedia and Playing Audio and Video), the browser can capture, record, stream, speak, listen, make music and encode video frame by frame.
Many of these APIs revolve around the MediaStream: a bundle of audio and video MediaStreamTrack objects with a source (a camera, a screen, a WebRTC peer as in WebRTC Video Channel, or a Web Audio node) and consumers (a media element, MediaRecorder, RTCPeerConnection or AudioContext). Capture needs a secure context and permission. The examples ran in headless Chrome 152 1 with its fake camera and microphone.
| API | Entry point | Support (September 2026) |
|---|---|---|
| Media capture | mediaDevices.getUserMedia() | Widely available (2017) |
| Image Capture | new ImageCapture(track) | Chromium 4,389 , Safari 18.4 10 ; no Firefox 555 |
| MediaStream Recording | new MediaRecorder(stream) | Widely available (2021) |
| Screen Capture | getDisplayMedia() | Desktop only |
| Media Capabilities | mediaCapabilities.decodingInfo() | Widely available (2022) |
| Media Session | navigator.mediaSession | All engines; Limited |
| Encrypted Media Extensions | requestMediaKeySystemAccess() | Widely available (2019) |
| Media Source Extensions | new MediaSource() | Limited: iPhone needs ManagedMediaSource |
| WebVTT | <track>, VTTCue | Widely available (2015) |
| Speech synthesis | speechSynthesis.speak() | Widely available (2018) |
| Speech recognition | SpeechRecognition | Chromium; Safari prefixed |
| Web MIDI | requestMIDIAccess() | Chromium, Firefox; no Safari |
| Web Audio | new AudioContext() | Widely available (2021) |
| WebCodecs | VideoEncoder, AudioDecoder | Chromium, Firefox, Safari 26 |