Functionality of RTSP
The Real Time Streaming Protocol (RTSP) is a network control protocol designed for use in entertainment and communications systems to control streaming media servers. Developed by experts from RealNetworks, Netscape and Columbia University around 1996,
the protocol is used for establishing and controlling media sessions between end points.
Clients of media servers issue “remote control” style commands, such as play (when to begin delivery), record, and pause. This facilitates real-time control of the media streaming from the server to a client.
More specifically, RTSP is used by the client application to communicate to the server information such as the media being requested, the type of application the client is using, the mechanism of delivery (unicast or multicast, UDP or TCP), and other important control information commands such as DESCRIBE, SETUP, and PLAY.[Source]
It should be noted that RSTP does not actually transport the media. Most RTSP servers use the Real-time Transport Protocol (RTP) in conjunction with Real-time Control Protocol (RTCP) for media stream delivery. However, some vendors implement proprietary transport protocols. The RTSP server software from RealNetworks, for example, also used RealNetworks' proprietary Real Data Transport (RDT).
As RTP is able to be run over UDP this is one of the factors that allows it to have low latency as opposed to HTTP based protocols. We have covered this in greater detail in other posts.
What is RTSP used For?
As it was designed from the ground up to send low latency streams, Real Time Streaming Protocol (RTSP) is well suited for use cases that require real-time communication between subscribers and broadcasters.
Since IP cameras have been around since the 90s they were one of the earliest adopters of RTSP for streaming, and thus they still continue to use it today. If it ain’t broke, don’t fix it. There are various uses for IP cameras. Traffic monitoring for reporting or enforcement, security surveillance, and even home monitoring. Some companies offer monitoring services to check-in on pets while you are away from the house. There are also military use cases for IP cameras concerning command-control systems. These often make use of drones as well which is detailed further down.
As we already mentioned, the vast majority of IP cameras produce an RTSP stream. As such many of the old, legacy security systems were using Windows-based native applications that directly consumed the RTSP stream. However, as mobile phones are expanding in functionality –thereby expanding utilization– and Windows devices face more competition there is an increasing demand for switching to a browser-based system. There’s only one problem: browsers do not directly support RTSP.
Fortunately, you can restream an RTSP feed and transfer it to browser supported WebRTC using the Red5 Pro restreamer plugin. As the restreamer will not affect latency, it is an excellent option for switching from a purely Windows-based application to a more user-friendly and easily run browser-based app.
Other IoT Devices
Drones enjoy widespread use expanding well beyond a backyard hobby. Smartphone or laptop controlled drones can be guided with the assistance of a live video feed. Firefighters and U.S. Border patrol agents have used drones to conduct operations. Additionally, aerial surveying is useful for maintaining infrastructure by examining power lines, and roads or even conducting geologic surveying. RTSP support is often built right into the drone software and is a common way to access a drone’s video feed.
Novetta, another one of Red5 Pro’s clients, use video feeds from body cameras, drones, and many other devices to scan an operational area for targets of interest and coordinate a tactical response. This allows for real-time communication and intelligence gathering for important situational awareness. Novetta’s command-control system is crucially dependent upon real-time latency RTSP streams.
As previously mentioned, body cameras are another use case gaining more and more demand. Body cams help police and first responders conduct important security operations. They depend upon real-time information to determine what is happening and respond to the situation on time. Once again RTSP is a typical way that body cameras communicate with the outside world.
Lastly, there’s everyone’s favorite: robots! From underwater submersibles, radiation tests, to bomb diffusing, robots are being created for a variety of applications. Since RTSP is a well established and very low latency solution for streaming, robot based computer systems will typically use it for video delivery. These robots use video to allow the operator to control the robot and perform a wide variety of operations. Among the most impactful are medical robots such as telepresence and remote surgery robots which allow doctors to communicate and work in places they are unable to travel.
While our HTML5 SDK uses WebRTC to send live video through a browser, Red5 Pro uses RTSP to send streams to our mobile SDK. This is due to the fact that RTSP is much much simpler, and does not need to perform the extensive signaling and NAT traversal techniques that webRTC uses.
Originally designed as a peer-to-peer system, WebRTC uses WebSockets and exchanges ICE candidates. RTSP, on the other hand, was designed with a client-server model in mind. As it is much easier to connect to a server it does not have to do all the WebRTC signaling to create a direct connection. With each WebRTC connection, you have to maintain a separate signaling WebSocket connection. With RTSP it's a single connection per subscriber/publisher client.
Without the higher overhead of WebRTC, RTSP puts less strain on the server and thus allows for more connections.
If RTSP is so much simpler why use WebRTC?
As mentioned earlier, when streaming through internet browsers, Red5 Pro will use WebRTC. Both WebRTC and RTSP use RTP as the transport protocol. For those reading closely, this begs the question, “If WebRTC is more CPU intensive than RTSP and they both use the same transport protocol, why use WebRTC?” The answer is that browsers don’t support RTSP which is why we need the restreamer plugin to display the stream to the browser.