Wowza Community

Live iPhone Stream Tuning Q.

Hi All

I followed the instructions found at link and I was able to get live iPhone streaming via Wirecast. The only thing is that there is over a 30 second lag. From the above link it stated, “It will take up to 30 seconds before the stream is available for playback on the devices. The current version of Wowza Media Server logs each chunk of content as it is made available for playback. After the 3rd chunk is available (marked with a Add chunk[3]), the stream can be viewed on the device.” Is there anyway to decrease the chunk size, so that I can decrease the latency? 30 second lag is definitely unacceptable. I would LOVE it to come down to a handful of seconds(1-3seconds). Any suggestions would be greatly appreciated.

Thanks :slight_smile:

This form of streaming is not suitable for low latency streaming. You can reduce the chunk size but I would not suggest going much below a couple of seconds. This will take the latency to 4-6 seconds (or a little more).

See this thread. It documents the properties that control packetization:

http://www.wowza.com/forums/showthread.php?t=5972

You want to mess with the chunkDurationTarget setting.

Charlie

It’s just the way the protocol works.

Charlie

Just be sure the key frame interval on the video is high (short time between key frames). The minimum chunk size is determined by the chunkDurationTarget and the key frame interval. Every chunk must start with a key frame.

Charlie

You inserted the properties incorrectly into the LiveStreamPacketizers.xml file.

You have:

<LiveStreamPacketizer>
	<Name>smoothstreamingpacketizer</Name>
	<Description>Smooth Streaming Packetizer</Description>
	<BaseClass>com.wowza.wms.httpstreamer.smoothstreaming.livestreampacketizer.LiveStreamPacketizerSmoothStreaming</BaseClass>
	<IsRepeater>false</IsRepeater>
	<LiveRepeaterPlayerClass></LiveRepeaterPlayerClass>
	<LiveRepeaterReceiverClass></LiveRepeaterReceiverClass>
	<!-- Target chunk duration (milliseconds) -->
	<Property>
		<Name>chunkDurationTarget</Name>
		<Value>5000</Value>
		<Type>Integer</Type>
	</Property>
</LiveStreamPacketizer>

It should be:

<LiveStreamPacketizer>
	<Name>smoothstreamingpacketizer</Name>
	<Description>Smooth Streaming Packetizer</Description>
	<BaseClass>com.wowza.wms.httpstreamer.smoothstreaming.livestreampacketizer.LiveStreamPacketizerSmoothStreaming</BaseClass>
	<IsRepeater>false</IsRepeater>
	<LiveRepeaterPlayerClass></LiveRepeaterPlayerClass>
	<LiveRepeaterReceiverClass></LiveRepeaterReceiverClass>
	<!-- Target chunk duration (milliseconds) -->
	<Properties>
		<Property>
			<Name>chunkDurationTarget</Name>
			<Value>5000</Value>
			<Type>Integer</Type>
		</Property>
	</Properties>
</LiveStreamPacketizer>

Charlie

These are the best recommendations we have for low latency. The smaller the chunk size the lower the latency. The latest patch might help a little:

http://www.wowza.com/devbuild.html

You can certainly see in the “Add chunk” log statements the number of audio/video/keyframes and the duration of the chunk. Remember that we can only chunk on key frame boundries. So you might try setting the key frame interval to 1 second and the chunk duration to 1 second. This should get you down to 1-3 seconds.

Charlie

Be sure to install the most recent patch. It is here:

http://www.wowza.com/forums/showthread.php?t=5491

Charlie

The key frame interval is set on the encoding side. Carefully read the post we are referring to. They tell you where to put the properties.

Charlie

The instructions are here:

http://www.wowza.com/community/t/-/86

Read very carefully and do lots of experimentation. It is important to note the issue on key frame interval as it relates to chunk size.

Charlie

Take a look at this post for chunk duration

http://www.wowza.com/community/t/-/86

Key frame is set in the encoder

Yes!

http://www.wowza.com/community/t/-/86

The developer license request form is here:

http://www.wowza.com/media-server/developers/license

Richard

Michele,

Here is the link to the article you are looking for cupertino packetizing

Richard

my best latency is 10-12 seconds with the same value of ‘grrvin’ and 1 key frame per second. i use FMLE 3 to encode…is it possible to reduce this latency (my dream is 2 seconds :smiley: )???

I have a camera, a PC, and iphone… i’d like show the video from camera in 2 seconds on my iphone. what can i do??? i’ve to wait an innovation from apple???

thanks to all

i’m using wowza 2,

but the best way is to set the chunk size in Applications.xml or LiveStreamPacketizer.xml file???

My problem is thath a chunk is played on the iphone more and more times…

I’ve this Application.xml, is it correct??

true

live

${com.wowza.wms.context.VHostConfigHome}/content

${com.wowza.wms.context.VHostConfigHome}/keys

cupertinostreamingpacketizer,smoothstreamingpacketizer

cupertinostreaming,smoothstreaming

-1

*

*

*

*

digest

digest

senderreport

12000

*

maxChunkCount

3

Integer

playlistChunkCount

2

Integer

repeaterChunkCount

1

Integer

chunkDurationTarget

1000

Integer

chunkDurationTolerance

1000

Integer

audioGroupCount

1000

Integer

waitForCodecTime

1000

Integer

forceH264BaselineProfile

false

Boolean

base

Base

com.wowza.wms.module.ModuleCore

properties

Properties

com.wowza.wms.module.ModuleProperties

logging

Client Logging

com.wowza.wms.module.ModuleClientLogging

flvplayback

FLVPlayback

com.wowza.wms.module.ModuleFLVPlayback

ModuleSecureURLParams

ModuleSecureURLParams

com.wowza.wms.plugin.security.ModuleSecureURLParams

ConnectionsLimit

ConnectionsLimit

com.wowza.wms.plugin.test.module.ConnectionsLimit

secureurlparams.publish

xxxxx.Pubblica

maxApplicationConnections

50

Integer

Thanks Charlie. I will give that a try. Is there a hardware limitation (CPU, network) that prevents live streaming on the iPhone ideal?

Thanks again.

-Garvin

It didn’t seem to work. I changed both the LiveStreamPacketizers.xml (found under [install dir]\conf) and the Application.xml (found under [install dir]\conf\live). When I start up the WowzaMediaServer the command prompt states that the chunkDurationTarget is still set to 10000. Below is an excerpt of the output and my LiveStreamPacketizer.xml file:

thanks for the help

-Garvin

LiveStreamPacketizer.xml file:

<Root>
	<LiveStreamPacketizers>
		<LiveStreamPacketizer>
			<Name>smoothstreamingpacketizer</Name>
			<Description>Smooth Streaming Packetizer</Description>
			<BaseClass>com.wowza.wms.httpstreamer.smoothstreaming.livestreampacketizer.LiveStreamPacketizerSmoothStreaming</BaseClass>
			<IsRepeater>false</IsRepeater>
			<LiveRepeaterPlayerClass></LiveRepeaterPlayerClass>
			<LiveRepeaterReceiverClass></LiveRepeaterReceiverClass>
			<!-- Target chunk duration (milliseconds) -->
			<Property>
				<Name>chunkDurationTarget</Name>
				<Value>5000</Value>
				<Type>Integer</Type>
			</Property>
		</LiveStreamPacketizer>
		<LiveStreamPacketizer>
			<Name>smoothstreamingrepeater</Name>
			<Description>Smooth Streaming Repeater</Description>
			<BaseClass>com.wowza.wms.httpstreamer.smoothstreaming.livestreampacketizer.LiveStreamPacketizerSmoothStreaming</BaseClass>
			<IsRepeater>true</IsRepeater>
			<LiveRepeaterPlayerClass>com.wowza.wms.httpstreamer.smoothstreaming.liverepeater.SmoothStreamerLiveRepeaterPlayer</LiveRepeaterPlayerClass>
			<LiveRepeaterReceiverClass>com.wowza.wms.httpstreamer.smoothstreaming.liverepeater.SmoothStreamerLiveRepeaterReceiver</LiveRepeaterReceiverClass>
			<!-- Target chunk duration (milliseconds) -->
			<Property>
				<Name>chunkDurationTarget</Name>
				<Value>5000</Value>
				<Type>Integer</Type>
			</Property>
		</LiveStreamPacketizer>
		<LiveStreamPacketizer>
			<Name>cupertinostreamingpacketizer</Name>
			<Description>Cupertino Streaming Packetizer</Description>
			<BaseClass>com.wowza.wms.httpstreamer.cupertinostreaming.livestreampacketizer.LiveStreamPacketizerCupertino</BaseClass>
			<IsRepeater>false</IsRepeater>
			<LiveRepeaterPlayerClass></LiveRepeaterPlayerClass>
			<LiveRepeaterReceiverClass></LiveRepeaterReceiverClass>
			<!-- Target chunk duration (milliseconds) -->
			<Property>
				<Name>chunkDurationTarget</Name>
				<Value>5000</Value>
				<Type>Integer</Type>
			</Property>
		</LiveStreamPacketizer>
		<LiveStreamPacketizer>
			<Name>cupertinostreamingrepeater</Name>
			<Description>Cupertino Streaming Repeater</Description>
			<BaseClass>com.wowza.wms.httpstreamer.cupertinostreaming.livestreampacketizer.LiveStreamPacketizerCupertino</BaseClass>
			<IsRepeater>true</IsRepeater>
			<LiveRepeaterPlayerClass>com.wowza.wms.httpstreamer.cupertinostreaming.liverepeater.CupertinoStreamerLiveRepeaterPlayer</LiveRepeaterPlayerClass>
			<LiveRepeaterReceiverClass>com.wowza.wms.httpstreamer.cupertinostreaming.liverepeater.CupertinoStreamerLiveRepeaterReceiver</LiveRepeaterReceiverClass>
			<!-- Target chunk duration (milliseconds) -->
			<Property>
				<Name>chunkDurationTarget</Name>
				<Value>5000</Value>
				<Type>Integer</Type>
			</Property>
		</LiveStreamPacketizer>
	</LiveStreamPacketizers>
</Root>

OUTPUT:

INFO server server-start Wowza 2 Advanced Preview 7 expires 30 November 2009 2.0

.0-preview7 build21940 -

INFO server comment - Serial number: XXXXX-XXXXX-XXXXX-XXXXX-EQ4BK

INFO server comment - Maximum connections: Unlimited

INFO server comment - Hardware Available Processors: 4

INFO server comment - Hardware Physical Memory: 1814MB/2047MB

INFO server comment - Hardware Swap Space: 4095MB/4095MB

INFO server comment - Max File Descriptor Count: Unlimited

INFO server comment - OS Name: Windows XP

INFO server comment - OS Version: 5.1

INFO server comment - OS Architecture: x86

INFO server comment - OS CPU: pentium_pro+mmx pentium_pro pentium+mmx pentium i4

86 i386 i86

INFO server comment - Java Name: Java HotSpot™ Client VM

INFO server comment - Java Vendor: Sun Microsystems Inc.

INFO server comment - Java Version: 1.6.0_07

INFO server comment - Java VM Version: 10.0-b23

INFO server comment - Java Spec Version: 1.6

INFO server comment - Java Home: C:\opt\jdk1.6.0_07\jre

INFO server comment - Java Max Heap Size: 762MB

INFO server comment - Java Architecture: 32

INFO server comment - CMDInterface now listening: [any]:8083

INFO server comment - vhost home directory: C:\opt\WowzaMediaSystems\WowzaMediaS

erver2Preview7

INFO vhost vhost-start defaultVHost -

INFO vhost comment defaultVHost RTMP/RTMPT bind attempt ([any]:1935)

INFO vhost comment defaultVHost Bind successful ([any]:1935)

INFO vhost comment defaultVHost RTMP/RTMPT bind attempt ([any]:8086)

INFO vhost comment defaultVHost Bind successful ([any]:8086)

INFO application app-start definst live/definst

INFO session connect-pending 10.1.139.17 -

INFO session connect-pending 10.1.139.17 -

INFO session connect 10.1.139.17 -

INFO session connect 10.1.139.17 -

INFO stream create - -

INFO stream create - -

INFO stream publish gLowStream -

INFO stream publish gStream2 -

INFO session connect-pending 10.1.139.17 -

INFO session connect 10.1.139.17 -

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gLowStre

am]: chunkDurationTarget: 10000

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gLowStre

am]: chunkDurationTolerance: 500

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gLowStre

am]: audioGroupCount: 3

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gLowStre

am]: playlistChunkCount:3

INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream

packetizer: cupertinostreamingpacketizer:gLowStream

INFO server comment - CupertinoPacketHandler.startStream[live/definst/gLowStre

am]

WARN server comment - LiveStreamPacketizerCupertino.handlePacket: Video encoding

settings are beyond iPhone/iPod touch recommendations (Baseline/3.0) [live/_def

inst_/gLowStream]: {H264CodecConfigInfo: profile: “Main”, level: 1.3, frameSize:

320x240, aspect: 0/1, }

INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream

packetizer: smoothstreamingpacketizer:gLowStream

INFO server comment - LiveStreamPacketizerSmoothStreaming.startStream[live/_defi

nst_/gLowStream]

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream2

]: chunkDurationTarget: 10000

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream2

]: chunkDurationTolerance: 500

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream2

]: audioGroupCount: 3

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream2

]: playlistChunkCount:3

INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream

packetizer: cupertinostreamingpacketizer:gStream2

INFO stream create - -

INFO server comment - CupertinoPacketHandler.startStream[live/definst/gStream2

]

INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream

packetizer: smoothstreamingpacketizer:gStream2

WARN server comment - LiveStreamPacketizerCupertino.handlePacket: Video encoding

settings are beyond iPhone/iPod touch recommendations (Baseline/3.0) [live/_def

inst_/gStream2]: {H264CodecConfigInfo: profile: “Main”, level: 1.3, frameSize: 3

20x240, aspect: 0/1, }

INFO stream publish gHighStream -

INFO server comment - LiveStreamPacketizerSmoothStreaming.startStream[live/_defi

nst_/gStream2]

INFO server comment - LiveStreamPacketizerCupertino.handlePacket: Audio info[liv

e/definst/gLowStream]: {AACFrame: size: 0, rate:32000, channels:1, samples:102

4, errorBitsAbsent:true, profileObjectType:2}

INFO server comment - LiveStreamPacketizerCupertino.handlePacket: Audio info[liv

e/definst/gStream2]: {AACFrame: size: 0, rate:32000, channels:1, samples:1024,

errorBitsAbsent:true, profileObjectType:2}

INFO session connect-pending 10.1.139.17 -

INFO session connect 10.1.139.17 -

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gHighStr

eam]: chunkDurationTarget: 10000

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gHighStr

eam]: chunkDurationTolerance: 500

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gHighStr

eam]: audioGroupCount: 3

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gHighStr

eam]: playlistChunkCount:3

INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream

packetizer: cupertinostreamingpacketizer:gHighStream

INFO server comment - MediaStreamMap.getLiveStreamPacketizer: Create live stream

packetizer: smoothstreamingpacketizer:gHighStream

INFO server comment - CupertinoPacketHandler.startStream[live/definst/gHighStr

eam]

INFO server comment - LiveStreamPacketizerSmoothStreaming.startStream[live/_defi

nst_/gHighStream]

WARN server comment - LiveStreamPacketizerCupertino.handlePacket: Video encoding

settings are beyond iPhone/iPod touch recommendations (Baseline/3.0) [live/_def

inst_/gHighStream]: {H264CodecConfigInfo: profile: “Main”, level: 3.1, frameSize

: 720x540, aspect: 0/1, crop: l:0 r:0 t:0 b:2, }

INFO stream create - -

INFO stream publish gStream -

INFO server comment - LiveStreamPacketizerCupertino.handlePacket: Audio info[liv

e/definst/gHighStream]: {AACFrame: size: 0, rate:44100, channels:2, samples:10

24, errorBitsAbsent:true, profileObjectType:2}

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream]

: chunkDurationTarget: 10000

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream]

: chunkDurationTolerance: 500

INFO server comment - LiveStreamPacketizerCupertino.init[live/definst/gStream]

: audioGroupCount: 3

A

That did the trick. Unfortunately the iPhone lag only dropped down to 20 seconds from 45 seconds. I updated my LiveStreamPacketizer.xml with

<Property>
	<Name>chunkDurationTarget</Name>
	<Value>100</Value>
	<Type>Integer</Type>
</Property>
<Property>
	<Name>chunkDurationTolerance</Name>
	<Value>100</Value>
	<Type>Integer</Type>
</Property>

Is there anything else I can adjust to squeeze out anymore latency?

Thanks

-Garvin

Hi,

Could anyone tell me what exactly to change on live/Application.xml and conf/LiveStreamPacketizers.xml?

I tried to change “chunkDurationTarget” in conf/LiveStreamPacketizers.xml (no change to live/Application.xml) but either didn’t get any improvement on the latency (50 seconds on 300k streams) or the media couldn’t be played.

We just want to have latency within 20 seconds.

Thanks a lot!

BTW: I am using Wowza 2.