VL Group

Rhymba v3.6 Documentation

Flash vs. HTTP Progressive Streaming vs. HLS

Rhymba Streaming provides three different streaming methods: Flash, HTTP progressive and HLS. Which is right for you?

Pros & Cons of Flash

The two big pluses when dealing with Flash streams via Adobe Media Server are security and functionality. Streaming via Flash means that you're using the RTMP (and soon-to-be RTMPE) protocol, a semi-closed source protocol relied upon by content providers for decades. Streams are intelligently buffered & served to client apps.

Of course, though, a major downside to Flash streaming is its lack of reliable mobile compatibility. As most people know, iOS devices flat-out don't support Flash, and with Adobe deprecating Mobile Flash, its future on Android and other platforms is in doubt. On top of that, several devices that did support Mobile Flash struggled with streams. It wasn't an ideal situation.

Further, using Flash streaming even in a web-based media application naturally requires the use of the Flash plugin, which many tech-savvy users often block. And, with Safari running on the new Mac OS X Mavericks, the default setting is to prompt users to activate plugins, leading to a potential scenario where your users will not enable Flash on your application.

Is HTTP streaming a panacea, however? Not quite.

Pros & Cons of HTTP Progressive Streaming

First, a clarification: when we discuss HTTP Progressive Streaming, we're really talking about what amounts to a fancy buffered download, not HTTP Live Streaming. Unlike Flash streams, users can't easily skip around an HTTP progressive stream — they can only jump to a portion of the file that's been loaded. Also, tech-savvy users can relatively easily discover methods to capture & save the stream; in fact, several extensions for Firefox and other browsers exist to make just that as easy as a single click.

But, if you want to stream to a mobile app, unless you can reverse-engineer RTMP or use an RTMP library, HTTP progressive streaming is the way to go. Also, in terms of ease-of-implementation, it doesn't get much simpler than throwing an HTTP URL to an MP4 or MP3 file at a player (discussions about cross-browser HTML5 vs. other plugin-based approaches aside).

Pros & Cons of HLS (HTTP Live Streaming)

HTTP Live Streaming is a protocol implemented by Apple Inc. as part of their software suite. It works by breaking the overall stream into a sequence of small HTTP-based file downloads, each downloading and loading one short chunk of an overall potentially unbounded transport stream. The biggest advantage of using this protocol is on mobile. Since this protocol was implemented by Apple it naturally works on iOS without the use of libraries, wrappers, or the use of an App. Android has made strides to implement this into their software similarly, however Android being so broad, some flavors HLS works on it flawlessly, others there can be problems.

The biggest downside with HLS is that it is not an all-around solution. The only desktop browser that this works for to date is Safari on Mac OS X. There are libraries and Javascript tricks to have this work on other desktop players, but it's not an out-of-the-box solution for computers as it is on mobile.

So, Which Is Best?

Well... neither of the three. We've used all three when dogfooding our APIs, depending on the implementation. Some implementations require mobile compatibility, or are mobile-only; these are naturally HLS or HTTP streams. Others have more stringent security requirements from the content providers, and are browser-based; these implementations end up being Flash/RTMP.

In other words, it's going to depend on your target audience, your business requirements, and your technical expertise. We can always discuss the two options with you if you have further questions.

Fortunately, however, regardless of which stream delivery protocol you select, your entry point is exactly the same: the Content API's GetStream method.