prev/next

Apple HTTP Live Streaming (HLS)

How can I encrypt my iPhone streams?

Securing your iPhone streams is easy with Encoding.com's stream encrytion option. We encrypt your TS segements using AES-128 with no need for an additional processing step. The encryption passes on delivery, as opposed to requiring additional processing time. You'll need a few things to get started, so let's lay out all the details:

1)  Create 32 character hexadecimal string.

 More -->

Securing your iPhone streams is easy with Encoding.com's stream encrytion option. We encrypt your TS segements using AES-128 with no need for an additional processing step. The encryption passes on delivery, as opposed to requiring additional processing time. You'll need a few things to get started, so let's lay out all the details:

1)  Create 32 character hexadecimal string. (Noted as 128 bit key below.)

     Sample encryption key: 243F6A8885A308D313198A2E03707344. Don't confuse this with API keys, as the encryption key can only contain characters A - F & 0- 9.

     Sample of encryption key that will fail immediately: COq8MA6wT3aHxEIvGy4U3VNBa3BMch29

OR

     Create a file that contains the hex string. If you choose a file, this will overrride the hex key specified in the request.

3) Request an HLS encode with the following additions:

<format>
    <!-- Format fields -->
        <output>[iphone_stream|ipad_stream]</output>
        ...
        <encryption>[yes|no]</encryption>
        <encryption_key>[128bit-key]</encryption_key>
        <encryption_key_file>[SourceURL]</encryption_key_file> <----Use a key_file or a string value. Don't use both, as the file will override the key. 
        ...
    </format>

 

###

Full XML:

<?xml version="1.0"?>
<query>
  <action>AddMedia</action>
  <userid>[userid]</userid>
  <userkey>[userkey]</userkey> 
  <source>[source]</source>
  <notify/>
   <format>
   <output>iphone_stream</output>
  <size>480x320</size>
   <bitrate>512k</bitrate>
<destination>[URL]</destination>
   <audio_bitrate>40k</audio_bitrate>
   <audio_sample_rate>44100</audio_sample_rate>
   <audio_channels_number>2</audio_channels_number>
   <keep_aspect_ratio>yes</keep_aspect_ratio>
   <video_codec>libx264</video_codec>
   <profile>iphone_stream</profile>
   <audio_codec>libfaac</audio_codec>
   <two_pass>no</two_pass>
   <turbo>no</turbo>
   <cbr>no</cbr>
   <deinterlacing>yes</deinterlacing>
   <keyframe>300</keyframe>
   <audio_volume>100</audio_volume>
   <rotate>0</rotate>
   <file_extension>tar</file_extension>
   <hint>no</hint>
   <bitrates>600k,400k,200k,110k</bitrates>
   <framerates>29.97,29.97,15,10</framerates>
   <keyframes>90,90,45,30</keyframes>
   <pack_files>no</pack_files>
   <segment_duration>10</segment_duration>
   <add_audio_only>no</add_audio_only>
   <still_image>no</still_image>
   <still_image_time>5</still_image_time>
   <still_image_size>480x320</still_image_size>
   <encryption>yes</encryption>
   <encryption_key>[128bit-key]</encryption_key>
   <encryption_key_file>[URL]</encryption_key_file>
   </format>
</query>

For additional information on encryption of iPhone streams: https://developer.apple.com/library/ios/#qa/qa1661/_index.html

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 3 times):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

Easily Create iPhone Streaming Files with Encoding.com

If you're interested in using Encoding.com's platform to create iPhone Streaming (m3u8) files from your source content, there's a number of ways to achieve that using the options listed below. Our new HLS encoding has better adaptive bitrate distribution within the H.264 segments!

+ Use our web-based encoding software UI, located @ http://www.encoding.com/login, to designate an Amazon
 More -->

If you're interested in using Encoding.com's platform to create iPhone Streaming (m3u8) files from your source content, there's a number of ways to achieve that using the options listed below. Our new HLS encoding has better adaptive bitrate distribution within the H.264 segments!

+ Use our web-based encoding software UI, located @ http://www.encoding.com/login, to designate an Amazon S3, Rackspace CloudFiles or FTP site to use as your watchfolder. Turn an entire folder of content into iPhone Streaming (m3u8) files. All you have to do is select 'Add Task' and apply the iPhone Streaming (m3u8) preset from the dropdown menu in the watchfolder UI. 
 
+ Upload a single piece of media with our 'Add Media' feature in the web UI. Select 'Add Task' and apply an iPhone Streaming (m3u8) preset to your encoding workflow from the dropdown menu.  As with watchfolders, 'Add Media' can source from Amazon S3, Rackspace CloudFiles, FTP sites or your local drive / network.
 
+ Implement our powerful encoding API to submit source content and create Apple streaming video format files in a snap.
 
Don't forget to take a peek at our sample XML template for Apple TV creation.
 
<format>
    <output>iphone_stream</output>
    <destination>ftp://***** the output iphone index file (.m3u8) *****</destination>
    <size>400x300</size>
    <audio_bitrate>56k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
    <profile>iphone_stream</profile>
    <audio_codec>libfaac</audio_codec>
    <two_pass>no</two_pass>
    <turbo>yes</turbo>
    <cbr>no</cbr>
    <deinterlacing>no</deinterlacing>
    <keyframe>300</keyframe>
    <audio_volume>100</audio_volume>
    <rotate>0</rotate>
    <file_extension>tar</file_extension>
    <hint>no</hint>
    <bitrates>600k,400k,200k,110k</bitrates>
    <framerates>29.97,29.97,15,10</framerates>
    <keyframes>90,90,45,30</keyframes>
    <pack_files>no</pack_files>
    <segment_duration>10</segment_duration>
    <add_audio_only>yes</add_audio_only>
    <still_image>first_segment</still_image>
    <still_image_time>5</still_image_time>
    <still_image_size>480x320</still_image_size>
  </format>
 
HLS iPad and iPhone streaming generate two types of files per Apple spec: the master index files (.m3u8) and the segmented mpeg-4 files (.ts). Our default presets use 10-second segments at 30fps (300 frames each), per Apple Technical Note TN2224.
https://developer.apple.com/library/ios/#technotes/tn2010/tn2224.html

#1 Please be sure to set "Tar segmented files" to OFF or NO, or you will get all the files zipped into one TAR archive file. XML flag as <pack_files>no</pack_files>

#2 Please make sure your index files are set to the proper MIME type on your server (application/x-mpegURL) so they pass the Apple Validator Tool, which I have available for download here:
http://www.pixelgoat.net/encoding/info/Apple_Streaming_ValidatorTool.zip

#3 Please DO NOT use two pass encoding, or you will see a blurry I-frame "popping" at the beginning of each 10 second video segment.

#4 Be aware that 5 different bitrates will output 30 segment (.ts) files per minute of video, so a 10-minute video will be 300 files. You will probably want to encode each video to a separate destination directory to keep your server organized.

You may login to your Encoding.com queue at

https://manage.encoding.com/user/#queue

You may view our web interface tutorial for iPhone streaming at

http://www.encoding.com/video/demo.mp4

SAMPLE XML - Send direct to API at manage.encoding.com
https://www.encoding.com/sendXml/

 

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 9 times):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

iPad Streaming Template

Standard iPad Streaming Template

<format>
    <output>ipad_stream</output>
    <size>640x480</size>
    <audio_bitrate>40k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
    <profile>main</profile>
    <audio_codec>libfaac</audio_codec>
    <two_pass>no</two_pass>
    <cbr>no</cbr>
    <deinterlacing>no</deinterlacing>
    <audio_volume>100</audio_volume>
    <file_extension>tar</file_extension>
    <hint>no</hint>
    <bitrates>1200k,800k,600k,400k,200k,110k</bitrates>
    <framerates>29.97,29.97,29.97,29.97,15,10</framerates>
    <keyframes>90,90,90,90,45,30</keyframes>
    <pack_files>yes</pack_files>
    <segment_duration>10</segment_duration>
    <add_audio_only>no</add_audio_only>
    <still_image>no</still_image>
    <still_image_time>5</still_image_time>
    <still_image_size>480x320</still_image_size>
 </format>
 

Standard iPad Streaming Template

<format>
    <output>ipad_stream</output>
    <size>640x480</size>
    <audio_bitrate>40k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
    <profile>main</profile>
    <audio_codec>libfaac</audio_codec>
    <two_pass>no</two_pass>
    <cbr>no</cbr>
    <deinterlacing>no</deinterlacing>
    <audio_volume>100</audio_volume>
    <file_extension>tar</file_extension>
    <hint>no</hint>
    <bitrates>1200k,800k,600k,400k,200k,110k</bitrates>
    <framerates>29.97,29.97,29.97,29.97,15,10</framerates>
    <keyframes>90,90,90,90,45,30</keyframes>
    <pack_files>yes</pack_files>
    <segment_duration>10</segment_duration>
    <add_audio_only>no</add_audio_only>
    <still_image>no</still_image>
    <still_image_time>5</still_image_time>
    <still_image_size>480x320</still_image_size>
 </format>
 
<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 1 time):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

iPhone Streaming Template

 

Standard template for iPhone Streaming | HLS | Adaptive bit rate streaming
 
<format>
    <output>iphone_stream</output>
    <size>400x300</size>
    <audio_bitrate>40k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
    <profile>iphone_stream</profile>
    <audio_codec>libfaac</audio_codec>
    <two_pass>no</two_pass>
    <cbr>no</cbr>
    <deinterlacing>no</deinterlacing>
    <audio_volume>100</audio_volume>
    <file_extension>tar</file_extension>
    <hint>no</hint>
    <bitrates>600k,400k,200k,110k</bitrates>
    <framerates>29.97,29.97,15,10</framerates>
    <keyframes>90,90,45,30</keyframes>
    <pack_files>yes</pack_files>
    <segment_duration>10</segment_duration>
    <add_audio_only>no</add_audio_only>
    <still_image>no</still_image>
    <still_image_time>5</still_image_time>
    <still_image_size>480x320</still_image_size>
</format>
 

 

Standard template for iPhone Streaming | HLS | Adaptive bit rate streaming
 
<format>
    <output>iphone_stream</output>
    <size>400x300</size>
    <audio_bitrate>40k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
    <profile>iphone_stream</profile>
    <audio_codec>libfaac</audio_codec>
    <two_pass>no</two_pass>
    <cbr>no</cbr>
    <deinterlacing>no</deinterlacing>
    <audio_volume>100</audio_volume>
    <file_extension>tar</file_extension>
    <hint>no</hint>
    <bitrates>600k,400k,200k,110k</bitrates>
    <framerates>29.97,29.97,15,10</framerates>
    <keyframes>90,90,45,30</keyframes>
    <pack_files>yes</pack_files>
    <segment_duration>10</segment_duration>
    <add_audio_only>no</add_audio_only>
    <still_image>no</still_image>
    <still_image_time>5</still_image_time>
    <still_image_size>480x320</still_image_size>
</format>
 
<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 1 time):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

iphone-http-live-streaming

HTTP Live Streaming allows streaming of files from the internet to specific devices. Encoding.com’s platform produces files that are chunked into many short streams. From there, you can choose many bit rates in order to adapt to the environment in which the stream is played. This allows the viewing environment to adapt to the correct data rate.

iPhone

 More -->

HTTP Live Streaming allows streaming of files from the internet to specific devices. Encoding.com’s platform produces files that are chunked into many short streams. From there, you can choose many bit rates in order to adapt to the environment in which the stream is played. This allows the viewing environment to adapt to the correct data rate.

iPhone HTTP Live Streaming

Imagine a one-click setting for iPhone HTTP live streaming. We have it and an array of other cloud-based encoding solutions. Contact us today for more information.

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 3 times):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

HTTP Live Streaming for Apple Devices

Apple has added a new layer of encoding confusion to the market with HTTP Live Streaming for the iPhone and Quicktime. From Apple's own Developer's Center :

"HTTP Live Streaming allows you to send live or prerecorded audio and video to iPhone or other devices, such as iPod touch or desktop computers, using an ordinary Web server. Playback

 More -->

Apple has added a new layer of encoding confusion to the market with HTTP Live Streaming for the iPhone and Quicktime. From Apple's own Developer's Center:

"HTTP Live Streaming allows you to send live or prerecorded audio and video to iPhone or other devices, such as iPod touch or desktop computers, using an ordinary Web server. Playback requires iPhone OS 3.0 or later on devices running iPhone OS; QuickTime X or later is required on the desktop..."

The files delivered consist of multiple different bit-rate .ts (transport stream) tied together with a .m3u8 index file. This file, in this sample from the Apple Developer Guide linked above, may look like this inside:

"Here is a very simple example of an .M3U8 file a segmenter might produce if the entire stream were contained in three unencrypted 10-second media files:

#EXTM3U
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:10
#EXTINF:10,
http://media.example.com/segment1.ts
#EXTINF:10,
http://media.example.com/segment2.ts
#EXTINF:10,
http://media.example.com/segment3.ts
#EXT-X-ENDLIST

A picture from Jan Ozer shows this method more clearly.  

This list shows a reference to three different segments, each being a part of a whole video, just pieces used to stream the different bit-rates on the fly as the connection warrants in the system. 

To get started with encoding.com's service for HTTP streaming files, select the iPhone Streaming Task/Preset.  To learn more about getting apple recommended settings for the HTTP live streaming files, please see our help article:

http://www.encoding.com/how_to_generate_apple_recommended_http_live_streaming_files_for_apple_iphon

Once the encoding is finished, the user should be able to post those files to a http site and stream them directly to mobile devices pointed at those streams.  

 

Apple, on March 19th, released a technical note on the HTTP Live Streaming, linked here. This article by Apple explains, in depth and clearly, the requirements for http streaming for the iphone and ipad.

  

Jan Ozer, of Streaming Learning Center, has two great articles on HTTP Live Streaming which are a must read for anyone getting started in the HTTP Live Streaming delivery:

Part 1

Part 2 

 

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 1 time):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

How to generate Apple Recommended HTTP Live Streaming Files for Apple iPhone

To generate proper iPhone HTTP live streaming profiles in encoding.com, see the below xml. These settings should be used whenever the user wishes to publish the apple recommended profiles, based on this document:

http://developer.apple.com/iphone/library/technotes/tn2010/tn2224.html

   <format> 
    <output>iphone_stream</output>
    <destination>******</destination>
    <size>400x300</size>
    <bitrate>1024k</bitrate>
    <audio_bitrate>40k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <framerate>29.97</framerate>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
   
 More -->

To generate proper iPhone HTTP live streaming profiles in encoding.com, see the below xml. These settings should be used whenever the user wishes to publish the apple recommended profiles, based on this document:

http://developer.apple.com/iphone/library/technotes/tn2010/tn2224.html

	  <format>
    <output>iphone_stream</output>
    <destination>******</destination>
    <size>400x300</size>
    <bitrate>1024k</bitrate>
    <audio_bitrate>40k</audio_bitrate>
    <audio_sample_rate>44100</audio_sample_rate>
    <audio_channels_number>2</audio_channels_number>
    <framerate>29.97</framerate>
    <keep_aspect_ratio>yes</keep_aspect_ratio>
    <video_codec>libx264</video_codec>
    <profile>iphone_stream</profile>
    <VCodecParameters>no</VCodecParameters>
    <audio_codec>libmp3lame</audio_codec>
    <two_pass>no</two_pass>
    <turbo>no</turbo>
    <cbr>no</cbr>
    <deinterlacing>no</deinterlacing>
    <keyframe>90</keyframe>
    <audio_volume>100</audio_volume>
    <rotate>0</rotate>
    <file_extension>tar</file_extension>
    <bitrates>600k,400k,200k,110k</bitrates>
    <pack_files>yes</pack_files>
    <force_bitrate>no</force_bitrate>
    <segment_duration>10</segment_duration>
    <add_audio_only>yes</add_audio_only>
    <still_image>each_segment</still_image>
    <still_image_time>4</still_image_time>
    <still_image_size>480x320</still_image_size>
  </format>

 Note certain settings, which are important to meet the encoding chart from the technical note: size, framerate, audio bitrate, audio sample rate, keyframe, bitrates and still image size. These recommendations should give good results, and get working iphone streaming delivered on time, with excellent results.

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 3 times):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

What is HTTP Live Streaming?

HTTP Live Streaming allows streaming of files from the internet to specific devices. Encoding.com’s iPhone video encoding platform produces files that are chunked into many short streams. From there, you can choose many bit rates in order to adapt to the environment in which the stream is played. This allows the viewing environment to adapt to the correct

 More -->

HTTP Live Streaming allows streaming of files from the internet to specific devices. Encoding.com’s iPhone video encoding platform produces files that are chunked into many short streams. From there, you can choose many bit rates in order to adapt to the environment in which the stream is played. This allows the viewing environment to adapt to the correct data rate.


iPhone HTTP Live Streaming

Imagine a one-click setting for iPhone HTTP live streaming. We have it and an array of other cloud-based transcoding solutions. Contact us today for more information.

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 7 times):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter

iPhone streaming creating TAR file on output

With TAR output is set to OFF, and should see .m3u8 pointers and .ts segment files populate your output directory. The trick is correctly formatting the output filepath. You have to make sure your output filepath has a filename WITHOUT a 3-character file extension. I had this same problem because I either defined only the output directory, or had

 More -->

With TAR output is set to OFF, and should see .m3u8 pointers and .ts segment files populate your output directory. The trick is correctly formatting the output filepath. You have to make sure your output filepath has a filename WITHOUT a 3-character file extension. I had this same problem because I either defined only the output directory, or had an output filename with .m3u on it. In both cases that will force a TAR output even if you have set it to off. SAMPLES: To get your segments, a correct output filepath should look something like this: http://yourbucket.s3.amazonaws.com/iphonetest/outputfilename ftp://username:password@ftp.yourserver.net/iphonetest/outputfilename

<-- Hide
tools: email  |  print  |  share  |  click to rate (rated 2 times):
  • BlinkList
  • Del.icio.us
  • Digg
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • MySpace
  • Newsvine
  • Reddit
  • Sphinn
  • Technorati
  • Twitter