Glued
A Ruby client to download HDS recorded fragments and glue them together. Live content isn't supported.
The primary aim is to download video on demand content. Encrypted DRM content will download, however it will not playback unless your player accomodates it and a license is available for the media.
HDS is designed for live media that dynamically adapts to network conditions and avoids buffering. It uses the HTTP protocol to benefit from existing network infastructre (ie CDNs). It is similar to MPEG-DASH and HLS.
References
Specification Documents
Code
- OSMF httpstreaming (AS3)
- OSMF f4mClasses with F4MLoader as the entry point. (AS3)
- HDS Union (perl)
- K-S-V Scripts (php)
Etc
Questions / Answers / Guesses
A box is a convention within a stream of bytes. Each box starts with a header, which describes length and type, followed by the data in the box.
Abbreviations
HDS - HTTP Dynamic Streaming
F4M - Flash Media Manfiest
F4F - Flash Media File fragment
F4X - Flash Media Index file
F4V - H.264/AAC based content
FLV - Other flash supported codecs
How it works
Load the f4m manifest
- Bad url? go 💥
- Detect any alternate bitrate manifests? go 💥
- Detect a live stream? go 💥
- Automatically picks the higest bitrate stream
Builds a list of fragment urls
Download each fragment
- Fragment fails? go 💥
Glue it to the previous fragment
Repeat till done