{"id":771,"date":"2019-09-17T05:00:54","date_gmt":"2019-09-16T23:30:54","guid":{"rendered":"https:\/\/www.enablex.io\/insights\/?p=771"},"modified":"2025-07-02T19:50:17","modified_gmt":"2025-07-02T14:20:17","slug":"server-side-or-client-side-recording","status":"publish","type":"post","link":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/","title":{"rendered":"Recording WebRTC-Enabled Sessions: Server-side or Client-side?"},"content":{"rendered":"<p><a href=\"https:\/\/www.enablex.io\/insights\/the-most-comprehensive-guide-on-webrtc\/\">WebRTC<\/a> is an open-source project which makes it possible to add real-time communication features (e.g. <a href=\"https:\/\/www.enablex.io\/cpaas\/video-api\">live video calls<\/a>) directly into browser applications and websites. Often used by different industries such as banking &amp; finance, healthcare, and education, it\u2019s a set of <a href=\"https:\/\/www.enablex.io\/cpaas\/video-api\">JavaScript APIs<\/a> for easy integration without having to deal with the inherent complexities of requiring downloads or plugins to use them. However, there are a few capabilities that are not natively available in the WebRTC stack such as recording. To embed the recording function, many developers would typically use one of the following methods depending on the technology stack used for hosting the WebRTC application and the skillsets of the developers<\/p>\n<ul>\n<li>Full-stack developers who are building applications using the native browser <a href=\"https:\/\/www.enablex.io\/cpaas\/video-api\">API<\/a> tend to wrap one of the many browser-side screen recording plugins in their application. This works as a prototyping solution. At best, it is a way to circumvent the problem rather than providing a clean and robust solution that is tightly integrated into the end-user application.<\/li>\n<li>Mobile application developers building native mobile applications on top of the <a href=\"https:\/\/www.enablex.io\/insights\/the-most-comprehensive-guide-on-webrtc\/\">WebRTC<\/a> stack have few choices to record the session. They would often run another recording application in the background to record the session. These quick fixes and workaround solutions are prone to cyber hacks and numerous usability issues.<\/li>\n<li>Developers could also leverage WebRTC or <a href=\"https:\/\/www.enablex.io\/cpaas\/\">CPaaS<\/a> providers. However, there are not many such service providers that offer APIs that help in recording. For those who do, the features and architecture for recording video sessions differ. In general, there are two broad mechanisms \u2013 server-side recording and client-side recording. Let\u2019s look at them in more detail<\/li>\n<\/ul>\n<h2><strong>Server-side or Client-side recording <\/strong><\/h2>\n<p>&nbsp;<\/p>\n<h3><strong>Server-side recording<\/strong><\/h3>\n<p>For server-side recording, the media is routed via a media server instead of directly between the browsers. In this case, the WebRTC session is terminated over the severs on both ends with the media routed to the receiving end. The decoded media is then simultaneously sent to post-processing and recording. Service providers with server-side recording APIs allow the developers to do the following:<\/p>\n<ul>\n<li><a href=\"https:\/\/www.enablex.io\/cpaas\/features\">Recording video\/audio stream<\/a> for each participant in the WebRTC session. These sessions could either be one-to-one or multi-party.<\/li>\n<li>Mixing and transcoding all participants\u2019 streams into a single composite video file.<\/li>\n<li>Providing lay-outing API to manage the recording content layout.<\/li>\n<li>Additionally, there can be additional features such as integrating chat with recording, <a href=\"https:\/\/www.enablex.io\/insights\/video-api-and-sdk-recording-and-video-watermarking\/\">watermarking<\/a>, etc. which are often required for recreating the session as it happened and for copyrighting<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><strong>Client-side recording <\/strong><\/h3>\n<p>For client-side recording, videos are recorded locally, and then processed before uploading to the servers. In this case, an additional client endpoint is needed to connect to the WebRTC session. This end-point is expected to install a software binary containing the recording software image. The software could either be offered as a docker image or a simple ISO. One distinctive disadvantage is that you can\u2019t control the client\u2019s endpoint and its performance greatly varies according to the endpoint specifications. Large scale sessions require a high-end machine with a fast disk I\/O access rate and a fast CPU.<\/p>\n<h2><strong>So, what\u2019s best?\u00a0 <\/strong><\/h2>\n<p>When deciding whether to go for application-level recording or the recording capability offered by a WebRTC platform provider (i.e. Server-side or client-side recording), several factors need to be considered.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Supporting Endpoints<\/strong><\/h3>\n<ul>\n<li>Browsers: You need to find the relevant screen recording plugins suitable for the specific browser. If you need it to be on all browsers, which happens in most cases, you will end up having multiple plugins for each of the browsers.<\/li>\n<li>Mobile App: If you are developing native mobile or hybrid applications (i.e. REACT native etc) then it is recommended to go for a platform provider<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><strong>Size of the Session<\/strong><\/h3>\n<ul>\n<li>Multiparty Sessions<\/li>\n<\/ul>\n<p>In a multiparty session, the probability of users not having enough bandwidth to receive all of the participants\u2019 video streams, is high.\u00a0 In realistic cases, some of the participants\u2019 video quality will be below.\u00a0 As a result, video recording quality, if done solely at the client end will also have lower quality. For such cases, it is recommended to go for a service provider offering server-side recording<\/p>\n<ul>\n<li>One-to-one Sessions<\/li>\n<\/ul>\n<p>Since bandwidth may not be a challenge here, you can choose client-side or server-side recording depending on whether you prefer installing a recording server at your end and dealing with all recording management issues.<\/p>\n<ul>\n<li>Concurrent Sessions<\/li>\n<\/ul>\n<p>For multiple concurrent sessions, load balancing is required. In such cases, it is recommended to go for server-side recording to avoid dealing with the complexity of load balancing and recording management in your application layer.<\/p>\n<p>&nbsp;<\/p>\n<h3><strong>Session Recording is a \u201cMust-Have\u201d Requirement<\/strong><\/h3>\n<p>If it is required that the session must be recorded for legal or business process rules, it is recommended to go for server-side recording as it is least prone to errors.<\/p>\n<p>In summary, you should carefully weigh all the above options before settling down on the final solution when adding recording capability to your WebRTC-enabled application.<\/p>\n<p><a href=\"https:\/\/portal.enablex.io\/cpaas\/trial-sign-up\/\">Try our APIs<\/a> Now!<\/p>\n<p>&nbsp;<\/p>\n<p>Also read:\u00a0<a href=\"https:\/\/www.enablex.io\/insights\/the-most-comprehensive-guide-on-webrtc\/\"><strong>The Most Comprehensive Guide On WebRTC<\/strong><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>WebRTC is an open-source project which makes it possible to add real-time communication features (e.g. live video calls) directly into browser applications and websites. Often used by different industries such as banking &amp; finance, healthcare, and education, it\u2019s a set of JavaScript APIs for easy integration without having to deal with the inherent complexities of &#8230;<\/p>\n","protected":false},"author":12,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[122,23,93,110],"tags":[34,47,56],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Recording WebRTC-Enabled Sessions: Server-side or Client-side? - Insights about video API, SMS API; WhatsApp for Business API<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recording WebRTC-Enabled Sessions: Server-side or Client-side? - Insights about video API, SMS API; WhatsApp for Business API\" \/>\n<meta property=\"og:description\" content=\"WebRTC is an open-source project which makes it possible to add real-time communication features (e.g. live video calls) directly into browser applications and websites. Often used by different industries such as banking &amp; finance, healthcare, and education, it\u2019s a set of JavaScript APIs for easy integration without having to deal with the inherent complexities of ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/\" \/>\n<meta property=\"og:site_name\" content=\"Insights about video API, SMS API; WhatsApp for Business API\" \/>\n<meta property=\"article:published_time\" content=\"2019-09-16T23:30:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-02T14:20:17+00:00\" \/>\n<meta name=\"author\" content=\"Subrat Thayal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@subratothayal\" \/>\n<meta name=\"twitter:site\" content=\"@enablexio\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Subrat Thayal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Recording WebRTC-Enabled Sessions: Server-side or Client-side? - Insights about video API, SMS API; WhatsApp for Business API","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/","og_locale":"en_US","og_type":"article","og_title":"Recording WebRTC-Enabled Sessions: Server-side or Client-side? - Insights about video API, SMS API; WhatsApp for Business API","og_description":"WebRTC is an open-source project which makes it possible to add real-time communication features (e.g. live video calls) directly into browser applications and websites. Often used by different industries such as banking &amp; finance, healthcare, and education, it\u2019s a set of JavaScript APIs for easy integration without having to deal with the inherent complexities of ...","og_url":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/","og_site_name":"Insights about video API, SMS API; WhatsApp for Business API","article_published_time":"2019-09-16T23:30:54+00:00","article_modified_time":"2025-07-02T14:20:17+00:00","author":"Subrat Thayal","twitter_card":"summary_large_image","twitter_creator":"@subratothayal","twitter_site":"@enablexio","twitter_misc":{"Written by":"Subrat Thayal","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/#article","isPartOf":{"@id":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/"},"author":{"name":"Subrat Thayal","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/2623a27aa4d49f7c38046fd1885bd995"},"headline":"Recording WebRTC-Enabled Sessions: Server-side or Client-side?","datePublished":"2019-09-16T23:30:54+00:00","dateModified":"2025-07-02T14:20:17+00:00","mainEntityOfPage":{"@id":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/"},"wordCount":850,"publisher":{"@id":"https:\/\/www.enablex.io\/insights\/#organization"},"keywords":["CPaaS","webrtc","webrtc recording"],"articleSection":["Communication APIs","TechTalks","Video API","WebRTC"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/","url":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/","name":"Recording WebRTC-Enabled Sessions: Server-side or Client-side? - Insights about video API, SMS API; WhatsApp for Business API","isPartOf":{"@id":"https:\/\/www.enablex.io\/insights\/#website"},"datePublished":"2019-09-16T23:30:54+00:00","dateModified":"2025-07-02T14:20:17+00:00","breadcrumb":{"@id":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.enablex.io\/insights\/server-side-or-client-side-recording\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.enablex.io\/insights\/"},{"@type":"ListItem","position":2,"name":"Recording WebRTC-Enabled Sessions: Server-side or Client-side?"}]},{"@type":"WebSite","@id":"https:\/\/www.enablex.io\/insights\/#website","url":"https:\/\/www.enablex.io\/insights\/","name":"Enablex","description":"","publisher":{"@id":"https:\/\/www.enablex.io\/insights\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.enablex.io\/insights\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.enablex.io\/insights\/#organization","name":"Enablex","url":"https:\/\/www.enablex.io\/insights\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/logo\/image\/","url":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/05\/EnableX-Logo-01.png","contentUrl":"https:\/\/www.enablex.io\/insights\/wp-content\/uploads\/2023\/05\/EnableX-Logo-01.png","width":17382,"height":3567,"caption":"Enablex"},"image":{"@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/enablexio","https:\/\/www.linkedin.com\/company\/vcloudx"]},{"@type":"Person","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/2623a27aa4d49f7c38046fd1885bd995","name":"Subrat Thayal","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.enablex.io\/insights\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/a4e1bd8480bae477e9579bd44983acd2?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a4e1bd8480bae477e9579bd44983acd2?s=96&d=mm&r=g","caption":"Subrat Thayal"},"description":"Subrat has over 20 years of experience in building scalable technology solutions including web &amp; desktop applications. He is a proven solution &amp; product architect with expertise on Open Source Technologies.","sameAs":["https:\/\/in.linkedin.com\/in\/subrat-thayal-69b66a13","https:\/\/twitter.com\/subratothayal"],"url":"https:\/\/www.enablex.io\/insights\/author\/subrat\/"}]}},"_links":{"self":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts\/771"}],"collection":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/users\/12"}],"replies":[{"embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/comments?post=771"}],"version-history":[{"count":0,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/posts\/771\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/media?parent=771"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/categories?post=771"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.enablex.io\/insights\/wp-json\/wp\/v2\/tags?post=771"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}