RTMP, or Real-Time Messaging Protocol, used to be the main protocol used for sending and receiving video over the internet (including for streaming). While nowadays there are other popular video-streaming protocols like Apple’s MPEG-DASH, Adobe’s HDS, HLS, and more, RTMP remains one of the most widely-used streaming protocols in 2020 and will remain so for at least the next few years.
RTMP is a TCP-based protocol that was originally developed by Adobe to power the once-popular Adobe Flash Player. At its peak, Flash powered 98% of internet browsers all over the world, boosting the popularity of the RTMP as a reliable, low-latency protocol that allows smooth streaming experiences.
Due to its past popularity, most encoders today support RTMP, and most major video social sharing platforms like YouTube, Facebook, Periscope, and Twitch do support RTMP.
Here, we will discuss the RTMP protocol and how you can use RTMP to power your live streams.
RTMP: Basic Overview
RTMP, as discussed, is a content delivery protocol (or specification) developed by Adobe. It was originally developed for the transmission of audio, video, and other content between a streaming server and the Adobe Flash Player. It used to be a proprietary specification only for Flash, but RTMP is now an open specification.
Video codecs: H.264, VP6, VP8, Screen Video v1 and v2, Sorenson Spark®
Audio codecs: AAC and AAC-LC, HE-AAC+ v1 and v2, Speex, MP3
Support: currently limited to Flash Player, Adobe AIR, and RTMP-compatible video players, no longer supported natively by most browsers
Main advantages: low (5 seconds) latency, minimal buffering, reliable delivery
Main downsides: not optimized for delivery quality and scalability
RTMP can send video stream data to both web apps and mobile apps, and is widely popular due to the following benefits:
A mature, widely adopted technology
As we’ve mentioned, RTMP has been around for more than a decade now, and many web/app developers are already familiar with implementing RTMP servers. RTMP also enables the viewers to view different formats and video quality depending on their needs and bandwidth availability.
Popularity and familiarity
Most developers are familiar with RTMP as a protocol, and RTMP is not a hardware-dependent specification. Meaning, it is compatible with most major OSs from Windows, macOS, iOS, Android, and Linux. Chances are, your existing device would support RTMP.
RTMP is designed for live streaming
RTMP is specifically optimized for live video and audio data transmission and is famous for using the port 1935 TCP/UDP that allows low-latency streaming and minimizes buffering.
RTMP servers would automatically record live-streamed content so viewers (that came late) can view the videos from the beginning, or skip parts of the video anywhere they’d like. After the streaming is done, the video would also be recorded for viewing later.
How To Live Stream With RTMP
In general, live streaming your videos with RTMP would involve three main elements:
- The client: this is an entity that publishes the video content using the RTMP protocol to a server. If, for example, you are using an RTMP encoder to stream your videos via YouTube Live or Facebook Live, then you are a client.
- RTMP server: a server that receives the incoming stream. It will then process and encode the stream as required before broadcasting it to viewers. Viloud, for example, can act as an RTMP server.
- Viewers: anyone who can watch the video stream. The viewers must access the video content using a player that supports RTMP streams, but typically they will do it by accessing a website/app which already has an RTMP player embedded.
A common misconception is to think that RTMP is a video codec, but it is actually a specification/protocol that utilizes the H.264 video codec. Instead, RTMP is a TCP-based protocol and so it’s versatile enough to stream not only video but audio and various other types of content.
A key characteristic of RTMP is that it can split data and files into small chunks to allow a smoother transmission. It’s important to note that although RTMP is no longer the preferred protocol to deliver streams from servers to viewers; with newer protocols like HLS and MPEG-DASH are preferred, RTMP is still the default protocol for streaming your videos to the server (like Viloud Player, YouTube, or Facebook). In practice nowadays, RTMP would work together with protocols like HLS in ensuring an end-to-end seamless live streaming.
Typically an RTMP streaming would follow this workflow:
- The content from the video source (i.e. camera) is streamed to an RTMP encoder (hardware or software)
- The RTMP encoder would prepare the content for delivery
- After the file is encoded properly, it is then sent to a video hosting platform that would act as an RTMP server, like Viloud.
- It is then encoded for delivery to viewers, for example by using HLS
- The video is seamlessly streamed to viewers
Pros and Cons of RTMP Streaming
While RTMP, as discussed, is currently still the standard for delivering content from clients to the RTMP server, it is obviously not 100% perfect. Below we will discuss some pros and cons of RTMP streaming compared to other protocols:
- RTMP is an Adobe proprietary protocol, so it is supported by various Adobe products. Flash-based players are still widely available on many websites, and they will natively support RTMP. In short, you won’t have much problem finding a player that supports RTMP.
- It is designed and optimized for live streaming, so it’s very reliable.
- Can automatically adjust video quality and format based on the viewers’ device, screen size, available bandwidth, and other factors.
- Has broad DRM support since RTMP is widely adopted
- RTMP is a passive protocol, so active client connection won’t limit it
- Not supported by HTML5 players that are now very popular
- Doesn’t support newer video codecs (limited to H.264)
- RTMP streaming typically involves streaming the data to the server/player and not directly to the player, which might require higher bandwidth than the video’s actual bitrate. This might cause stuttering when there’s a drop in bandwidth
- Port 1935 is non-standard, so it might be blocked by firewalls. While there are workarounds for this issue, in most cases it will put an extra burden on the server.
RTMP is still the standard protocol for delivering video content between creators and servers/ video hosting platforms, so even with the decline of Flash player support, RTMP is here to stay.
Getting a video hosting service that supports RTMP, like Viloud, is very important if you want to ensure a stable, high-quality live broadcast whether on your website or on third-party platforms like Facebook Live or a Roku Channel.