Recording of Cloudflare Calls

Regarding the Cloudflare Calls product:

I’d like the ability of my app built with it to record the calls. There is also a github issue requesting such at:

I also asked on discord and got back a response saying not yet supported:

This thread can track progress towards an official or community effort towards recording with Cloudflare Calls.

My use case is building an app for study communities that offers replayable meetings among other things.

Recording functionality is the only thing missing that is preventing me from going full steam ahead on it.

I’d be happy for recording to s3/r2 for audio and for video, as well as optionally to cloudflare stream for video. Happy for each track to be separate recordings, no need for all tracks in a room to be combined in the recording, although if supported that would have to be addition, as seperate tracks is ideal. (Although that said… my understanding of the Calls API is that one session can have multiple tracks, and that the session is the only client-server communication, and from the server the tracks are remuxed; such as a track for user 1, a track for user 2, a track for user 3, and a track for user 1 and 2 and 3; in which user 1’s session sends only user 1’s track, but receives in the user 1 session both the track for user 2 and the track for user 3, and with the combined user 1 and 2 and 3 track used for simpler recording and playback, even though ideally all tracks are also recorded).

I know I could probably do this on the client side by sending the media stream not just to the track api endpoint, but also to a worker that temporarily stores the potentially unordered data in kv or durable objects, then after the call reassembles the data in timestamped order and saves it in the s3 storage. However this is not ideal as then two media streams are being sent from the client, which in my case is unacceptable as the users will be in developing countries with low bandwidth unstable connections, and would be unnecessarily burdensome considering it should just be a flag on the calls api.

1 Like