I could use some help/advise with a couple issues.
First to understand how I have things setup right now. My setup is as follows.
I currently have approximately 30 Sony H.264 IP cameras around the world. On Amazon’s EC2 cloud, I have the following systems setup.
Loadbalancer / Origin Server – ami-c7184182 - Small Server
Qty. 10- Edge Servers – ami-c7184182 – Small Servers
Qty. 3 – Extra Large High CPU Intances – ami-75a8f130 – w/ Monthly WMS License setup to be transcoders.
The IP cameras typically all have public IP address and I access the web interface via port 80 and the RTSP stream on port 554.
In two cases now, I am running a Mac Mini Lion Server w/ OSX 10.7.4 and 4GB of Ram. The Lion server sits on the local network where 2 to 4 Sony IP cams reside. The Mac server is running 3.1.4 w/ a monthly license. Streamnamealias AddOn and LiveStreamRecord3.0 AddOn are on the system and an RTSP URL entry is made into the aliasmap.stream.txt file as follows:
Using the stream manager, I start the pull of the stream. I also occasionally trigger recording on the local Mac Server where bandwidth to the camera is better and I can pull a higher quality video stream for recording.
In all other locations, I have the Extra Large CPU Instances running the StreamNameAlias and LiveStreamRecord AddOns. These large instances are setup to transrate the incoming H.264 / G.711 64Kbps audio stream. I have the transrate.xml template setup as follows.
Source – Video passthru w/ AAC Audio
942p – H.264 Video and AAC Audio - 942x530 res at 1024Kbps bit rate
360p – H.264 Video and AAC Audio – 640x360 res at 500Kbps bit rate w/ Overlay enabled
audio – Video Disabled and AAC Audio at 48Kbps (to pass App store w/ Apple)
The three transcoder / Large instance machines either pull the feed directly from the camera or from the mac mini servers that are local to the cameras.
IP Cam URL in aliasmap.stream.txt file: streamname=rtsp://userassword@<CamIP>:554/media/video1
URL in aliasmap.stream.txt file to pull stream from mac server:
The transcoder machine then generates the following streams which I can view directly from the transcoder…
streamname_360p, streamname_942p, streamname_source and streamname_audio
If I point an IOS device directly to the transcoder with a URL as follows:
The adaptive delivery works and I can see the ios switch between the bit rate streams.
To allow this to scale, I have an orgin server setup which is also running the load balancer and 10 edge servers that pull the feeds from from the origin/load server.
On the origin server, I have StreamNameAlias AddOn running and use the streammanager / StartupStreams.xml file to pull the streams from the Transcoders. In two cases, I have the origin server pulling the feed directly from the IP camera.
The origin server is (CURRENTLY) setup in the aliasmap.stream.txt file with URLs/entries as follows:
I just recently setup the ngrp:streamname_all and adaptive delivery to the IOS devises. And it works when I pull from the transcoder directly.
Now for my issues:
1. I’m not sure if this is the best way to setup such a network. I have issues with many streams timing out, Buffer Full, Buffer Empty, the recording stops on the transcoders as a result.. …. And most recently with IP cameras behind a monowall firewall with port forwarding to the IP camera on a private IP and port 80 and port 554… Seems that the stream has a really tough time staying stable… Not sure if the firewall can handle the traffic or what the issue is.
With that said, do I have things setup properly? Should the mac mini servers be setup as liverepeater origin servers and the transcoders be both a liverepeater origin and edge server?? I saw an article noting RTP streaming over UDP and how that works well on EC2.
2. I’ve tried a few different ways to enter the stream name into the aliasmap.stream.txt file on the origin serer and I’ve tried to pull the ngrp:streamname_all adaptive HLS feed from the transcoder into / thru the origin server to be delivered via the edge servers and I can’t figure out how to do it. I’m unable to find a thread or article that talks about feeding the adaptive feed through the origin / edge servers cluster.
Your pointers / assistance would be much appreciated.