Skip to main content

Recording Video Calls

If you are using SignalWire to conduct your video conferences, it is quite simple to record the video feed and access them later at your convenience. Depending on how you are using SignalWire Video, there are several ways you might go about controlling your recordings.

How to start a recording

From the Embeddable Video Conference Widget

If you are using Embeddable Video Rooms in your website, just click the Start Recording option to start the recording.

info

Anyone with a moderator token will be able to start and stop recording. Embed the guest video room version on public pages for people that shouldn't be able to control recordings.

A screenshot of an embedded video conference widget. The ellipsis menu icon is selected, showing the 'Start Recording' menu item.

Starting a recording from the Embeddable Video Conference Widget.

If you are using AppKit to create or extend embeddable rooms, use the setupRoomSession callback to get a reference to the RoomSession object. You can use that reference to the RoomSession object to start recordings.

<script>
// ... the code snippet you copied from
// your SignalWire Space ...
SignalWire.AppKit.VideoConference({
token: "vpt_xxxxxxxxxxxxxxxxxxx",

// add this part to the snippet to control recording
setupRoomSession: (roomSession) => {
roomSession.on("room.joined", () => {
// Start recording
const rec = await roomSession.startRecording();
// Stop recording after 10 seconds
setTimeout(rec.stop, 10 * 1000);
})
},
});
</script>

From the Browser SDK

To start recording in an ongoing room session from the browser SDK, use the RoomSession.startRecording() method. You must have the room.recording permission to be able to start and stop recording.

This method returns a Promise which resolves to a RoomSessionRecording object. You can use this returned object to control the recording, including pausing and stopping it.

// Join a room
const roomSession = new SignalWire.Video.RoomSession({
token: "<Your Token Here>",
rootElement: document.getElementById("root"),
});
await roomSession.join();

// Start recording
const rec = await roomSession.startRecording();

// Stop recording after 10 seconds
setTimeout(rec.stop, 10 * 1000);

The Record on Start Option

To start recording the video conference as soon as it is started, use the Record on Start option. With this option enabled, all sessions occurring in that room will automatically be recorded.

If you are creating a Embeddable Video Conference, it will be available via your SignalWire Dashboard (at the Conferences tab on the Video page).

If you are creating an advanced room through the REST API, use the record_on_start option while creating the room. Further, you have to make sure that the room.recording permission is set in the room token.

info

The Record on Start setting is the only control the REST API provides related to room recording. To control room recordings more precisely from your server, use the Realtime SDK. The Realtime SDK exposes a RoomSession object similar to the one in the Browser SDK, so you have finer control over the room session in progress.

How to Stop a Recording

From the Embeddable Video Conference Widget

A screenshot of an embedded video conference widget. The ellipsis menu icon is selected, showing the 'Stop Recording' menu item.
Stop a recording from the Embeddable Video Conference Widget

To stop an ongoing recording through the Embeddable Video Conference widget, click the Stop Recording option.

From the Browser SDK

Use the RoomSessionRecording.stop() method to stop the ongoing recording. This method is included on the object returned when you called the RoomSession.startRecording() method.

const rec = await roomSession.startRecording();
await rec.stop();

How to Access Recordings

From the SignalWire Dashboard

Any recording you make will be available in your SignalWire Dashboard for download at https://<space_name>.signalwire.com/video_recordings. Alternatively, navigate to the Video screen from the sidebar, and click on the Recordings tab to reach the same place.

A screenshot of the Recordings tab of the Video page in the SignalWire Dashboard. A Room Recording is shown, with metadata and options to download or delete the recording.
A recording accessed from the SignalWire Dashboard.

From the REST APIs

You can get a list of all videos that have been recorded with a GET request at https://<space_name>.signalwire.com/api/video/room_recordings.

The request returns a JSON object with a paginated array of all room recordings, including the id of the room session which was recorded, and a uri string that you can use to download the recording.

curl -L -X GET 'https://<space>.signalwire.com/api/video/room_recordings' \
-H 'Accept: application/json' \
-H 'Authorization: Basic <Base64 of auth project_id:api_token>'

Conclusion

There are several ways you can record your video conferences and calls, most of them just a handful of clicks away. Your recordings will stay in the SignalWire servers so you can access them when you need, and delete them if you don't.