Audio/Video streaming an all client platforms

Nowadays, people use all kinds of gadgets to access content on the internet. Almost all of these gadgets can be grouped in the following categories:

  • Desktop
    • Windows
    • Linux
    • Apple (Mac)
  • Mobile
    • Apple (iPod, iPad & iPhone)
    • Android
    • Windows mobile

It sounds great to have your customers access your content from anywhere they want, but this often creates problems when you offer video streaming services. As usual, the process of standardization is going more slowly than we’d like, so we are stuck with using different protocols for different platforms. Luckily for us, all these platforms can be covered with the right combination of protocols and the appropriate fallback setup:

  • Windows desktop: RTMP, HDS
  • Linux desktop: RTMP, HDS
  • Mac desktop: HLS
  • Apple mobile: HLS
  • Android: HLS with RTSP/RTP fallback for older versions
  • Windows mobile: Smooth Streaming

Once you offer streaming via all of these protocols, you can serve different formats based on the client platform and hide the complexity from customers. If possible, try to use a single streaming platform for all protocols.

However, in order to offer the same service via all protocols, it would be wise to utilize at least similar protocols. The best way to do this is to go HTTP. HLS, HDS and Smooth streaming are all HTTP-based, which allows for easier development and configuration. It also gives you a wider reach, since HTTP traffic is allowed almost everywhere. Non-HTTP based protocols can be used as fallback solutions.

MPEG-DASH is another HTTP-based streaming protocol which is not vendor specific as the rest. It is a relatively new protocol which is very promising, so it would be a good idea to use it at much as you can. This will future-proof your deployment and allow you to create your service in the proper way immediately, rather then redesigning the setup later in order to accommodate the new standard.

One more component to pay attention to is the player. There are three advices we can give you:

  1. Use native support as much as you can. Natively supported protocols will provide the best user experience and add the least amounts of bugs.
  2. When you have to use a separate player, try to choose a software that covers all or most platforms. This will provide a consistent user experience across different platforms and simplify development and support.
  3. Try to utilize HTML5 as much as you can. Adobe flash is being pushed out from the streaming market, while HTML5 support is growing. Some players offer both Flash and HTML5 based versions.