How to Choose a Live Streaming Protocol? RTMP vs HLS vs WebRTC
Tags: videostreamingprotocols, webrtc, hls, rtmp
Published: 2022-06-24 08:53:54

![cover image](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/49za83wcl89bp3m8dyx7.png) 

When streaming a video, the delivery mostly depends on which live streaming protocol is used. Each protocol performs differently in terms of latency, scalability, and supporting devices. While there’s no universal solution to each live streaming need, you still have freedom to pick the best match for your specific requirements.

## How does streaming work?
For the end user, live streaming is all about a quasi-real experience with a screen and a camera standing in-between them and the source. In reality, there’s much more backstage. 

It does start with capturing whatever is about to go live on camera. It does end with playing the content on an end-user device. But to make this happen, it takes four more milestones to complete.

1. Once having recorded even a byte of information, video and audio get **compressed with an encoder**. In short, encoder converts raw media material into a piece of digital information that can be displayed on many devices. It also reduces the file size from GBs to MBs to ensure quick data delivery and playback.
2. Compressed data then gets **ingested into a streaming platform** for further processing. 
3. The platform resource **transcodes** the stream and packages it into its final format and protocol. The latter is basically the way data travels from one communicating system to another. 
4. To get to its end user, the stream is then **delivered** across the internet, in most cases via a content delivery network (CDN). In turn, CDN is a system of servers located in different physical locations.

Aaand — cut! Here’s where a user sees the livestream on their device. A long way to go, huh? But in fact, this journey may take less than 0,5 second or 1-2 minutes. This is called latency and it varies from one protocol to another. As well as many other parameters. 

There’re quite a few live streaming protocols to choose from, but we’ll elaborate on three most commonly used ones: RTMP, HLS and WebRTC. In short, here’s the difference: 

![protocols comparison](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lvrcuxw4wwjmmmk6uw25.png)
 
Now in detail.

## RTMP
Real-Time Messaging Protocol (RTMP) is probably the most widely supported media streaming protocol from both sides of the process. It’s compatible with many professional recording devices and also quite easy to ingest into streaming platforms like YouTube, Twitch, and others. 

Supporting low-latency streaming, RTMP delivers data at roughly the same pace as cable broadcasting — it takes [only 5 seconds to transmit information](https://www.wowza.com/blog/streaming-protocols#rtmp). This is due to using a firehose approach that builds a steady stream of available data and delivers it to numerous users in real time. It just keeps flowing!

Yet, this video streaming protocol is no longer supported by browsers. This results in additional conversion and transcoding the stream into a HTTP-based technology, prolonging the overall latency to 6-30 seconds. 

## HLS
HTTP Live Streaming, developed by Apple as a part of QuickTime, Safari, OS X, and iOS software, is a perfect pick if you stream to a large audience, even millions at a time. HLS is supported by all browsers and almost any device (set-top boxes, too). 

The protocol supports adaptive bitrate streaming which provides the best video quality no matter the connection, software, or device. Basically it’s key to the best viewer experience.

Usually, to cover a large audience with broad geography stably and with the lowest latency, CDN is used. 

The only major drawback of HLS seems to be the latency — prioritizing quality, it may reach 45 seconds when used end-to-end. 

Apple presented the solution in 2019: Low Latency HLS shrinks the delay to less than 2 seconds and is currently supported by all browsers, as well as Android, Linux, Microsoft and, obviously, macOS devices, several set-top boxes and Smart TVs. 

## WebRTC
RTC in WebRTC stands for “real-time communication” which suggests this protocol is perfect for an interactive video environment. With the minimum latency possible (less than 0,5 second) WebRTC is mostly used for video conferencing [with not so many participants](https://forasoft.com/blog/article/video-conferencing-system-architecture-805) (usually 6 or less). We use it a lot in our projects for video conferencing. Check out the [ProVideoMeeting](https://forasoft.com/project/provideomeeting) or [CirrusMED](https://forasoft.com/project/cirrusmed) portfolios.

But media servers like [Kurento](https://forasoft.com/blog/article/how-to-create-a-custom-internet-tv-streaming-service-649) allow WebRTC [scaling to an audience of up to 1 million viewers](https://forasoft.com/blog/article/minimizing-latency-to-less-than-1-sec-for-mass-streams-315). Yet, a more popular approach would be to use WebRTC as an ingest and repackage it into more scalable HLS. 

Apart from providing the absolute minimum latency possible, WebRTC doesn’t require any additional equipment for a streamer to do the recording. 

## Conclusion
Thus, when choosing a live streaming protocol for your streaming goals, ask yourself these questions:

- What kind of infrastructure am I willing to establish or already have? What recording devices and software are at my disposal?
- What kind of content I want to deliver and which latency is acceptable? How “live” do I want the streaming to be?
- What system scalability do I expect? How many users I guesstimate will watch the stream at a time? 

One protocol may not satisfy all your needs. But a good mix of two can. [Hit us up](https://forasoft.com/contacts) to get a custom solution to turn your ideas into action.