Founded in 2011, Zoom provides cloud video conferencing, online meetings, group messaging, and software-based conference room solutions. Zoom is a lightweight downloadable app that uses WebAssembly channels, Though, you can use Zoom from browser extensions and the web version.
Some people think that Zoom uses WebRTC data channel which is not truce Zoom uses WebSocket as a data transfer channel, in audio and video Zoom uses WebAssembly channels to decode. WebRTC channel offers voice and video communication from the browser when WebAssembly offers the same thing from apps.
What is WebRTC?
WebRTC also abbreviated as web real-time communication, is an open-sourced project that has real-time communication capabilities. Through WebRTC, generic data, voice, and video are sent between the peers. It allows developers to build voice and video communication through a browser. WebRTC allows users to use the device camera and microphone. It also allows users to share screens during advanced-level video calling. WebRTC based applications usually go through the common application flow by accessing the media devices, peer connections. WebRTC is implemented by the browser vendors and only allows encrypted communication. Without any encryption, media is easier to debug and record. There are several security situations where WebRTC failed to put the ball on the court.
What Does Zoom Use?
Zoom somehow avoided WebRTC and any kind of peer connection to call while most of its competitors use WebRTC. So, how does Zoom manage to communicate without using WebRTC?
In the beginning time, Zoom used GetUserMedia. After that Zoom started to use data channels. Without a data channel, guest access would mandate download and installing the Zoom app. To transfer media, WebSocket is used in the Zoom, which is similar to using TURN/TCP in WebRTC. WebSockets can pass the firewalls easily where WebRTC TURN/TCP and TURN/TLS cannot pass. Unlike WebSocket, the TURN connection of WebRTC cannot pass through the authenticated proxies.
Zoom uses WebAssembly, which helps compute-intensive applications (e.g. audio-video codecs and image processors) typically leverage SIMD outside web browsers. Replacing the user’s real Zoom background template with a virtual background template is a perfect example of WebAssembly used by Zoom.
In terms of quality, Zoom has limited the video resolution to 480p on their web because of device performances. Browser vendors and Zoom both use H.264 SVC. WebRTC won’t be able to offer better quality at the same bit rate. The other competitors of Zoom use VP9 and AV1 which offer better quality in video and audio than H.264 SVC at the same bitrate. Though H.264 SVC is simpler to use than VP9 and AV1.
How Does Zoom Work?
Already mentioned that Zoom uses WebAssembly decoder to decode and WebSocket for data processing. Here is how Zoom works;
In Zoom, received data from the server goes through WebSocket into a WebAssembly (WASM) decoder. Audio is fed to browsers that support AudioWorkLet. From the browser, the decoded audio is played using the WebAudio destination node.
From the GetUserMedia WebAudio captures the media and calls, sent them to a WebAssembly encoder worker, and later delivered them through WebSocket to the server. Video capture happens with a resolution of 640×360 and sent the video to the WebAssembly encoder.
Why Zoom Doesn’t Use WebRTC?
A recent statement from Zoom’s official website explains the relationship between Zoom and WebRTC. In that statement, Zoom claims that WebRTC is a limited solution for them and they (Zoom) won’t be able to provide all the features expected by the user if they use WebRTC. Zoom was founded in 2011, in the same year WebRTC was just announced. To support browsers directly with no download, Zoom uses WebAssembly instead of WebRTC. WebAssembly allowed Zoom to stay within its old technology stack. Zoom may have the biggest problem to implement their video codec.
According to Zoom’s official site, Zoom uses its proprietary video codec. Zoom could have adopted WebRTC if they have codecs that are compatible with WebRTC. That’s why Zoom took the approach to improve their video codecs. Zoom codecs media quality is one of the most common factors to choose Zoom over other alternative solutions.
What if Zoom Never Uses WebRTC?
Zoom can probably go for HEVC or adopt in VP9 or AV1, but that will be a complex task for Zoom without the support of WebRTC. Web browser implementation of Zoom may get infected significantly if they won’t rely on WebRTC. Instead of relying on WebRTC, Zoom is working through external remote servers.
Frequently Asked Questions (FAQ)
What is WebSocket?
The WebSocket is a communication protocol that establishes a connection between a web browser and web servers. It provides full-duplex communication.
How does the H.264 codec work?
H.264 video codec works by encoding HDMI audio and video signal into an IP network. It also offers to stream simultaneously in multiple decoders from a single encoder.
Which has better video quality between Zoom and WebRTC?
Well, it matters. Above 100kbps speed, WebRTC’s video experience is better than Zoom, but in below 100kbps speed Zoom has considerably better video experience than WebRTC.
Though WebRTC is getting popular day by day, it has failed in some security situations. In my opinion, Zoom should start working on the migration plan towards WebRTC. Without migration, Zoom could have to face some technical complications for walking alone.