What you need to know about iPhone HTTP video streaming


iOS video hosting overview at gravLab

m3u8 / HTTP Live Streaming (HLS)


HLS video really got its toe hold in the industry when Apple made their iOS quicktime player HLS compatible as an integrated built-in.


Since iPhone OS 3.0+ and forever after, the built-in video player supports adaptive bit rate switching during streaming playback and gravityLab’s iOS video hosting. Apple requires HTTP Live Streaming (for both live and on-demand) for app integration. Why HLS? The switching.


so when a user watches a video, the iPhone player will detect the user’s available bandwidth and automatically switch to the appropriate bit rate during playback. This process provides for a much better viewing experience: higher quality (bit rate) videos are streamed for faster WiFi connections while lesser quality videos are streamed in low bandwidth situations such as is the case with AT&Ts 3G network.  Apple’s version of adaptive bit rate streaming can be utilized by gravlab’s HTTP CDN platform.


This is Apple’s HTTP Live Streaming. To take advantage of this, you need to create a set of files including a master .m3u8 streaming instruction file, a .m3u8 file for each bitrate you have specified, and all the video segments (MPEG .ts) in the duration specified. The rest is the ghost of Steve Jobs magic.


One of the drawbacks of many kinds of streaming media is that there are special protocols and non-standard ports used, which can lead to several different types of failures, and ultimately, a lot of frustration. When Apple set out to include a streaming video feature on their iPhone OS, they decided to use HTTP for several reasons. First and foremost, they could avoid many of the pitfalls of typical streaming media setups. For example: RTSP streams are often rejected by overzealous firewalls and routers, which means that many viewers who reside behind corporate/office firewalls will not be able to view your video stream.


Hypertext transfer protocol, also known as HTTP, is universally supported, and is much more effective at bypassing firewalls and routers that may otherwise deny traffic that use MMS or RTSP protocols. Why is this? Because almost all internet traffic uses the HTTP protocol, so if a router or firewall rejected HTTP traffic, they would be blocking out most of the internet.


The shining benefit of HTTP streaming is that it allows content distributors to avoid the costly implementation of traditional streaming media servers, which is a huge benefit to small companies just getting started in streaming video. Although it works in a completely different way than RTSP, the effect is still the same. With on-demand video (as opposed to live video), the user can skip forward before the video is finished downloading, much like other types of on-demand streaming. And with live video, the viewer cannot skip forward at all, which reproduces the experience of watching a live broadcast on TV.


So, how do content producers utilize this technology? One option is to purchase a monthly iPhone & mobile streaming video hosting package with GravityLab Multimedia, which makes it easy to get up and running with HTTP streaming.


How our iPhone streaming video hosting works


  1. You purchase an account
  2. Gravitylab send you a welcome e-mail with instructions on how to upload your files with any FTP program, and how to start a live broadcast

On-demand streaming:

  1. You upload a video file, and it is available for viewing instantly
  2. You link to the video via your your web site
    e.g. http://stream.gravlab.net/003119/ios/gravitylab.m3u8

Live broadcasting on iPhone 3.0 and later:

  1. You Download Quicktime Broadcaster, a free program for broadcasting video from any computer with OS X.
  2. You configure the broadcaster according to your welcome e-mail, and then press the Broadcast button
  3. You link viewers to your live m3u8 file and then your streaming video to iOS

File requirements for iOS Video Hosting

  • Container format: .mp4, .m4v, .mov
  • Dimensions: 480×320
  • Codec: H.264 (Low-Complexity version of the H.264 Baseline Profile OR Baseline Profile up to Level 3.0)
  • Audio: AAC-LC audio up to 160 Kbps, 48kHz, stereo audio
  • Frame rate: up to 30 fps
  • Bit rate: up to 1.5Mbps (200Kbps recommended)

More reading:

Apple’s official HTTP streaming documentation
RTSP/RTP/RTCP Streaming media overview
MMS Streaming media overview


7 karma points