Rishit Bansal

Dyte

Recording WebRTC: A Study of Different Strategies to Build Dynamic Media Pipelines for Recording Video Calls

Call recordings have become a feature essential to building any video calling solution. However, engineering an end-to-end recording pipeline is no simple task: You need to handle track ingress, composition, transcoding, and also exporting the final content to various destinations. Each of these operations have multiple configurations depending on a user’s needs: Some users may want the video stream of every participant in a video call as a separate file, whereas others might want their own custom grid layout in the video file. On the export side, users may want the content transferred to an S3 bucket, whereas others may want the content to be available as an HLS playlist. Handling all this becomes a particularly cumbersome task, as it is both resource intensive (transcoding video is a CPU hungry task), and there are countless configurations! In this talk, I want to summarise how we overcome these challenges to build a recording pipeline at Dyte, which successfully records millions of minutes of video calling every month.