Wowza Community

Using Apple's QuickTime Broadcaster with Wowza Server (RTSP/RTP)

Make sure you are trying to play the stream you are publishing. Your application name has changed from “rtplive” to "live. Use the same application name that you are using in the encoder, and same stream name. Check the encoder settings, and align with the url you are forming to play the stream.

It would be easier to debug the application without “DEBUG” logging turned on. You should see a publish event from the encoder and each play attempt.

Richard

Take a look at this guide:

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

It played here for me with Quicktime player 7.6.7 on Windows.

Richard

Oh, sorry, that guide is specific to Windows.

Richard

Flash is the still the best way to get through to the most people, and there is no player configuration on the user end necessary.

Richard

Quicktime player will work iif you open up all UDP ports and add TCP port 554 to /conf/VHost.xml /HostPort /Port “1935”, change that to “1935,554”

QT player is different on Mac and Windows. For example cupertino live streaming is supported in QT on Mac but not Windows. This is player/platform issue, and it is one reason why Flash is still the recommended client for the desktop.

Richard

Looks like I forgot to point you to this:

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

Sorry about that. That could help.

Opening UDP ports 6970 - 9999 is good. The Mobile Trouble Shooting Guide suggest all UDP ports (I know this is not a mobile device issue, but I’m just putting that out there)

Richard

That’s great, glad it’s working. Thanks for the update.

Richard

The bitrate is very high: 2mbs and higher.

I have very fast connection and it is pretty good VLC and Quicktime. I have seen some “max headroom” affect, but very slight.

You have to get the bitrate down.

Richard

It has been my experience that QuickTime doesn’t play nice on RTSP coming from Wowza. I’ve seen a number of forum posts here from people with similar experiences.

We saw the “Max Headroom” effect a lot on RTSP when it goes over UDP via the internet to/from a Wowza instance on EC2. This happened both when encoding using WireCast (before it did RTMP), and when playing back RTSP with an Amino STB.

My strong suspicion is that this is an artifact related to UDP over a network without end-to-end QoS.

When I use this method (QT Broadcaster --> Wowza), the audio and video are attempting to bind to the same UDP ports. Thus I only get audio (which binds first), and no video. Here is the SDP code from the debugging log:

v=0

o=- 11 4293238381 IN IP4 127.0.0.0

s=QuickTime

c=IN IP4 [server ip]

t=0 0

a=range:npt=now-

a=isma-compliance:2,2.0,2

m=audio 6970 RTP/AVP 96

b=AS:63

a=rtpmap:96 mpeg4-generic/44100/1

a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1208

a=mpeg4-esid:101

a=control:trackid=1

m=video 6970 RTP/AVP 97

b=AS:643

a=rtpmap:97 H264/90000

a=fmtp:97 packetization-mode=1;profile-level-id=4D4016;sprop-parameter-sets=J01AFqkYFAe2ANQYBBrbCte98BA=,KN4JF6A=

a=mpeg4-esid:201

a=cliprect:0,0,480,640

a=framesize:97 640-480

a=control:trackid=2

I used “netstat -a” and determined there were no other programs using the 6970-9999 UDP port range prior to starting my broadcast. Once I start my broadcast in QT Broadcaster, Wowza binds on 6970 and 6971 first, then throws these errors:

WARN 200 - RTPUDPTransport.bind[live/definst]: Address already in use: 0.0.0.0/0.0.0.0:6970

WARN 200 - RTPUDPTransport.bind[live/definst]: Address already in use: 0.0.0.0/0.0.0.0:6971

Which seem to confirm that it’s trying to use the same two ports for video, instead of moving up to 6972 and 6973. Using Wirecast via RTSP works fine – it binds to four consecutive ports (i.e. 6970-6973) and I see the following SDP in the logs:

v=0

o=- 412523967 412523967 IN IP4 127.0.0.0

s=Wirecast

c=IN IP4 [server ip]

t=0 0

a=range:npt=now-

m=audio 0 RTP/AVP 96

a=rtpmap:96 mpeg4-generic/44100/1

a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1208

a=control:trackid=1

m=video 0 RTP/AVP 97

a=rtpmap:97 H264/90000

a=fmtp:97 packetization-mode=1;profile-level-id=4D4016;sprop-parameter-sets=J01AFqkYFAe2ANQYBBrbCte98BA=,KN4JyA==

a=cliprect:0,0,480,640

a=framesize:97 640-480

b=AS:627

a=control:trackid=2

Any ideas? I can turn on the “Broadcast over TCP” option in Broadcaster, but then the audio and video are very choppy and blocky, so I’d rather get the UDP method working correctly. (Both the UDP and TCP methods play fine through Wirecast.)

I’m using WMS 2 with the new patch11 applied, server tuned, and firewall off.

Ah yes – forceInterleaved fixed the TCP blockiness. Don’t know why I didn’t think of that.

As for the “start at a higher port” suggestion, this is the Automatic Unicast (Announce) method, so no port is specified by me. I presume Wowza is generating those?

I just sent an email to the support address with the requested files.

EDIT: Forgot to add that QuickTime Broadcaster is version 1.5.3 (the most recent version).

A helpful hint (posted elsewhere too, but relevant to this method):

In QuickTime Broadcaster, uncheck the “Frame Reordering” option under the Video tab. This will keep your audio and video in sync through any user interface slowdown in a flash video player.

Hi,

I have followed all the steps above plus tried most of the other ways to get QT Broadcaster (QTB) to stream to WOWZA. But when I open the sample live.html from the example/livestreaming/client directory…I can’t get the flash player to connect and play my live stream.

I have tested that WOWZA works when using VOD. So WOWZA is working.

I have setup QTB to send a stream to WOWZA using steps above in this thread.

To confirm that WOWZA correctly receives the QTB stream;

I modified the application.html file to Set the Streams/StreamType

property to: live-record (instead of live).

I start WOWZA and I broadcast from QTB.

I confirm that a file is being recorded in the content directory and the file is valid and will play my content (after I stop broadcasting)

But when I run the live.html and put the required info in the player

rtmp://localhost/live

myStream.sdp

…I always get “Failed to play myStream; stream not found.”

I tried running live.html on the server where WOWZA is running (as above) but also on a seperate machine.

I am running MAC OSX snow leopard and leopard…With no difference in results.

I have tried using mystream, mystream.sdp for file name…But always I get stream not found.

Does anyone have similar issue? Can someone suggest a solution?

Thank you.

Ok,

Your right I had the wrong capitalization. Thank you.

Now I have another problem that’s very strange.

I can’t seem to get QTB to stream me the video…I only get the audio in the files I record.

I noticed in the log that there is a warning about a port being already in use…

Do you have an idea of what I did wrong?

Thank you.

DEBUG server comment - uri: ANNOUNCE rtsp://169.254.204.110:1935/live/mystream.sdp RTSP/1.0

DEBUG server comment - method: ANNOUNCE

DEBUG server comment - context: rtsp://169.254.204.110:1935/live/mystream.sdp

DEBUG server comment - protocol: RTSP/1.0

DEBUG server comment - cseq: 1

DEBUG server comment - content-type: application/sdp

DEBUG server comment - user-agent: QuickTime/7.6.3 (qtver=7.6.3;cpu=IA32;os=Mac 10.6.2)

DEBUG server comment - content-length: 442

DEBUG server comment - uri: ANNOUNCE rtsp://169.254.204.110:1935/live/mystream.sdp RTSP/1.0

DEBUG server comment - method: ANNOUNCE

DEBUG server comment - context: rtsp://169.254.204.110:1935/live/mystream.sdp

DEBUG server comment - protocol: RTSP/1.0

DEBUG server comment - cseq: 2

DEBUG server comment - content-type: application/sdp

DEBUG server comment - user-agent: QuickTime/7.6.3 (qtver=7.6.3;cpu=IA32;os=Mac 10.6.2)

DEBUG server comment - authorization: Digest username=“matrox”, realm=“Streaming Server”, nonce=“e96e258a4c181f456096c890e2e0068a”, uri="/live/mystream.sdp", response=“6226b7fc45d003904a189d7e05a68abe”

DEBUG server comment - content-length: 442

INFO rtsp connect 1974395411 -

DEBUG server comment - sdp: v=0

DEBUG server comment - sdp: o=- 0 3451234958 IN IP4 127.0.0.0

DEBUG server comment - sdp: s=QuickTime

DEBUG server comment - sdp: c=IN IP4 169.254.204.110

DEBUG server comment - sdp: t=0 0

DEBUG server comment - sdp: a=range:npt=now-

DEBUG server comment - sdp: m=audio 6970 RTP/AVP 96

DEBUG server comment - sdp: b=AS:8

DEBUG server comment - sdp: a=rtpmap:96 mpeg4-generic/8000/1

DEBUG server comment - sdp: a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1588

DEBUG server comment - sdp: a=mpeg4-esid:101

DEBUG server comment - sdp: a=control:trackid=1

DEBUG server comment - sdp: m=video 6970 RTP/AVP 97

DEBUG server comment - sdp: b=AS:1000

DEBUG server comment - sdp: a=rtpmap:97 X-QT/90000

DEBUG server comment - sdp: a=cliprect:0,0,480,640

DEBUG server comment - sdp: a=framesize:97 640-480

DEBUG server comment - sdp: a=control:trackid=2

INFO rtsp announce 1974395411 -

DEBUG server comment - uri: OPTIONS rtsp://169.254.204.110:1935/live/mystream.sdp RTSP/1.0

DEBUG server comment - method: OPTIONS

DEBUG server comment - context: rtsp://169.254.204.110:1935/live/mystream.sdp

DEBUG server comment - protocol: RTSP/1.0

DEBUG server comment - cseq: 3

DEBUG server comment - user-agent: QuickTime/7.6.3 (qtver=7.6.3;cpu=IA32;os=Mac 10.6.2)

DEBUG server comment - authorization: Digest username=“matrox”, realm=“Streaming Server”, nonce=“e96e258a4c181f456096c890e2e0068a”, uri="/live/mystream.sdp", response=“a0585051da589b220855872201c32f61”

DEBUG server comment - uri: SETUP rtsp://169.254.204.110:1935/live/mystream.sdp/trackid=1 RTSP/1.0

DEBUG server comment - method: SETUP

DEBUG server comment - context: rtsp://169.254.204.110:1935/live/mystream.sdp/trackid=1

DEBUG server comment - protocol: RTSP/1.0

DEBUG server comment - cseq: 4

DEBUG server comment - transport: RTP/AVP;unicast;client_port=6970-6971;mode=record

DEBUG server comment - user-agent: QuickTime/7.6.3 (qtver=7.6.3;cpu=IA32;os=Mac 10.6.2)

DEBUG server comment - accept-language: en-US

DEBUG server comment - authorization: Digest username=“matrox”, realm=“Streaming Server”, nonce=“e96e258a4c181f456096c890e2e0068a”, uri="/live/mystream.sdp", response=“47960edd94379bc66ad9f7285955ce0b”

INFO server comment - sortPackets[2]: sortBufferSize:750

DEBUG server comment - onFlushNotifyClients: false

DEBUG server comment - flushInterval: 125

DEBUG server comment - verboseDebug: false

INFO stream create - -

DEBUG server comment - RTPDePacketizerMPEG4AAC.init

DEBUG server comment - RTPTrack.getTransportStr: RTP/AVP;unicast;client_port=6970-6971;mode=record;source=169.254.204.110;server_port=6970-6971

DEBUG server comment - uri: SETUP rtsp://169.254.204.110:1935/live/mystream.sdp/trackid=2 RTSP/1.0

DEBUG server comment - method: SETUP

DEBUG server comment - context: rtsp://169.254.204.110:1935/live/mystream.sdp/trackid=2

DEBUG server comment - protocol: RTSP/1.0

DEBUG server comment - cseq: 5

DEBUG server comment - transport: RTP/AVP;unicast;client_port=6972-6973;mode=record

DEBUG server comment - session: 1974395411

DEBUG server comment - user-agent: QuickTime/7.6.3 (qtver=7.6.3;cpu=IA32;os=Mac 10.6.2)

DEBUG server comment - accept-language: en-US

DEBUG server comment - authorization: Digest username=“matrox”, realm=“Streaming Server”, nonce=“e96e258a4c181f456096c890e2e0068a”, uri="/live/mystream.sdp", response=“47960edd94379bc66ad9f7285955ce0b”

DEBUG server comment - RTPDePacketizerQuicktimeH264.init

DEBUG server comment - RTPTrack.getTransportStr: RTP/AVP;unicast;client_port=6972-6973;mode=record;source=169.254.204.110;server_port=6970-6971

DEBUG server comment - uri: RECORD rtsp://169.254.204.110:1935/live/mystream.sdp RTSP/1.0

DEBUG server comment - method: RECORD

DEBUG server comment - context: rtsp://169.254.204.110:1935/live/mystream.sdp

DEBUG server comment - protocol: RTSP/1.0

DEBUG server comment - cseq: 6

DEBUG server comment - session: 1974395411

DEBUG server comment - user-agent: QuickTime/7.6.3 (qtver=7.6.3;cpu=IA32;os=Mac 10.6.2)

DEBUG server comment - authorization: Digest username=“matrox”, realm=“Streaming Server”, nonce=“e96e258a4c181f456096c890e2e0068a”, uri="/live/mystream.sdp", response=“e5f3dff79cd569ff0f12024b57eb28ee”

INFO stream publish mystream.sdp -

DEBUG server comment - config: session: setReuseAddress: from:false to:true

DEBUG server comment - config: session: setReceiveBufferSize: from:65507 to:256000

DEBUG server comment - config: session: setSendBufferSize: from:65507 to:65000

DEBUG server comment - config: session: setTrafficClass: from:0 to:0

INFO server comment - IN: UDPHandler: create: com.wowza.wms.rtp.model.RTPPort@da0348

INFO server comment - RTPUDPTransport.bind: 0.0.0.0/0.0.0.0:6970

DEBUG server comment - config: session: setReuseAddress: from:false to:true

DEBUG server comment - config: session: setReceiveBufferSize: from:65507 to:256000

DEBUG server comment - config: session: setSendBufferSize: from:65507 to:65000

DEBUG server comment - config: session: setTrafficClass: from:0 to:0

INFO server comment - IN: UDPHandler: create: com.wowza.wms.rtp.model.RTPPort@a6345c

INFO server comment - RTPUDPTransport.bind: 0.0.0.0/0.0.0.0:6971

WARN server comment - RTPUDPTransport.bind: Address already in use: 0.0.0.0/0.0.0.0:6970

WARN server comment - RTPUDPTransport.bind: Address already in use: 0.0.0.0/0.0.0.0:6971

INFO rtsp publish 1974395411 -

INFO server comment - IN: UDPHandler: sessionCreated

INFO server comment - IN: UDPHandler: sessionOpened: com.wowza.wms.rtp.model.RTPPort@da0348

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 86 4a e8 92 f3 4f 5e 96 77 1f 00 80 01 }

DEBUG server comment - auxiliaryDataSizeLength: 0

DEBUG server comment - constantSize: 0

DEBUG server comment - constantDuration: 0

DEBUG server comment - maxDisplacement: 0

DEBUG server comment - deinterleaveBufferSize: 0

DEBUG server comment - sizeLength: 13

DEBUG server comment - indexLength: 13

DEBUG server comment - indexDeltaLength: 3

DEBUG server comment - CTSDeltaLength: 0

DEBUG server comment - DTSDeltaLength: 0

DEBUG server comment - randomAccessIndication: 0

DEBUG server comment - streamStateIndication: 0

DEBUG server comment - auxiliaryDataSizeLength: 0

INFO server comment - UDPTransport.firstPacket: 0.0.0.0/0.0.0.0:6970

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 87 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 88 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 89 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 8a 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 8b 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 8c 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 8d 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 8e 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 8f 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 90 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 91 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 92 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 93 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 94 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 95 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 96 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 97 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 98 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 99 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 9a 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 9b 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:500] {80 e1 45 9c 4a e8 92 f3 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:315] {80 e1 45 9d 4a e8 9e ae 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:559] {80 e1 45 9e 4a e8 aa 69 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:891] {80 e1 45 9f 4a e8 b6 24 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a0 4a e8 c1 df 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:695] {80 e1 45 a1 4a e8 c1 df 4f 5e 96 77 1e 00 80 01 }

INFO server comment - IN: UDPHandler: sessionCreated

INFO server comment - IN: UDPHandler: sessionOpened: com.wowza.wms.rtp.model.RTPPort@da0348

DEBUG server comment - rtp[trackid=1:347] {80 e0 45 86 4a e8 87 6b 4f 5e 96 77 00 30 02 00 }

DEBUG server comment - header: end:true tc:1256753003 sz: 64 idx:0 cts:0 dts:0 rap:0 ss:0

DEBUG server comment - header: end:true tc:1256754027 sz: 180 idx:0 cts:0 dts:0 rap:0 ss:0

DEBUG server comment - header: end:true tc:1256755051 sz: 83 idx:0 cts:0 dts:0 rap:0 ss:0

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a2 4a e8 cd 9a 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a3 4a e8 cd 9a 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:408] {80 e1 45 a4 4a e8 cd 9a 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a5 4a e8 d9 55 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a6 4a e8 d9 55 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a7 4a e8 d9 55 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 a8 4a e8 d9 55 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:77] {80 e1 45 a9 4a e8 d9 55 4f 5e 96 77 1e 00 80 01 }

DEBUG server comment - rtp[trackid=1:1036] {80 61 45 aa 4a e8 e5 10 4f 5e 96 77 1e 00 80 01 }

WOW!

Your are a champ!

That did the trick!

Thank you!

Hi Again,

So I have QTB sending data out over TCP.

I have no problem opening the stream with the Flash Player sample in live.html (when using the right filename :slight_smile: )

I-Phone also seems to work fine. Until the license cuts it off! :slight_smile:

But when I open the stream using VLC as a RTSP stream it opens and plays for a few seconds but eventually stops. I noticed that if I make sure the video is always moving…(I keep waving at the camera) it won’t stop streaming.

When I try to use QT player it seems to only open the stream as an audio file. I don’t get any video.

Any clue what my problem might be?

Of course if I connect directly to QTB it works fine. It’s only when going through Wowza that I have a problem.

Finally got Wirecast to work with Wowza and iPhone.

but i dont like the quality

can you advise about best setting for Wirecast to work with iphone

hi

am trying to encode using FME with video h264 baseline 3.0 bitrate 350

am getting on my iphone (movie format unsupported) any suggestions please?

HI

thank all it worked just perfect could not think of better

1- if i want to stream audio Only is it the same thing?

2- if i want to use FME with enabling multiple bit rate option will this work, and how i can make it works with iphone?