Distribution Components
The distribution system is a web server or a web caching system that delivers the media files and 
index files to the client over HTTP. No custom server modules are required to deliver the content, 
and typically very little configuration is needed on the web server.
Recommended configuration is typically limited to specifying MIME-type associations for 
.M3U8
files and 
.ts
files.
File extension MIME type
.M3U8
application/x-mpegURL
.ts
video/MP2T
Table 1. Recommended MIME-type configuration
Tuning time-to-live (TTL) values for 
.M3U8
files may also be necessary to achieve desired caching 
behavior for downstream web caches, as these files are frequently overwritten, and the latest version 
should be downloaded for each request.
Client Component
The client software begins by fetching the index file, based on a URL identifying the stream. The 
index file in turn specifies the location of the available media files, decryption keys, and any alternate 
streams available. For the selected stream, the client downloads each available media file in sequence. 
Each file contains a consecutive segment of the stream. Once it has a sufficient amount of data 
downloaded, the client begins presenting the reassembled stream to the user.
The client is responsible for fetching any decryption keys, authenticating or presenting a user 
interface to allow authentication, and decrypting media files as needed.
This process continues until the client encounters the 
#EXT-X-ENDLIST
tag in the index file. If 
no 
#EXT-X-ENDLIST
tag is encountered, the index file is part of an ongoing broadcast. The client 
loads a new version of the index file periodically. The client looks for new media files and encryption 
keys in the updated index and adds these URLs to its queue.
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
11
Pdf form save with reader - extract form data from PDF in C#.net, ASP.NET, MVC, Ajax, WPF
Help to Read and Extract Field Data from PDF with a Convenient C# Solution
cannot save pdf form in reader; html form output to pdf
Pdf form save with reader - VB.NET PDF Form Data Read library: extract form data from PDF in vb.net, ASP.NET, MVC, Ajax, WPF
Convenient VB.NET Solution to Read and Extract Field Data from PDF
how to save filled out pdf form in reader; extract table data from pdf to excel
Using HTTP Live Streaming
Session Types
The HTTP Live Streaming protocol supports live broadcast sessions and video on demand 
(VOD) sessions.
For live sessions, as new media files are created and made available the index file is updated. The 
updated index file includes the new media files; older files are typically removed. The updated index 
file presents a moving window into a continuous stream. Figure 4 shows a graphical representation of 
what is called a “Sliding Window Playlist” in the IETF Draft
[3]
. Whenever a new segment is ready, the 
index file is updated to include the newest segment and to remove the oldest one. This way the index 
file always contains the x latest segments. Apple recommends that x be larger than 3 so that the client 
can pause, resume and rewind for at least the duration of 3 segments (30 seconds by default).
Fig 4. Index file of a live session, updated for every new segment.
For VOD sessions, media files are available representing the entire duration of the presentation. 
The index file is static and contains a complete list of all files created since the beginning of the 
presentation. This kind of session allows the client full access to the entire program.
It is possible to create a live broadcast of an event that is instantly available for video on demand. 
To convert a live broadcast to VOD, do not remove the old media files from the server or delete 
their URLs from the index file, and add an 
#EXT-X-ENDLIST
tag to the index when the broadcast 
ends. This allows clients to join the broadcast late and still see the entire event. It also allows an event 
to be archived for rebroadcast with no additional time or effort.
VOD can also be used to deliver “canned” media. It is typically more efficient to deliver such 
media as a single QuickTime movie or MPEG-4 file, but HTTP Live Streaming offers some 
advantages, such as support for media encryption and dynamic switching between streams of different 
data rates in response to changing connection speeds. (QuickTime also supports multiple-data-rate 
k
k + 1
k + 2
k + 4
k + 5
k + 6
k + 3
Index file window 
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
12
C# PDF: PDF Document Viewer & Reader SDK for Windows Forms
SaveFile(String filePath): Save PDF document file to a specified path form (Here, we take a blank form as an open a file dialog and load your PDF document in
pdf form save with reader; change font size pdf form reader
VB.NET Image: How to Save Image & Print Image Using VB.NET
printing multi-page document files, like PDF and Word is used to illustrate how to save a sample RE__Test Public Partial Class Form1 Inherits Form Public Sub New
make pdf form editable in reader; how to extract data from pdf file using java
movies using progressive download, but QuickTime movies do not support dynamically switching 
between data rates in mid-movie.)
Content Protection
Media files containing stream segments may be individually encrypted. When encryption is 
employed, references to the corresponding key files appear in the index file so that the client can 
retrieve the keys for decryption.
When a key file is listed in the index file, the key file contains a cipher key that must be used to 
decrypt subsequent media files listed in the index file. Currently HTTP Live Streaming supports 
AES-128 encryption using 16-octet keys. The format of the key file is a packed array of these 16 
octets in binary format.
The media stream segmenter available from Apple provides encryption and supports three 
modes for configuring encryption.
1. The first mode allows you to specify a path to an existing key file on disk. In this mode the 
segmenter inserts the URL of the existing key file in the index file. It encrypts all media files using 
this key.
2. The second mode instructs the segmenter to generate a random key file, save it in a specified 
location, and reference it in the index file. All media files are encrypted using this randomly 
generated key.
3. The third mode instructs the segmenter to generate a random key file, save it in a specified 
location, reference it in the index file, and then regenerate and reference a new key file every n 
files. This mode is referred to as key rotation. Each group of n files is encrypted using a different 
key.
All media files may be encrypted using the same key, or new keys may be required at intervals. 
The theoretical limit is one key per media file, but because each media key adds a file request and 
transfer to the overhead for presenting the following media segments, changing to a new key 
periodically is less likely to impact system performance than changing keys for each segment.
Key files can be served using either HTTP or HTTPS. You may also choose to protect the delivery 
of the key files using your own session-based authentication scheme.
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
13
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. Append one PDF file to the end of another and save to a single PDF file.
extract data from pdf c#; export pdf form data to excel
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
this RasterEdge XDoc.PDF SDK, you can simply delete a single page from a PDF document using VB.NET or remove any page from a PDF document and save to local
how to save a filled out pdf form in reader; online form pdf output
Caching and Delivery Protocols
HTTPS is commonly used to deliver key files. It may also be used to deliver the content files and 
index files, but this is not recommended when scalability is important, since HTTPS requests often 
bypass web server caches, causing all content requests to be routed through your server and 
defeating the purpose of edge network distribution systems.
For this very reason, however, it is important to make sure that any content delivery network 
you use understands that the 
.M3U8
index files are not to be cached for longer than one media 
segment duration.
Stream Alternatives
Index files may reference alternate streams of content. References can be used to support 
delivery of multiple streams of the same content with varying quality levels for different bandwidths or 
devices. The client software uses heuristics to determine appropriate times to switch between the 
alternates. Currently, these heuristics are based on recent trends in measured network throughput.
The index file points to alternate streams of media by including a specially tagged list of other 
index files, as illustrated in Figure 5.
Fig 5. Alternate streams
Note that the client may choose to change to an alternate stream at any time, such as when a 
mobile device enters or leaves a WiFi hotspot.
.ts
Alt. A 
Index 
file
.ts
Alt. B 
Index 
file
.ts
Alt. C 
Index 
file
Index 
file
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
14
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
to extract single or multiple pages from adobe PDF file and save into a The portable document format, known as PDF document, is a widely-used form of file
extract pdf form data to excel; how to save a pdf form in reader
C# Image: Save or Print Document and Image in Web Viewer
or image, you can easily save the changes to DLL Library, including documents TIFF, PDF, Excel, Word string fileName = Request.Form["saveFileName"]; string fid
java read pdf form fields; how to make a pdf form fillable in reader
Failover Protection
If your playlist contains alternate streams, they can not only operate as bandwidth or device 
alternates, but as failure fallbacks. Starting with iPhone OS 3.1, if the client is unable to reload the 
index file for a stream (due to a 404 error, for example), the client attempts to switch to an alternate 
stream.
In the event of an index load failure on one stream, the client chooses the highest bandwidth 
alternate stream that the network connection supports. If there are multiple alternates at the same 
bandwidth, the client chooses among them in the order listed in the playlist.
You can use this feature to provide redundant streams that will allow media to reach clients even 
in the event of severe local failures, such as a server crashing or a content distributor node going 
down.
To implement failover protection, create a stream, or multiple alternate bandwidth streams, and 
generate a playlist file as you normally would. Then create a parallel stream, or set of streams, on a 
separate server or content distribution service. Add the list of backup streams to the playlist file, so 
that the backup stream at each bandwidth is listed after the primary stream. For example, if the 
primary stream comes from server ALPHA, and the backup stream is on server BETA, your playlist file 
might look something like this:
Note that the backup streams are intermixed with the primary streams in the playlist, with the 
backup at each bandwidth listed after the primary for that bandwidth.
You are not limited to a single backup stream set. In the example above, ALPHA and BETA could 
be followed by GAMMA, for instance. Similarly, you need not provide a complete parallel set of 
streams. You could provide a single low-bandwidth stream on a backup server, for example.
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
http://ALPHA.mycompany.com/lo/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=200000
http://BETA.mycompany.com/lo/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000
http://ALPHA.mycompany.com/md/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000
http://BETA.mycompany.com/md/prog_index.m3u8
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
15
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Description: Convert to DOCX/TIFF with specified zoom value and save it into stream. Parameters: zoomValue, The magnification of the original PDF page size.
extract data out of pdf file; export excel to pdf form
C# Create PDF from Tiff Library to convert tif images to PDF in C#
Description: Convert to PDF and save it on the disk. Parameters: Name, Description, Valid Value. Description: Convert to PDF and save it into stream. Parameters:
pdf data extraction open source; pdf form save in reader
4.Critical Comparison
Now that the HTTP Live Streaming protocol by Apple has been explained we can examine how 
it compares to two currently popular solutions: RTP/RTSP and Flash Media Streaming. For the tests I 
used a video clip from the 2009 documentary "Objectified" about industrial design. The clip shows an 
interview of Jonathan Ive and has the following characteristics:
Filename
Video Codec
Audio Codec
Dimensions
Duration
Filesize
jonathan_ive_design.mp4
H.264
AAC
480 × 270
0:05:50
24,6 MB
Table 2. Source video characteristics
I built a test website at http://streaming_test.andrewsblog.org that streams the same video using 
the three different technologies. Apple’s HTTP Live Streaming has two entries: one created using 
Apple’s tools and one created with an experimental open source toolchain. I did not buy a license for 
Adobe’s Flash Media Streaming Server so the flash version of the video is simply embedded from 
YouTube. The source code of the test website is available online on github
3
Ease of Setup
I will briefly describe the steps taken to setup the videos for streaming using HTTP Live Streaming 
with Apple’s developer tools and an experimental open source toolchain as well as using RTP/RTSP 
with the Darwin Streaming Server. Unfortunately the Adobe Flash Media Streaming Server could not 
be tested as the server software is proprietary and costs $995.
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
16
3
http://github.com/andruby/StreamingMedia-Test
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
extract data from pdf form; can reader edit pdf forms
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
extract pdf data to excel; pdf data extraction to excel
HTTP Live Streaming - Apple tools
After installing Apple’s HTTP Live Streaming developer tools
4
we only needed one command to 
convert the source video to a suitable format and segment it.
The first parameter (-t | -target-duration) is the desired duration of each segment. I chose 10 
seconds because that is the default. The second parameter (-f | -file-base) is the directory to store the 
media and index files. The command took only 3 seconds on a 1.8Ghz Macbook as no transcoding 
had to be done. Appendix 1 contains the index file generated by the tool.
The above command created the index file at path 
t_10/prog_index.m3u8 
and all 36 
segments at path 
t_10/fileSequenceX.ts
with X from 0 to 35. Embedding the stream into an 
html file is incredibly easy with the HTML5 
<video>
tag:
Because the segments and the index file are standard HTTP objects ready to be served by any 
web server, there is nothing more to do if you already have one. Apache, nginx, IIS, lighttpd, etc all 
work out of the box without the need for a special module or specific configuration.
The setup was really easy, the tools provided by Apple are well documented and all in all it took 
less than 4 minutes to put the stream online.
HTTP Live Streaming - Open Source tools
One downside of the tools Apple offers is that they only work on Apple’s platform. It might be 
possible to port them to Linux/BSD but that hasn’t been done to date. One open source developer, 
Carson McDonald
[4]
, has built an open source toolchain around FFMpeg, ruby and libavformat that 
does everything and more than Apple’s tools. The project is available online on github
5
under the 
GPLv2 license. 
mediafilesegmenter -t 10 -f t_10/ jonathan_ive_design.mp4
<video src='t_10/prog_index.m3u8' controls='on'>
Video tag not supported
</video>
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
17
4
https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20389
5
http://github.com/carsonmcdonald/HTTP-Live-Video-Stream-Segmenter-and-Distributor
I used this toolchain on a FreeBSD system to built a multirate stream with 3 quality levels at 
bitrates of 128kbps, 386kbps and 512kbps. The configuration file used for the toolchain is included in 
Appendix 2 and the resulting index files in Appendix 3.
Using this toolchain took a little longer than Apple’s tool as it had to transcode the input video in 
3 different bitrates. Nevertheless, setting up the video for streaming only took about 10 minutes. For 
more information visit the developers project page
6
.
RTP/RTSP - Darwin Streaming Server
Installing the open source Darwin Streaming Server (DSS) on FreeBSD is staight forward with the 
portinstall
or 
pkg_add
command. 
To configure the server I had to create a user with the 
qtpasswd
command and add the user to 
the admin group in 
/usr/local/etc/streaming/qtgroups
 When the server is started a 
Setup Assistant Wizard is available though a web interface on port 1220.  The assistant suggested to 
setup streaming on port 80 to stream through firewalls. However, this might interfere with any web 
servers installed. I needed to bind the web server to one IP address and DSS to another.
The biggest issue however was that media files have to be “hinted” in order to be streamable by 
DSS over RTSP. I had to install the toolkit from MPEG4IP project
7
in order to hint the source video. 
Installing that package on FreeBSD took 20 minutes.
“Hinting” the 
.mp4
file required these 2 commands:
Embedding the stream into our test website was harder, and doesn’t work with FireFox so a link 
to open the stream with an external player was added.
Time to setup the video stream: ~1 hour
mp4creator -hint=1 jonathan_ive_design.mp4
mp4creator -hint=2 jonathan_ive_design.mp4
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
18
6
http://www.ioncannon.net/projects/http-live-video-stream-segmenter-and-distributor
7
http://www.mpeg4ip.net
Compatibility
One of the compatibility issues that originally impeded the growth of RTSP was the fact that it 
runs on a port number (554) which is often blocked by consumer firewalls. Most RTSP servers offer 
the functionality to tunnel RTSP communication over the same port as HTTP (port 80). We setup 
DSS to use this function to minimize firewall issues. For the same reason, the communication protocol 
of the Flash Media Streaming Server, RTMP, is encapsulated within HTTP requests. 
HTTP Live Streaming natively runs on the HTTP port and thus has no firewall issues. This is one 
of the main motives why Apple developed the protocol for it’s mobile internet devices.
We opened the test website ( http://streaming_test.andrewsblog.org ) with several different 
browsers on 3 separate platforms and tested if each of the technologies worked. The results are 
displayed in Table 3.
HTTP Live Streaming
RTP/RTSP
Flash Media
Safari 4.0.4, MacOS 10.6.2
FireFox 3.5.7, MacOS 10.6.2
Chrome 4.0.249, MacOS 10.6.2
FireFox 3.5, Vista SP1
IExplorer 8, Vista SP1
iPhone 3.1.2
yes
yes
yes
external player
external player
yes
external player
external player
yes
no
external player
yes
no
external player
yes
yes
no
redirected*
*YouTube automatically sends an alternative HTTP Live Stream to iPhone users.
Table 3. Compatibility test
It is clear that the winner of this test is Flash Media, as it could be played in every situation. 
Important to note here is that YouTube chooses to offer HTTP Live Streams for iPhone visitors. 
Because of this, the HTTP Live Streaming technology suddenly gained a huge installed base, as all the 
video’s on YouTube are also available through this streaming technology.
However, HTTP Live Streaming still suffers from lacking adoption on the desktop. Hopefully this 
will change when it becomes an official IETF standard in the near future. Until broad support for 
Apple’s new technology is a fact, the “fall-through” mechanism of HTML5 can be used: If the video tag 
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
19
is not recognized, the browser will attempt to render the next child tag. This is extremely useful, 
allowing a runtime like Flash to handle playback on browsers that do not yet support HTML 5 video 
playback. The video tag can also fall-through across multiple sources, in the event that a browser does 
not support a particular file format or compression. The HTML 5 specification defines the syntax for 
the video tag, but it is up to the browser which media formats to support. The code for this example 
is available on page 9 of Akamai’s HD for iPhone Encoding Best Practices
[10]
Features
HTTP Live Streaming offers alternate streams with different bitrates. The client automatically 
switches to the optimal bitrate based on network conditions for a smooth quality playback 
experience. For streaming media to mobile devices with different types of network connections this is 
a killer feature. It is sometimes referred to as “Adaptive Bitrate”. During the testing of the OS 
toolchain stream the switching of bitrates was clear in the video quality and was recorded in the web 
server access logs. I encourage you to checkout an excerpt of that logfile in Appendix 4. The Akamai 
recommended bitrates used for encoding are included in Appendix 5 as a reference.
Some RTSP streaming servers offer a similar “bit rate adaption” for 3GPP files
8
. The newest 
version of Adobe’s Flash Media Streaming Server (3.5) might offer an equivalent solution called 
“Dynamic Streaming”
9
.
Video encryption and authentication over HTTPS are two other features of HTTP Live Streaming 
of great value to content providers who want to protect their source of income. Authentication can 
also be built into RTSP and Flash servers. The newest version of Adobe’s Flash Media Streaming 
Server offers encrypted H.264 streaming and encrypted Real Time Messaging Protocol (RTMPE).
All three protocols offer VCR like functionality, such as play/pause and timeshifting seek. While 
testing we found that the RTSP Stream from DSS was the most responsive to seeking. The HTTP Live 
Stream suffered from a noticable delay because a full 10 second segment needs to be downloaded 
before playback can resume. This delay can be significantly reduced by using shorter segments. The 
specification draft allows segment durations with a minimum of 1 second. The tradeoff here is a higher 
overhead, as more segments need to be requested. Seeking though YouTube video’s causes variable 
delays, which are sometimes better than the HTTP Live Stream and sometimes worse. 
A Review of HTTP Live Streaming!
Andrew Fecheyr-Lippens
20
8
http://www.apple.com/quicktime/streamingserver/
9
http://www.adobe.com/products/flashmediastreaming/features/
Documents you may be interested
Documents you may be interested