<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Video Hosting Support &#187; iPhone</title>
	<atom:link href="http://www.gravlab.com/forum/category/iphone/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gravlab.com/forum</link>
	<description>Video Hosting, Audio Hosting, Streaming Media Hosting, Mobile video host, iPhone video host</description>
	<lastBuildDate>Tue, 15 Jun 2010 18:38:06 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Streaming video to iPhone FAQ</title>
		<link>http://www.gravlab.com/forum/2010/06/06/streaming-video-to-iphone-faq/</link>
		<comments>http://www.gravlab.com/forum/2010/06/06/streaming-video-to-iphone-faq/#comments</comments>
		<pubDate>Mon, 07 Jun 2010 02:39:22 +0000</pubDate>
		<dc:creator>support</dc:creator>
				<category><![CDATA[Hosting Tutorial]]></category>
		<category><![CDATA[Mobile Hosting (3GP, MPEG4)]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.gravlab.com/forum/?p=136</guid>
		<description><![CDATA[Streaming video to iPhone Frequently Asked Questions

What kinds of encoders are supported?
The  protocol specification does not limit the encoder selection.  However,  the current Apple implementation should interoperate with encoders that  produce MPEG-2 Transport Streams containing H.264 video and AAC audio  (HE-AAC or AAC-LC).  Encoders that are capable of broadcasting [...]]]></description>
			<content:encoded><![CDATA[<h1 id="pageTitle">Streaming video to iPhone Frequently Asked Questions</h1>
<ol>
<li><strong>What kinds of encoders are supported?</strong>
<p>The  protocol specification does not limit the encoder selection.  However,  the current Apple implementation should interoperate with encoders that  produce MPEG-2 Transport Streams containing H.264 video and AAC audio  (HE-AAC or AAC-LC).  Encoders that are capable of broadcasting the  output stream over UDP should also be compatible with the current  implementation of the Apple provided segmenter software.</p>
<p>Apple has  tested the current implementation with the following commercial  encoders:</p>
<ul>
<li>Inlet Technologies  Spinnaker 7000</li>
<li>Envivio 4Caster C4</li>
</ul>
</li>
<li><strong>What are the specifics of the video and audio  formats supported?</strong>
<p>Although the protocol specification  does not limit the video and audio formats, the current Apple  implementation supports the following formats:</p>
<ul>
<li>Video:    H.264 Baseline Level 3.0</li>
<li>Audio:
<ul>
<li>HE-AAC or AAC-LC up  to 48 kHz, stereo audio</li>
<li>MP3 (MPEG-1  Audio Layer 3) 8 kHz to 48 kHz, stereo audio</li>
</ul>
<div><a title="Note" name="//apple_ref/doc/uid/TP40008332-CH103-DontLinkElementID_23"></a><strong>Note:</strong> iPad, iPhone 3G, and iPod  touch (2nd generation and later) support H.264 Baseline 3.1. If your app  runs on older versions of iPhone or iPod touch, however, you should use  H.264 Baseline 3.0 for compatibility.</div>
</li>
</ul>
</li>
<li><strong>What duration should media files be?</strong>
<p>The  main point to consider is that shorter segments result in more frequent  refreshes of the index file, which might create unnecessary network  overhead for the client. Longer segments will extend the inherent  latency of the broadcast and initial startup time.  A duration of 10  seconds of media per file seems to strike a reasonable balance for most  broadcast content.</li>
<li><strong>How many files  should be in listed in the index file during a continuous, ongoing  session?</strong>
<p>The specification requires at least 3 media  files be listed in the index file, but the optimum number may be larger.  The client identifies an ongoing session by the lack of an <code>#EXT-X-ENDLIST</code> tag in the index file. The client does not allow the user to seek into  the last two files in the index for ongoing broadcasts. Periodically,  the client requests a new copy of the index.</p>
<p>The important point  to consider when choosing the optimum number is that the number of files  available during a live session constrains the client&#8217;s behavior when  doing play/pause and seeking operations.  The longer the list, the  longer the client can be paused without losing its place in the  broadcast, the further back in the broadcast a new client begins, and  the wider the time range within which the client can seek. The trade-off  is that a longer index file adds to network overhead—during live  broadcasts, the clients are all refreshing the index file regularly, so  it does add up, even though the index file is typically small.</p>
<p>Another  point to consider is that clients typically request new copies of the  index file at higher rate when the index contains a shorter list of  files.</li>
<li><strong>What data rates are supported?</strong>
<p>The  data rate that a content provider chooses for a stream is most  influenced by the target client platform and the expected network  topology. The streaming protocol itself places no limitations on the  data rates that can be used. The current implementation has been tested  using audio-video streams with data rates as low as 100 Kbps and as high  as 1.6 Mbps to iPhone.  Audio-only streams at 64 Kbps are recommended  as alternates for delivery over slow cellular connections.</p>
<div><a title="Note" name="//apple_ref/doc/uid/TP40008332-CH103-DontLinkElementID_24"></a><strong>Note:</strong> If the data rate exceeds the  available bandwidth, there is more latency before startup and the client  may have to pause to buffer more data periodically. During a broadcast  using an index file that provides a moving window into the content, the  client will eventually fall behind in such cases, causing one or more  segments to be dropped. In the case of VOD, no segments are lost, but  inadequate bandwidth does cause slower startup and periodic stalling  while data buffers.</div>
</li>
<li><strong>What  is a .ts file?</strong>
<p>A <code>.ts</code> file contains an  MPEG-2 Transport Stream.  This is a file format that encapsulates a  series of encoded media samples—typically audio and video. The file  format supports a variety of compression formats, including MP3 audio,  AAC audio, H.264 video, and so on. Not all compression formats are  currently supported in the Apple HTTP Live Streaming implementation,  however. (For a list of currently supported formats, see <span><a href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/HTTPStreamingArchitecture/HTTPStreamingArchitecture.html#//apple_ref/doc/uid/TP40008332-CH101-SW3">“Media  Encoder.”</a></span>)</li>
<li><strong>What is an  .M3U8 file?</strong>
<p>An <code>.M3U8</code> file is a extensible  playlist file format.  It is an m3u playlist containing UTF-8 encoded  text.  The m3u file format is a de facto standard playlist format  suitable for carrying lists of media file URLs.  This is the format used  as the index file for HTTP Live Streaming. For details, see <span><a rel="external" href="http://tools.ietf.org/html/draft-pantos-http-live-streaming" target="_blank">IETF Internet-Draft of the HTTP Live  Streaming specification</a></span>.</li>
<li><strong>How  does the client software determine when to switch streams?</strong>
<p>The  current implementation of the client observes the effective bandwidth  while playing a stream. If a higher-quality stream is available and the  bandwidth appears sufficient to support it, the client switches to a  higher quality. If a lower-quality stream is available and the current  bandwidth appears insufficient to support the current stream, the client  switches to a lower quality.</p>
<div><a title="Note" name="//apple_ref/doc/uid/TP40008332-CH103-DontLinkElementID_25"></a><strong>Note:</strong> For seamless transitions  between alternate streams, the audio portion of the stream should be  identical in all versions.</div>
</li>
<li><strong>Where  can I find a copy of the media stream segmenter from Apple?</strong>
<p>The  media stream segmenter, file stream segmenter, and other tools are in  the <code>/usr/bin/</code> directory of Mac OS X computers, version 10.6  and later. These tools are frequently updated, so you should download  the current version of the HTTP Live Streaming Tools from the Apple  Developer website. See <span><a href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/UsingHTTPLiveStreaming/UsingHTTPLiveStreaming.html#//apple_ref/doc/uid/TP40008332-CH102-SW3">“Download  the Tools”</a></span> for details.</li>
<li><strong>What  settings are recommended for a typical HTTP stream, with alternates,  for use with the media segmenter from Apple?</strong>
<p>Your encoder  should produce MPEG-2 transport stream (<code>.ts</code>) files with  the following characteristics for the Apple segmenter:</p>
<ul>
<li>H.264 Baseline 3.0 video</li>
<li>Keyframes  every 3 seconds</li>
<li>HE-AAC (version 1) stereo  audio at 44.1 kHz</li>
<li>Four streams:
<ul>
<li>Cellular Fallback—Audio only or audio  with still image, 64 Kbps</li>
<li>Low—96 Kbps video, 64 Kbps  audio</li>
<li>Medium—256 Kbps video, 64 Kbps audio</li>
<li>High—800  Kbps video, 64 Kbps audio</li>
</ul>
</li>
</ul>
<p>These settings are  the current recommendations. There are also certain requirements. The  current <code>mediastreamsegmenter</code> tool works only with MPEG-2  Transport Streams as defined in ISO/IEC 13818.  The transport stream  must contain H.264 (MPEG-4, part 10) video and AAC or MPEG audio.  If  AAC audio is used, it must have ADTS headers.  H.264 video access units  must use Access Unit Delimiter NALs, and must be in unique PES packets.</p>
<p>The  segmenter also has a number of user-configurable settings. You can  obtain a list of the command line arguments and their meanings by typing  <code>man mediastreamsegmenter</code> from the Terminal application. A  target duration (length of the media segments) of 10 seconds is  recommended, and is the default if no target duration is specified.</li>
<li><strong>How can I specify what codecs or H.264 profile  are required to play back my stream?</strong>
<p>Use the <code>CODECS</code> attribute of the <code>EXT-X-STREAM-INF</code> tag. When this attribute  is present, it must include all codecs and profiles required to play  back the stream. The following values are currently recognized:</p>
<div>
<table border="0" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td scope="row">AAC-LC</td>
<td>&#8220;mp4a.40.2&#8243;</td>
</tr>
<tr>
<td scope="row">HE-AAC</td>
<td>&#8220;mp4a.40.5&#8243;</td>
</tr>
<tr>
<td scope="row">MP3</td>
<td>&#8220;mp4a.40.34&#8243;</td>
</tr>
<tr>
<td scope="row">H.264 Baseline Profile level 3.0</td>
<td>&#8220;avc1.42001e&#8221;  or “avc1.66.30”</p>
<p>Note: Use “avc1.66.30” for compatibility with  iPhone OS versions 3.0 to 3.12.</td>
</tr>
<tr>
<td scope="row">H.264  Main Profile level 3.0</td>
<td>&#8220;avc1.4d001e&#8221; or “avc1.77.30”</p>
<p>Note:  Use “avc1.77.30” for compatibility with iPhone OS versions 3.0 to 3.12.</td>
</tr>
</tbody>
</table>
</div>
<p>The  attribute value must be in quotes. If multiple values are specified,  one set of quotes is used to contain all values, and the values are  separated by commas. An example follows.</p>
<div>
<table border="0">
<tbody>
<tr>
<td scope="row">
<pre>#EXTM3U</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>mid_video_index.m38u</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=800000</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>wifi_video_index.m38u</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=3000000, CODECS="avc1.4d001e, mp4a.40.5"</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>h264main_heaac_index.m38u</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=64000, CODECS="mp4a.40.5"</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>aacaudio_index.m38u</pre>
</td>
</tr>
</tbody>
</table>
</div>
</li>
<li><strong>How can I create an audio-only stream from  audio/video input?</strong>
<p>Add the <code>-audio-only</code> argument when invoking the stream or files segmenter.</li>
<li><strong>How can I add a still image to an audio-only  stream?</strong>
<p>Use the <code>-meta-file</code> argument when  invoking the stream or file segmenter with <code>-meta-type=picture</code> to add an image to every segment. For example, this would add an image  named poster.jpg to every segment of an audio stream created from the  file track01.mp3:</p>
<p><code>mediafilesegmenter -f</code> <em>/Dir/outputFile</em> <code>-a --meta-file=poster.jpg --meta-type=picture track01.mp3</code></p>
<p>Remember that the image is typically resent every ten seconds, so  it’s best to keep the file size small.</li>
<li><strong>How  can I specify an audio-only alternate to an audio-video stream?</strong>
<p>Use  the <code>CODECS</code> and <code>BANDWIDTH</code> attributes of the <code>EXT-X-STREAM-INF</code> tag together.</p>
<p>The <code>BANDWIDTH</code> attribute specifies the  bandwidth required for each alternate stream. If the available  bandwidth is enough for the audio alternate, but not enough for the  lowest video alternate, the client switches to the audio stream.</p>
<p>If  the <code>CODECS</code> attribute is included, it must list all codecs  required to play the stream. If only an audio codec is specified, the  stream is identified as audio-only. Currently, it is not required to  specify that a stream is audio-only, so use of the <code>CODECS</code> attribute is optional.</p>
<p>The following is an example that specifies  video streams at 500 Kbps for fast connections, 150 Kbps for slower  connections, and an audio-only stream at 64 Kbps for very slow  connections. All the streams should use the same 64 Kbps audio to allow  transitions between streams without an audible disturbance.</p>
<div>
<table border="0">
<tbody>
<tr>
<td scope="row">
<pre>#EXTM3U</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=500000</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>mid_video_index.m38u</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=150000</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>3g_video_index.m38u</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>#EXT-X-STREAM-INF:PROGRAM-ID=1, BANDWIDTH=64000, CODECS="mp4a.40.5"</pre>
</td>
</tr>
<tr>
<td scope="row">
<pre>aacaudio_index.m38u</pre>
</td>
</tr>
</tbody>
</table>
</div>
</li>
<li><strong>What are the hardware requirements or  recommendations for servers?</strong>
<p>See question #1 for encoder  hardware recommendations.</p>
<p>The Apple stream segmenter is capable of  running on any Intel-based Mac.  We recommend using a Mac with two  Ethernet network interfaces, such as a Mac Pro or an XServe.  One  network interface can be used to obtain the encoded stream from the  local network, while the second network interface can provide access to a  wider network.</li>
<li><strong>Does the Apple  implementation of HTTP Live Streaming support DRM?</strong>
<p>No.  However, media can be encrypted and key access can be limited using  HTTPS authentication.</li>
<li><strong>What client  platforms are supported?</strong>
<p>iPhone, iPad, and iPod touch  (requires iPhone OS version 3.0 or later) or any device with QuickTime X  or later installed.</li>
<li><strong>Is the protocol  specification available?</strong>
<p>Yes. The protocol specification  is an IETF Internet-Draft, at <span><a rel="external" href="http://tools.ietf.org/html/draft-pantos-http-live-streaming" target="_blank">http://tools.ietf.org/html/draft-pantos-http-live-streaming</a></span>.</li>
<li><strong>Does the client cache content?</strong>
<p>The  index file can contain an instruction to the client that content should  not be cached. Otherwise, the client may cache data for performance  optimization when seeking within the media.</li>
<li><strong>Is  this a real-time delivery system?</strong>
<p>No. It has inherent  latency corresponding to the size and duration of the media files  containing stream segments. At least one segment must fully download  before it can be viewed by the client, and two may be required to ensure  seamless transitions between segments. In addition, the encoder and  segmenter must create a file from the input; the duration of this file  is the minimum latency before media is available for download. Typical  latency with recommended settings is in the neighborhood of 30 seconds.</li>
<li><strong>What is the latency?</strong>
<p>Approximately  30 seconds, with recommended settings. See question #15.</li>
<li><strong>Do I need to use a hardware encoder?</strong>
<p>No.  Using the protocol specification, it is possible to implement a  software encoder.</li>
<li><strong>What advantages does  this approach have over RTP/RTSP?</strong>
<p>HTTP is less likely to  be disallowed by routers, NAT, or firewall settings. No ports need to  be opened that are commonly closed by default. Content is therefore more  likely to get through to the client in more locations and without  special settings. HTTP is also supported by more content-distribution  networks, which can affect cost in large distribution models. In  general, more available hardware and software works unmodified and as  intended with HTTP than with RTP/RTSP. Expertise in customizing HTTP  content delivery using tools such as PHP is also more widespread.</p>
<p>Also,  HTTP Live Streaming is supported in Safari and the media player  framework on iPhone OS. RTSP streaming is not supported.</li>
<li><strong>Why is my stream’s overall bit rate higher than  the sum of the audio and video bitrates?</strong>
<p>MPEG-2 transport  streams can include substantial overhead. They utilize fixed packet  sizes that are padded when the packet contents are smaller than the  default packet size. Encoder and multiplexer implementations vary in  their efficiency at packing media data into these fixed packet sizes.  The amount of padding can vary with frame rate, sample rate, and  resolution.</li>
<li><strong>How can I reduce the  overhead and bring the bit rate down?</strong>
<p>Using a more  efficient encoder can reduce the amount of overhead, as can tuning the  encoder settings. Also, the <code>-optimize</code> argument can be  passed to the Apple mediastreamsegmenter. This removes some unnecessary  padding and can significantly reduce the overhead, particularly for  low-bandwidth streams.</li>
<li><strong>Do all media  files have to be part of the same MPEG-2 Transport Stream?</strong>
<p>No.  You can mix media files from different transport streams, as long as  they are separated by <code>EXT-X-DISCONTINUITY</code> tags. See the  protocol specification for more detail. For best results, however, all  video media files should have the same height and width dimensions in  pixels.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.gravlab.com/forum/2010/06/06/streaming-video-to-iphone-faq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What you need to know about iPhone HTTP streaming</title>
		<link>http://www.gravlab.com/forum/2010/01/11/what-you-need-to-know-about-iphone-http-streaming/</link>
		<comments>http://www.gravlab.com/forum/2010/01/11/what-you-need-to-know-about-iphone-http-streaming/#comments</comments>
		<pubDate>Mon, 11 Jan 2010 23:04:46 +0000</pubDate>
		<dc:creator>modcam</dc:creator>
				<category><![CDATA[Mobile Hosting (3GP, MPEG4)]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.gravlab.com/forum/?p=123</guid>
		<description><![CDATA[One of the drawbacks of many kinds of streaming media is that there are special protocols and non-standard ports used, which can lead to several different types of failures, and ultimately, a lot of frustration. When Apple set out to include a streaming video feature on their iPhone OS, they decided to use HTTP for [...]]]></description>
			<content:encoded><![CDATA[<p>One of the drawbacks of many kinds of streaming media is that there are special protocols and non-standard ports used, which can lead to several different types of failures, and ultimately, a lot of frustration. When Apple set out to include a streaming video feature on their iPhone OS, they decided to use HTTP for several reasons. First and foremost, they could avoid many of the pitfalls of typical streaming media setups. For example: RTSP streams are often rejected by overzealous firewalls and routers, which means that many viewers who reside behind corporate/office firewalls will not be able to view your video stream.</p>
<p>Hypertext transfer protocol, also known as HTTP, is universally supported, and is much more effective at bypassing firewalls and routers that may otherwise deny traffic that use MMS or RTSP protocols. Why is this? Because almost all internet traffic uses the HTTP protocol, so if a router or firewall rejected HTTP traffic, they would be blocking out most of the internet. </p>
<p>The shining benefit of HTTP streaming is that it allows content distributors to avoid the costly implementation of traditional streaming media servers, which is a huge benefit to small companies just getting started in streaming video. Although it works in a completely different way than RTSP, the effect is still the same. With on-demand video (as opposed to live video), the user can skip forward before the video is finished downloading, much like other types of on-demand streaming. And with live video, the viewer cannot skip forward at all, which reproduces the experience of watching a live broadcast on TV. </p>
<p>So, how do content producers utilize this technology? One option is to purchase a monthly <a href="http://www.gravlab.com/iphone.html">iPhone &#038; mobile streaming video hosting package</a> with GravityLab Multimedia, which makes it easy to get up and running with HTTP streaming.</p>
<h2>How our iPhone streaming video hosting works</h2>
<ol>
<li>You <a href="http://www.gravlab.com/iphone.html">purchase an account</a></li>
<li>We send you a welcome e-mail with instructions on how to upload your files with any FTP program, and how to start a live broadcast</li>
</ol>
<p>			<em>On-demand streaming:</em></p>
<ol>
<li>You upload a video file, and it is available for viewing instantly</li>
<li>You link to the video via your your web site<br/>e.g. http://arecibo.gravlab.com:1935/iphone/mp4:your_account/your_video.mp4/playlist.m3u8</li>
</ol>
<p>			<em>Live broadcasting on iPhone 3.0 and later:</em></p>
<ol>
<li>You Download <a href="http://www.apple.com/quicktime/broadcaster/" target="_blank">Quicktime Broadcaster</a>, a free program for broadcasting video from any computer with OS X.</li>
<li>You configure the broadcaster according to your welcome e-mail, and then press the Broadcast button</li>
<li>You link viewers to http://arecibo.gravlab.com:1935/iphonelive/your_account.sdp/playlist.m3u8</li>
</ol>
<h2>File requirements</h2>
<ul>
<li>Container format: .mp4, .m4v, .mov</li>
<li>Dimensions: 480&#215;320</li>
<li>Codec: H.264 (Low-Complexity version of the H.264 Baseline Profile OR Baseline Profile up to Level 3.0)
<li>
<li>Audio: AAC-LC audio up to 160 Kbps, 48kHz, stereo audio</li>
<li>Frame rate: up to 30 fps</li>
<li>Bit rate: up to 1.5Mbps (200Kbps recommended)</li>
</ul>
<p>More reading:</p>
<p><a href="http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html">Apple&#8217;s official HTTP streaming documentation</a><br />
<a href="http://en.wikipedia.org/wiki/Streaming_media">RTSP/RTP/RTCP Streaming media overview</a><br />
<a href="http://en.wikipedia.org/wiki/Microsoft_Media_Server">MMS Streaming media overview</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gravlab.com/forum/2010/01/11/what-you-need-to-know-about-iphone-http-streaming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
