Wowza Community

Cupertino Streaming segmenter parameters (iPhone live)

https://www.wowza.com/docs/how-to-configure-apple-hls-packetization-cupertinostreaming

Adding support for additional HTTP streaming protocols is high on our list of upcoming features. Once we learn more about Adobe’s HTTP based streaming technology as it relates to Flash we can get a better of idea of when we can pursue this support.

Charlie

No problem.

We really don’t get any events from the iPhone when streaming using Apple HTTP Live streaming. We assemble a session based on the requested segments. It is really the best we can do given the protocol.

Charlie

We don’t have a way to control how the iOS player reads ahead. And yes, maxChunkCount and playlistChunkCount have no effect for video on demand. For video on demand the entire playlist is sent to the player.

Charlie

Will future versions of Wowza support a built-in segmenter for other technologies than the iphone? For instance for flash VP6. The market is moving in the direction of using “http streaming” and it would be nice if Wowza is capable of doing the work.

I am currently tuning an HTTP live streaming application and I am having trouble getting the playlistChunkCount to work as expected. I have read the docs/forum and I have configured my application’s Application.xml as directed.

I am trying to change the number of chunks returned to the client to be 5 instead of 3. Here is a snippet of my Application.xml:

<Streams>
	<StreamType>live</StreamType>
	<StorageDir>${com.wowza.wms.context.VHostConfigHome}/content
	</StorageDir>
	<KeyDir>${com.wowza.wms.context.VHostConfigHome}/keys</KeyDir>
	<!--
		LiveStreamPacketizers (separate with commas):
		cupertinostreamingpacketizer, smoothstreamingpacketizer,
		cupertinostreamingrepeater, smoothstreamingrepeater
	-->
	<LiveStreamPacketizers>cupertinostreamingpacketizer,smoothstreamingpacketizer
	</LiveStreamPacketizers>
	<!--
		Properties defined here will override any properties defined in
		conf/Streams.xml for any streams types loaded by this application
	-->
	<Properties>
		<Property>
			<Name>chunkDurationTarget</Name>
			<Value>10000</Value>
			<Type>Integer</Type>
		</Property>
		<Property>
			<Name>maxChunkCount</Name>
			<Value>10</Value>
			<Type>Integer</Type>
		</Property>
		<Property>
			<Name>playlistChunkCount</Name>
			<Value>5</Value>
			<Type>Integer</Type>
		</Property>
		<Property>
			<Name>repeaterChunkCount</Name>
			<Value>5</Value>
			<Type>Integer</Type>
		</Property>
	</Properties>
</Streams>

I have placed the Application.xml file in my conf//directory.

I have restarted the server, but I still get 3 chunks returned to the client:

Chad-MBP:wowza ctippin$  curl "http://wowza2/live-4/smil:stream.smil/playlist.m3u8"
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1500000
http://wowza2/live-4/_definst_/stream_1500/playlist.m3u8?wowzasessionid=1830678269
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1200000
http://wowza2/live-4/_definst_/stream_1200/playlist.m3u8?wowzasessionid=1830678269
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000
http://wowza2/live-4/_definst_/stream_800/playlist.m3u8?wowzasessionid=1830678269
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000
http://wowza2/live-4/_definst_/stream_400/playlist.m3u8?wowzasessionid=1830678269
Chad-MBP:wowza ctippin$ curl "http://wowza2/live-4/_definst_/stream_400/playlist.m3u8?wowzasessionid=1830678269"
#EXTM3U
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:32339
#EXTINF:10,
media_32339.ts?wowzasessionid=1830678269
#EXTINF:10,
media_32340.ts?wowzasessionid=1830678269
#EXTINF:10,
media_32341.ts?wowzasessionid=1830678269

Also - the [INFO] log statements show the value as 3 at startup.

Do I have a misunderstanding about what playlistChunkCount is supposed to do, or does anybody see the what I am doing wrong?

Thanks

You can control the segment size by adding the following property to the HTTPStreamer/Properties container.

<Property>
	<Name>chunkDurationTarget</Name>
	<Value>10000</Value>
	<Type>Integer</Type>
</Property>

Charlie

If you grab the output of the playlist.m3u8 URL directly in a web browser such as Firefox it will return a second set of URLs with a Wowza session id. You can then enter one of these into a browser and you will see the individual .ts segments. The duration (in seconds) of each segment is part of the data above each of the segment names that are returned.

Charlie

Change this:

<HTTPStreamer>
<!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
<Properties>
<Property>
<Name>maxChunkCount</Name>
<Value>2</Value>
<Type>Integer</Type>
<Name>playlistChunkCount</Name>
<Value>1</Value>
<Type>Integer</Type>
<Name>chunkDurationTarget</Name>
<Value>1000</Value>
<Type>Integer</Type> 
</Property>
</Properties>
</HTTPStreamer>

to this:

<HTTPStreamer>
	<!-- Properties defined here will override any properties defined in conf/HTTPStreamers.xml for any HTTPStreamer loaded by this applications -->
	<Properties>
		<Property>
			<Name>maxChunkCount</Name>
			<Value>2</Value>
			<Type>Integer</Type>
		</Property>
		<Property>
			<Name>playlistChunkCount</Name>
			<Value>1</Value>
			<Type>Integer</Type>
		</Property>
		<Property>
			<Name>chunkDurationTarget</Name>
			<Value>1000</Value>
			<Type>Integer</Type> 
		</Property>
	</Properties>
</HTTPStreamer>

Charlie

15 - 25 seconds is normal for http streaming to IPhone. The Wowza configuration settings and encoder settings described at the top of this post are what you have to work.

You could make the point to your customer that only the person operating the encoder has a frame of reference that makes the latency knowable. End users will not.

Richard

HTTPStreamer /Properties are for video on demand. You can test with various settings to see what effect you get.

Richard

You have these properties in the wrong place. You have them in the /Streams Properties list. Move them down the /LiveStreamPacketizer Properties list.

Richard

I don’t think there is any change, Wowza can’t control iOS devices, just sends streams to the device that it can play. I didn’t know you could stream to iOS with FMS

Richard

We don’t have a way to control how the iOS player reads ahead.

Is this still the current status?

I have seen beautiful ios vod pay per minute implementations done with fms (even the older v3.5) where the read ahead stops at the current timestamp and thus provides a much better base for analytics/ppm solutions etc.

We would hate to switch to FMS though just for the much better ios implementation.

A customer of mine is complaining that it takes 15 to 25 seconds until the video starts to play, for an H.264 VOD, on an iPhone using a Wifi connection.

How would I set Wowza up so that the buffering time is much shorter?

This is assuming communications are flawless, and there are not many hops between the iPhone and the Wowza server (basically, a local ISP).

Are there other methods of streaming to iPhones & iPods that would result in a shorter startup time for video?

I just want to make sure they haven’t experienced anything better anywhere else :wink:

Yes, I see. Thanks so much for the help.

Did you happen to watch the Sept. Apple Keynote live? Thought I’d see how the “pro” does it. The video loaded very quickly and worked well for most of it. I think our connection started throttling towards the end and the video started blinking. Between the short start time and blinking-what I would assume were dropped chunks-I would assume they were using very short chunks, or Wowza equivalent “chunkDurationTarget” values.

I tried dropping the number from 10000 to 100 on a VOD video just to see and saw quicker seek and loading times. Now other than the blinking video, what other sort of not as desired side effects, like computer resource hogging or overhead could this cause?

Is there a way to alter segmentation parameters for VOD streaming?

thanks,

-emgvod

You can control the segment size by adding the following property to the HTTPStreamer/Properties container.

<Property>
	<Name>chunkDurationTarget</Name>
	<Value>10000</Value>
	<Type>Integer</Type>
</Property>

Charlie

Thanks for the reply, Charlie!

Are you sure this works for VOD streaming? From everything I saw and read (in the posts), these properties are for live streaming only. It would be great if those parameters indeed worked for VOD. Is there way to check and verify?