RTSP/RTMP and Adaptive HTTP
RTSP/RTMP Streaming
Original Quote: http://www.longtailvideo.com/support/blog/19578/what-is-video-streamingBecause of the downsides of Progressive Download, RTMP/RTSP Streaming is widely used by professional media organizations like Hulu. This method uses specialized webservers that only deliver the frames of a video the user is currently watching. No data is downloaded in advance and data a user has seen is immediately discarded.
The most widely solution is used is RTMP (Real Time Messaging Protocol), the streaming protocol of Flash. It is supported by servers such as FMS and Wowza and most CDNs (but not by regular webhosters). HTML5 does not include a dedicated streaming protocol, nor does the iPad/iPhone. Android has support, for RTSP (Real Time Streaming Protocol). Unfortunately, RTSP is not widely supported by servers and CDNs.
This lack of support, especially on the server side, is the biggest drawback of RTMP/RTSP Streaming. Most publishers do not want to maintain expensive, dedicated servers to stream their videos. Additionally, the dedicated protocols (RTMP and RTSP) are often blocked by corporate firewalls.
On the plus side, RTMP streaming can change video quality mid-stream. This allows for optimal playback quality in the fullscreen and WiFi/3G scenarios described above. However, if the connection speed drops below the minimum bandwidth needed for the video, playback will be continuously interrupted. Unlike progressive download, users cannot pause a video and wait for enough data to download to ensure smooth playback.
RTSP/RTMP Streaming is very useful for Live streaming as it allows for continuous update of video data whilst keeping the Buffer on the clients computer empty and only topped up with a few seconds of video at any one time.
RTSP isn’t very useful in most client situations due to the lack of support from many applications. A good example is that is not compatible with Flash, Silverlight or iOS, three of the biggest clients out there. A recent project of mine required use of the RTSP protocol and this limited my choice of Player to the Quicktime Plugin, which worked well on Mac’s and intermittently on Windows. Considering iOS also uses Quicktime’s code, I assumed it would work there too, but to be expected iOS’s Quicktime is extremely cutdown and does not support RTSP. More about its limitations are discussed in this blog post: IP Stream: Hitting A Brick wall
Adaptive HTTP Streaming
Original Quote: http://www.longtailvideo.com/support/blog/19578/what-is-video-streamingAdaptive HTTP Streaming is a fairly new streaming format. It attempts to join the merits of RTMP/RTSP Streaming (bandwidth efficiency, quality switching) with those of Progressive Download (no special servers or protocol needed). Adaptive HTTP Streaming works by storing your videos on the server in small fragments (a few seconds each). The player then glues these fragments together into a continuous stream.
At present, Adaptive HTTP Streaming is supported by both Flash and the iPad/iPhone. Android supports it as of version 3 and support in HTML5 is currently under development. Since Adaptive HTTP Streaming leverages standard webservers, it is supported by web servers and CDNs alike.
Although Adaptive HTTP Streaming eliminates many of the downsides of RTMP/RTSP Streaming and Progressive Download, it still has issues of its own, the biggest being the lack of standardization. Because it is a new technology, there is no single, widely used implementation. The most popular is currently Apple’s HLS (HTTP Live Streaming), which is supported by the iPad/iPhone and Android 3.0. However, both Adobe and Microsoft have competing offerings (Zeri & Smooth) and the MPEG consortium is working on a standard named DASH.
It’s also worth noting that none of the Adaptive HTTP Streaming implementations work with regular MP4 files. They all require your files to be converted from a regular MP4 into a specific fragmented format. Apple, Microsoft and Adobe each supply a tool for this, but support for these formats doesn’t exist in regular video editors and transcoding tools (yet).
Adaptive looks like the best solution for live streaming as it combines the ease and compatibility of progressive download with the efficiency RTSP and RTMP. However there is still along way to go as this protocol is still in it infancy with many different approaches to the same problems. HLS from Apple seems to clear winner at the moment with the support of many clients and devices.