Video recording

Recordings enable you to convert live video from 100ms rooms into long-lived video assets. 100ms can generate different types of recordings

Composite recordings

Previously called browser or beam recording.

100ms can record a room to capture the perspective of a participant, who can hear and see other participants in the room. These recordings are a mix of multiple audio/video tracks, composed together in one video file—with a layout that is similar to the UI of the room. The output is a single MP4 file.

Composite recordings can be customized: you can define which roles to record, which video resolution to record and, other modifications to the UI.

Internally, these recordings are created using an automated web browser that joins the room as a hidden peer (called "beam")—which records the screen to generate a composite recording.

Start and stop recording

Enable "room composite recordings" on any template created on the 100ms Dashboard. This enables the feature for your template, and exposes options to customize the recording. You can control when to start and stop recording, based on your use-case.

Composite recording on 100ms Dashboard

There are 3 methods to start a recording.


Start recording automatically when the first peer joins a room.

Enable on dashboard →

Start with API

Start recording by calling the 100ms server-side REST API. This is suitable to start/stop based on business logic.

REST API docs →

Start from SDK

Start recording with the client-side SDK. This is suitable to start/stop based on user action (click a button).

Web docs →

iOS docs →

Android docs →

Flutter docs →

React Native docs →

Fetch the recording

After the recording is stopped and processed, a recording asset is generated. Composite generates an asset of type room-composite. You can fetch this asset through multiple methods:

Customizing the recording

Legacy composite through SFU recording

100ms has an alternative method to generate a composite video. This method is not recommended since above described method generates a higher quality video.

SFU recording generates the asset type called room-composite-legacy.

See migration doc to compare these 2 methods and pick a preferred approach.

Recording with live streaming

You can turn on recording when starting up a new live stream. 100ms can produce two different formats of recordings suitable for downloading or streaming in on demand scenarios. Learn more about recording with a live stream here.

Track recordings

Some use-cases require 1 file per 1 track (audio, video or screen-share). This can be generated through the SFU recording.

Track recordings can be enabled for your template through the 100ms Dashboard. Once enabled, the recording starts automatically when the first peer joins a room, and stops automatically when the last peer leaves the room.

SFU recording on 100ms Dashboard

Fetch the recording

You can fetch track recordings through two methods:

Have a suggestion? Recommend changes ->

Was this helpful?