Here at DaCast, we work to make live streaming a smooth and easy experience for everyone. No matter what your level of technical experience, you should be able 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. This article reviews the basics of video streaming protocols.
First, we’ll define a video streaming protocol. Then, we’ll talk about the difference between protocols and codecs, a common area of confusion. Finally, we’ll look in some detail at each of the most popular 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. Simply put, streaming a video involves breaking it into small chunks. These chunks are sent sequentially and played as they’re received. If you’re live streaming, the source video is coming in straight from a camera. Otherwise, it’s coming from a file.
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. Streaming protocols can get pretty complex. Many are “adaptive bitrate” protocols. 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 being depicted on the viewer’s screen. Some protocols only work on certain systems. Others focus on digital rights management (DRM).
We’ll cover some of this in more detail as we look at specific protocols in detail later.
What’s the difference between a protocol and a codec?
As I mentioned, one common source of confusion is the difference between a protocol and a codec. Let’s try to put this as simply as possible. The term “codec” refers to video compression technology. 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.
Notably, the term “format” can be confusing as well. Often, format refers to the container format of a video file. Common container formats include .mp4, .m4v, and .avi. A container format is simply a “box” that contains (usually) a video file, an audio file, and metadata. Container format isn’t as central a concept for live streamers.
Perhaps a comparison will make it easier to understand. Imagine that you’re a merchant, and you’re transporting clothing in bulk (the clothing is the video). 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 the railroad tracks, signals, and drivers who deliver it to the destination.
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?
Now let’s dive into a comparison of the most common video streaming protocols, and the use cases of each.
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 the video will be sent to the CDN using the RTMP protocol, but then it will be delivered to the end viewer in another protocol, usually hls streaming protocol.
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 being rapidly phased out.
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.
Dynamic Adaptive Streaming over HTTP (MPEG-DASH)
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 be delivered 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 some major broadcasters. It will be the standard technology in the future. However, that time has not yet arisen due to some licensing issues and compatibility.
Microsoft Smooth Streaming (MSS)
The next streaming protocol we’ll look at is Microsoft’s Smooth Streaming. Originally introduced in 2008, Smooth Streaming 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.
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 Smooth Streaming as a primary video streaming protocol.
HTTP Dynamic Streaming (HDS)
Adobe’s entry into the streaming protocol world is HDS, the successor to RTMP. HDS is also a flash-based streaming protocol, but it 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. However, latency it isn’t as low as with RTMP due to the fragmentation and encryption process. That makes it popular for streaming sports and other events where seconds matter.
Who should use HDS?
Generally, we don’t recommend that you use HDS. Flash support is getting too tenuous for any broadcaster to rely on this technology to reach their audience. Building your web video around Flash player is simply a bad idea.
HTTP Live Streaming (HLS) protocol: safest bet (for now)
The final video streaming protocol we’ll highlight here is HTTP Live Streaming, or HLS. Originally developed by Apple to enable them to drop Flash from iPhones, HLS has become the most widely used streaming protocol.
Desktop browsers, smart TVs, and both Android and iOS mobile devices 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.
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. Data shows that only 8.2 percent of 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.
HLS is the default streaming protocol used at DaCast.
Our recommendations are simple: pretty much everyone should stick to using the HLS video streaming protocol. Some users may find other protocols better for their needs, but HLS is the best option for almost everyone these days. However, MPEG-DASH is the up-and-coming option. Look for growing adoption of that protocol in the near future. 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 the best way to go.
Our aim in this article was to demystify streaming protocols: what they are, how they work, and which are the best to use. Hopefully we’ve done that, and educated you in the process. 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.
Considering the DaCast platform, but not 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 making a commitment. Click the button below to start streaming live today.
Thanks for reading, and as always, good luck with your live streams.
By Max Wilbert.