[Live-devel] stream descriptor only reachable by HTTP

Markus Schumann markuss at sonicfoundry.com
Mon Jan 21 10:25:06 PST 2013


Ross,

Thanks for your input.

I reported the absence of RTSP for the unicast case to the server maker.
Luckily I can configure the device to multicast - here is the SDP

http://10.0.70.25/stream.sdp outputs:

v=0
o=- 8500488 8500488 IN IP4 10.0.70.25
s=ESP H264 STREAM
e=NONE
t=0 0
m=video 8800 RTP/AVP 96
c=IN IP4 225.0.0.0/1
a=rtpmap:96 H264/90000
a=fmtp:96 media=video; clock-rate=90000; encoding-name=H264; sprop-parameter-sets=Z0IAH6aAUAW5AA==,aM44gAAAAAA=

Do I have to use a lightweight HTTP client to get the SDP and then side load your RTPClient with the string?

Thanks
Markus.


From: live-devel-bounces at ns.live555.com [mailto:live-devel-bounces at ns.live555.com] On Behalf Of Ross Finlayson
Sent: Thursday, January 17, 2013 6:37 PM
To: LIVE555 Streaming Media - development & use
Subject: Re: [Live-devel] stream descriptor only reachable by HTTP

I have an RTP source where it's stream descriptor is only available via HTTP - any advice on how to go about it?
[...]

Browser output:

v=0
o=- 8161451 8161451 IN IP4 10.0.70.25
s=ESP H264 STREAM
e=NONE
t=0 0
m=video 8800 RTP/AVP 96
c=IN IP4 10.0.71.24
a=rtpmap:96 H264/90000
a=fmtp:96 media=video; clock-rate=90000; encoding-name=H264; sprop-parameter-sets=Z0IAH6aAUAW5AA==,aM44gAAAAAA=

Grumble....  I wish people (in this case, the developers of that server) would stop thinking that they can avoid implementing RTSP.  The RTSP protocol was designed and standardized for a good reason!  Generally speaking, trying to specify a stream using a SDP description only - without using the RTSP protocol - works only for multicast streams, not unicast streams like this.

But what *might* work here is the following:
1/ Call "MediaSession::createNew()" with this SDP description (string) as parameter, to create a new "MediaSession" object.
2/ Call "MediaSession::initiate()" on this "MediaSession" object.  This will create a "RTPSource" (and corresponding "RTCPInstance") objects, to receive the stream.
3/ Then, iterate through the "MediaSubsession" objects (there should be just one) of the "MediaSession" object, and call
            yourMediaSinkObject->startPlaying(*(subsession->readSource()), <etc>);

One potential issue here is that - using this approach - RTCP "RR" packets from you (the receiver) will not get sent back to the server (because the receiver - because it didn't use RTSP - has no way of knowing the server's IP address).  This means that if the server uses "RR" packets coming from the receiver to indicate 'liveness', then it will eventually time out the connection.

If you have any control over the server, it would be better if you told it to stream via multicast instead of unicast, or - even better - to implement RTSP!

Ross Finlayson
Live Networks, Inc.
http://www.live555.com/

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.live555.com/pipermail/live-devel/attachments/20130121/1527df55/attachment-0001.html>


More information about the live-devel mailing list