Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 267175
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 11, 20262026-05-11T23:30:28+00:00 2026-05-11T23:30:28+00:00

Apple has included HTTP Adaptive Bitrate Streaming in the iPhone OS 3.0, in particular

  • 0

Apple has included HTTP Adaptive Bitrate Streaming in the iPhone OS 3.0, in particular Safari handles this automatically.

I’d like to play with this in a low cost manner, but I expect it’ll require a custom HTTP server in the worst case, and interesting PHP/etc scripting in the best case.

But first I need to know what the protocol differences or standard is. HTTP is reasonably simple as a protocol, but adaptive bitrate means the file size is different, the chunk locations are different at different bitrates, etc. For instance, does the client tell the server anything special about the stream as it’s downloading, or is it all handled on the server side?

Eliminating buffering pauses for the end user is very attractive for both live and pre-recorded video streams, and doing both over HTTP is even better given many networks and governments are limiting non port 80 traffic.

  • What are the technical details for HTTP adaptive bitrate streaming, especially Apple’s implementation?
  • Where is this best implemented – part of the HTTP server itself, part of a mod, in a script…?

  • What changes are required for the client side, if one were to implement this in an application?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-11T23:30:28+00:00Added an answer on May 11, 2026 at 11:30 pm

    Update

    Looks like Apple made an IETF draft proposal, and some people are already working on segmenters:

    HTTP Live Streaming – draft-pantos-http-live-streaming-01
    http://tools.ietf.org/id/draft-pantos-http-live-streaming-01.txt

    iPhone HTTP Streaming with FFMpeg and an Open Source Segmenter
    http://www.ioncannon.net/programming/452/iphone-http-streaming-with-ffmpeg-and-an-open-source-segmenter/


    Looks like the HTTP server acts simply as a dumb HTTP server. Poking around the example website provided by Akamai gives me enough info to get started with static content streaming.

    http://iphone.akamai.com/

    The whitepaper ( http://www.akamai.com/dl/akamai/iphone_wp.pdf ) provides information about the transport stream encoding, so the .ts streams are straightforward.

    The encoder (or a separate segmenter
    process) will produce H.264/AAC
    content in a sequence of small content
    segments, in MPEG-2 TS format (.ts).
    There is also an M3U8 index file that
    references the segments; in the case
    of live content the M3U8 is
    continuously updated to reflect the
    latest content.

    H.264 Encoding should be single-pass
    Baseline Profile, frame re-ordering
    disabled. Key frames are suggested
    every 5 seconds, ideally an even
    divisor of the chosen segment length.

    The website provides an M3U8 file, which is simply an M3U playlist, but in the UTF-8 character encoding format.

    That file then links to an M3U8 file for each bitrate. I assume they must all have cuts at the same positions (every 2 or 10 seconds, for instance) so that switching can be seamless. It appears to be completely client driven – the client decides how to measure bandwidth and which version it’s going to get.

    The contents of the main file are:

    #EXTM3U
    #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=860000
    hi/prog_index.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=512000
    med/prog_index.m3u8
    #EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=160000
    lo/prog_index.m3u8
    

    Then each of the other files are:

    hi/prog_index.m3u8

    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10, 
    fileSequence0.ts
    #EXTINF:10, 
    fileSequence1.ts
    #EXTINF:10, 
    fileSequence2.ts
    #EXTINF:10, 
    fileSequence3.ts
    #EXTINF:1,  
    fileSequence4.ts
    #EXT-X-ENDLIST
    

    med/prog_index.m3u8

    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10, 
    fileSequence0.ts
    #EXTINF:10, 
    fileSequence1.ts
    #EXTINF:10, 
    fileSequence2.ts
    #EXTINF:10, 
    fileSequence3.ts
    #EXTINF:1,  
    fileSequence4.ts
    #EXT-X-ENDLIST
    

    lo/prog_index.m3u8

    #EXTM3U
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:0
    #EXTINF:10, 
    fileSequence0.ts
    #EXTINF:10, 
    fileSequence1.ts
    #EXTINF:10, 
    fileSequence2.ts
    #EXTINF:10, 
    fileSequence3.ts
    #EXTINF:1,  
    fileSequence4.ts
    #EXT-X-ENDLIST
    

    This works with the HTML 5 video tag:

    <video width="640" height="480">
       <source src="content1/content1.m3u8" />
    </video>
    

    There are still a lot of unanswered questions, but this is probably enough to get started.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

every iPhone and iPod Touch has got the Apple Addresses App ... when you
I see that apple has implemented a max size for the actual application but
It's clear that Apple has an OpenCL implementation based on Clang and LLVM. There's
Many people are saying that Apple has restricted it for better performance. If so
Would anyone one know if Apple has restrictions on providing a user feedback/bug report
I was dumbfounded today, when I read that Apple has allowed PhoneGap apps for
The Apple dev site makes it look as tho it has all the tools
With all the normal Apple updates applied (I.E. No additional effort has been made
Apple has a nice little tutorial for making a simple master-detail interface. Interface Builder
Now that Apple is running some kind of static analysis to automatically check for

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.