Here at Dacast, we work to make a smooth and easy live streaming experience for everyone. No matter what your level of technical expertise, you can learn to live stream effectively, from content recording to secure video upload to streaming to your viewers. That’s why we provide these blogs, with streaming solutions for everything from the beginning steps to stream live to how to use video APIs. In this article, we’ll review the basics of video streaming protocols.
First, we’ll define what the term video streaming protocol means. Then, we’ll discuss the difference between streaming protocols and codecs, a common area of confusion in the streaming world. And we’ll also explain the relationship between a codec and a container format. Finally, we’ll look in more detail at each of the most popular video streaming protocols in use today.
What is a video streaming protocol?
Before we go further, let’s define a video streaming protocol. Most digital video is designed for two things: storage, and playback. This leads to two considerations, namely small file size and universal playback.
Most video files aren’t designed for streaming. Therefore, streaming a video involves first breaking it up into small chunks. These chunks then arrive sequentially and playback as they’re received. If you’re streaming live video, the source video comes in straight from a camera. Otherwise, it’s coming from a file for VOD content.
A video streaming protocol is a standardized delivery method for breaking up video into chunks, sending it to the viewer, and reassembling it.
That’s the basic version. However, streaming protocols can get much more complex. Many are “adaptive bitrate” protocols, for example. This technology will deliver the best quality that a viewer can support at any given time. Some protocols focus on reducing latency, or the delay between an event happening in real life and when it plays on the viewer’s screen. Some protocols only work on certain systems. And yet other protocols focus on digital rights management (DRM).
If you’re still feeling overwhelmed by the variety and scope of video streaming protocols, not to worry! We’ll cover some of this in more detail as we look at specific protocols later in this post. First, however, let’s take a closer look at two related concepts: codec and container format.
What’s the difference between video streaming protocol, codec, and container format?
Among others, one common source of confusion in the realm of streaming video relates to the difference between a protocol and a codec. Simply put, the term codec refers to video compression technology. Logically, different codecs are used for different purposes. For example, Apple ProRes is often used for video editing. H.264, the most common video codec, is widely used for online video.
As with codec, the term format can also be confusing in the context of video streaming protocols. In many cases, format simply refers to the container format of a video file. Common container formats include .mp4, .m4v, and .avi. In essence, a container format functions like a “box” that contains (usually) a video file, an audio file, and metadata. However, container format isn’t as central a concept for live streamers.
Now, let’s consider a comparison to make it easier to understand the relationship between a codec, a container format, and a streaming protocol. Imagine that you’re a merchant, and you’re transporting clothing in bulk (the clothing represents the video content). The codec is equivalent to the machine that compresses the clothing into a bundle to save space. The container format is the boxcar that these bundles are packed inside. And the streaming protocol is analogous to the railroad tracks, signals, and drivers who deliver it to the destination. As a broadcaster, then, you want your live video content to function in concert with a codec, container format, and streaming protocol.
Finally, it’s important to note that most streaming protocols only support certain codecs. We’ll cover the details of this later.
What are the common video streaming protocols?
With those working definitions in place, let’s start our comparison of the most common video streaming protocols today. We’ll also offer use cases for each protocol whenever possible.
Real-Time Messaging Protocol (RTMP)
First up is the venerable king of the pack: RTMP. Originally developed by Macromedia way back in the day, RTMP is still widely used. However, today it’s mostly used for ingesting live streams. In plain terms, when you set up your encoder to send your video feed to your video hosting platform, that video will reach the CDN via the RTMP protocol. However, that content eventually reaches the end viewer in another protocol – usually HLS streaming protocol.
Today, RTMP is mostly depreciated for use as a viewer-facing video streaming protocol. That’s because it’s dependent on the Flash plugin, which has been plagued with security problems for years and is rapidly becoming obsolete.
Who should use RTMP?
RTMP is a streaming protocol providing very low latency streams. However, because it requires the Flash plugin to be played, we do not recommend it. Again, the exception is for stream ingestion. For this purpose, RTMP still rules the roost. It’s robust and almost universally supported.
Real-Time Streaming Protocol (RTSP)
Perhaps a lesser-known video streaming protocol, Real-Time Streaming Protocol (RTSP) was first published in 1998. RTSP was developed to control streaming media servers in entertainment and communications systems, specifically. In 2016, an updated RTSP 2.0 became available. Overall, it is known as a video streaming protocol for establishing and controlling media sessions between endpoints.
RTSP is similar in some ways to the HTTP Live Streaming (HLS) protocol, which we’ll cover below. However, transmitting live streaming data is not what RTSP accomplishes on its own. Instead, RTSP servers often work in conjunction with the Real-Time Transport Protocol (RTP) and Real-Time Control Protocol (RTCP) to deliver media streams.
Who should use RTSP?
RTSP was designed to support low-latency streaming and can be a good choice for streaming use cases such as IP camera feeds (e.g. security cameras), IoT devices (e.g. laptop-controlled drone), and mobile SDKs. One significant drawback, however, is there is limited native browser support for RTSP.
Dynamic Adaptive Streaming over HTTP (MPEG-DASH): up-and-coming protocol
At the opposite end of the spectrum, we have MPEG-DASH: one of the newest protocols on the scene. While not widely used, this protocol has some big advantages. First, it supports adaptive-bitrate streaming. That means viewers will always receive the best video quality that their current internet connection speed can support. This can fluctuate second-to-second, and DASH can keep up.
MPEG-DASH fixes some longstanding technical issues with delivery and compression. Another advantage is that MPEG-DASH is “codec agnostic”—it can be used with almost any encoding format. It also supports Encrypted Media Extensions (EME) and Media Source Extension (MSE) which are standards-based APIs for browser-based digital rights management (DRM).
Who should use MPEG-DASH?
These days, MPEG-DASH is only being used widely by a lesser amount of major broadcaster as compared to HLS. However, it will be the standard technology in the future. For now, that time has not yet arisen due to compatibility (e.g. Apple Safari and iOS devices do not support it) and other related issues.
Microsoft Smooth Streaming (MSS)
Next up, let’s review and compare Microsoft’s Smooth Streaming (MSS) protocol. Originally introduced in 2008, MSS was integral to that year’s Summer Olympics. However, it’s fallen out of favor these days, except among Microsoft-focused developers and those working in the Xbox ecosystem.
Smooth Streaming supports adaptive-bitrate streaming and includes some robust tools for DRM. Overall, it’s a hybrid media delivery method that functions like streaming, yet is based on HTTP progressive download.
Who should use Smooth Streaming?
Unless your main target audience is Xbox users or you plan to build Windows-specific apps, we don’t recommend using MSS as a primary video streaming protocol.
HTTP Dynamic Streaming (HDS)
Adobe’s entry into the streaming protocol world is HTTP Dynamic Streaming (HDS), the successor of RTMP. Like RTMP, HDS is a flash-based streaming protocol. However, it also adds support for adaptive streaming and has a reputation for high-quality.
HDS is also one of the better protocols when it comes to latency. On the other hand, latency isn’t as low as with RTMP due to the fragmentation and encryption process. And that makes it less popular for streaming sports and other events where seconds matter.
Who should use HDS?
Generally, we don’t recommend that you use HDS. In recent years, Flash support has become too tenuous for any broadcaster to rely on this technology to reach its audience. In short, building your web video around the Flash player is simply a poor choice today.
HTTP Live Streaming (HLS): top video streaming protocol pick (for now)
The final video streaming protocol we’ll highlight here is HTTP Live Streaming or HLS. Apple originally released this protocol in 2009 to enable them to drop Flash from iPhones. Since then, and especially recently, HLS has since become the most widely-used streaming protocol. Why?
First, desktop browsers, smart TVs, and both Android and iOS mobile devices all support HLS. HTML5 video players also natively support HLS, in comparison with HDS and RTMP. This allows a stream to reach as many viewers as possible, making HLS the safest protocol today for scaling a live stream to large audiences. For example, you can use this protocol to stream live video on your website with a simple embed code.
As far as features, the HLS standard also supports adaptive-bitrate streaming, dynamically delivering the best possible video quality at any moment. With recent updates, this standard now supports the latest-and-greatest H.265 codec, which delivers twice the video quality at the same file size as H.264.
Currently, the only downside of HLS is that latency can be relatively high. However, there are methods for reducing HLS latency.
Who should use HLS?
HLS is the most widely-used protocol today, and it’s robust. For example, we know that few viewers will return to a site during a stream if they experience a video failure. Using a widely-compatible, adaptive protocol like HLS will deliver the best possible audience experience.
Also, HLS is now the default streaming protocol used at Dacast.
Which video streaming protocol(s) are used for live streaming?
To recap, there are many video streaming protocols in existence today. And many of these can be used for live video streaming. As we covered above, all of the protocols discussed here (RTMP, RTSP, MPEG-DASH, MSS, HDS, and HLS) do have specific use cases for specific broadcasters. However, when taking everything into account, HLS comes out on top, especially in terms of codec compatibility, all-device compatibility, HTML5 video player native support, and adaptive-bitrate streaming capacity.
Our takeaway recommendation here is simple: for now, almost all broadcasters should stick to using the HLS video streaming protocol.
Yes, some users may find other protocols better for their needs. However, whether you want to stream live video on your website, do live streaming of sports events, or broadcast professional events and gatherings live, HLS is generally the best way to go.
And remember, MPEG-DASH is the up-and-coming option. Look for the growing adoption of that protocol in the near future, and stay tuned to our blog posts as we cover those industry shifts over time.
Our aim in this article was to demystify streaming protocols: what they are, how they work, and which are the best to use. We’ve also helped to clarify the relation between video streaming protocol, codec, and container format. We hope you feel better equipped to choose, and use, the right protocol and online video platform for your needs.
Any questions? Additions? Ideas? Let us know in the comments! We love to hear from our readers and will look forward to hearing from you! For regular live streaming tips and exclusive offers, you can also join our LinkedIn group.
Have you considered the Dacast platform with HLS live streaming, but aren’t quite ready to commit? Not to worry! You can sign up for our 30-day free trial (no credit card required) to test out our service before committing. Click the button below to start streaming live today.
Thanks for reading, and as always, good luck with your live streams.
By Max Wilbert.