[Live-devel] RSTP a Live Stream to an AMINO A125

Liam Carter liam at europa-network.com
Fri Jan 20 06:35:41 PST 2012


Good Afternoon.

I have been given the task of getting LIVE555 to work with our current 
system.

You have communicated with my colleague Ben Wheway (See Below).

I have read the email below and I am quite confused.

Could I have a few more pointers please.

We have managed to get a test.ts file to stream to an Amino A125 using 
./testOnDemandRTSPServer and the file is contained in the same directory.

We point the amino (using a customer html page) to 
http://xxx.xxx.xxx.xxx:xxxx/mpeg2TransportStreamTest

I am stuck on the ingest. I have tried to find an example of the 
"createNewStreamSource()" function so I can copy and re-write it. I have 
however not found an example.

Could you advise further please.

Thanks for any help in advance.

Many Regards

Liam

*From:*live-devel-bounces at ns.live555.com 
[mailto:live-devel-bounces at ns.live555.com] *On Behalf Of *Ross Finlayson
*Sent:* 16 December 2011 02:57
*To:* LIVE555 Streaming Media - development & use
*Subject:* Re: [Live-devel] Multicast to rtsp with Amino A125

    We have many Amino A125 STB´s. The server we currently use to rtsp
    to them is outdated and we need a new system to stream to them. Your
    software appears to be able to do this but im struggling to find
    guides to achieve this. Here is a background of what we have as in
    streams etc:

    We multicast from our encoders to our current streaming server. This
    server then RTSP´s out to the Amino STB. The multicast input stream
    is MPEG4/h264 TS UDP. We then RTSP over UDP unicast out to the STB.

    So we need to input UDP multicast to live555 server and then RTSP
    UDP unicast to the Amino STB.

Yes, you should be able do this fairly easily.  I suggest using the 
"testOnDemandRTSPServer" demo application as a model; note, in 
particular, the code for streaming Transport Stream data (lines 215 
through 218 of "testProgs/testOnDemandRTSPServer.cpp").

The one change that you'll need to make to this code is that rather than 
adding a "MPEG2TransportFileServerMediaSubsession" to the 
"ServerMediaSession" object, you'll be adding an object of a different 
"OnDemandServerMediaSubsession" - one that you will write yourself.  In 
fact, I suggest that you subclass 
"MPEG2TransportFileServerMediaSubsession".  If you do that, then you 
will need only to redefine the "createNewStreamSource()" virtual 
function.  In your subclass's constructor, when it calls the parent 
class ("MPEG2TransportFileServerMediaSubsession")'s constructor, you 
should set the "fileName" and "indexFile" parameters to NULL, and set 
"reuseFirstSource" to True.  (This tells the server to use the same 
input source object, even if more than one client is streaming from the 
server concurrently.)

Your subclass's "createNewStreamSource()" virtual function can be quite 
simple - basically just creating a "groupsock" for your IP multicast 
address, and then creating a "BasicUDPSource" using that "groupsock" 
object.  I suggest looking at the "testRelay" demo application code for 
a hint about how to do this.

(Because your input is Transport Stream data packed into UDP packets, I 
don't think that you'll need a separate 'framer' object in front of the 
"BasicUDPSource" object.  Instead, you'll probably be able to transfer 
the contents of each incoming UDP multicast packet directly into output 
UDP unicast packets.  The method that I've outlined above should do that.)

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/20120120/b2bf0df0/attachment.html>


More information about the live-devel mailing list