7 responses

  1. "
    March 14, 2013

    This post is amazing. I realy love it!

  2. "
    April 6, 2013

    Hey John, your posts are a great help in understanding the internals of HDS and how it works – many thanks for putting them up. I have just started getting into HDS and learning about the file, metadata and transport formats (I just finished writing a basic ISO BMFF decoder so I can see what the MP4 looks like before and after F4F packaging).

    Sorry if this is somewhat off-topic to this particular post, but one thing that sticks in my mind is that Flash cannot do HTTP byte range requests (without a custom HTTP client implementation using sockets, and even then requiring a socket policy server), and yet it is the default option to create a single segment F4F file (which surely would necessitate byte range requests for streaming). All the bootstrap data in the world can’t help Flash get around this HTTP request limitation, do you know what mechanism it uses?

    • "
      John Crosby
      April 8, 2013

      In short, the bootstrap data isn’t for byte rage requests. The bootstrap data contains information necessary to request fragment for a timecode from the server. Using the data in the bootstrap you can build a table of URLs that map to time codes. Then you can request a fragment using the URL from the server. THe HTTP Origin Module (an Apache module) is responsible for identifying and returning the fragment.

      FYI, you can see the client-side of things at work in the org.osmf.net.httpstreaming.f4f package of the OSMF framework.

      • "
        April 8, 2013

        Hi John, thanks for your reply back! I did some reading of the OSMF source over the weekend and found the time-period/byte-range/fragment translation code which then needs to be decoded by the Origin Module. It’s a bit sad that Adobe couldn’t build native HDS support into Flash and do away with this custom mechanism to get around Flash’s inability to do byte-range requests, but there you go.

        Now at least I understand how it works. Cheers!

  3. "
    October 1, 2013

    Hi John, useful post, thanks! I’m playing with using the alternate media streams in a manifest at the moment, OSMF specifically excludes anything other than audio or video types, but I’m wondering if there’s a clean way of muxing in alternate streams with a type of ‘text’ – so subtitles can be carried in a separate stream, for instance. I’ve gotten so far with updating OSMF to cope with this, but now I’m stuck at the nitty gritty – I can get the text-stream bootstrap, but then…nothing…! I’m trying to mirror the way LBA works..got any ideas?

    • "
      John Crosby
      October 8, 2013

      Sorry Chris, sounds like you’re kickin’ some ass. I don’t have any ideas for you though. :\

  4. "
    Alf P. Steinbach
    April 12, 2015

    Code (reference) would be nice. Or am I just not seeing it? Anyway, until then I’m using the https://github.com/K-S-V/Scripts/wiki PHP script. Works nicely for downloading a stream and converting to single video file. :) And yes, it must be parsing the boostrap info, because it downloads given an URL to the metadata.

Back to top
mobile desktop