Please find here a short abstract of this project. Detailed informations are available in the detailed project information section.
The Red5 server must be able to manage up to 150 point-to-point streams. Incoming streams are SIP phone calls and local wav files and outgoing streams are for flash applets on websites and the VOIP (SIP) connection. Local wav files can be started remote by a http request to the Red5 server. Only one-way-communication from server to flash applet and not the other way round is needed. Streaming address management with a remote (web-)server is needed because all streams are 1-to-1-connections and the streaming addresses must be generated on the fly. Streams should be recorded.
If you feel able to handle this points then please read the detailed project description.
General informations about the project for what I need the Red5 server: I have kind of a prank call website ([url removed, login to view] - german) from where a visitor can start a realtime connection between the website and any phone number he enters. Actually the webserver send the entered phone number to an Asterisk server which starts the VOIP call, send the live stream to a Wowza server and that one streams the audio signal to the website from where the call was started and where it is played in a flash applet. So the website user can hear the phone called person in realtime. This is boring of course until the user cannot talk to the other side. But on the website he can click on different links/buttons to start a pre-recorded audio clip like "Just want to say that the pizzas are delivered a bit later." Such a click let the flash server start that chosen wav file to stream it to the SIP user. If then the SIP user answers that he never ordered a pizza the web user hears that and can click another button to start another wav file like "Yes, you did! You ordered 20 pizza and they are on the way to you!". Okay, now I think you have an idea about the project. ;-) I am building a lot of things new now for a new version of my website and in this context I want to find a slimer solution for the backend. So I want to replace the Asterisk and the Wowza server with one Red5 server.
Please allow me now to write down every single point what the Red5 server must be able to do:
A website visitor enters a phone number and click on a "start call" button. The web server generates a random flash streaming address and delivers it as a flashvars variable to the web client. Simultanously the web server sends the entered phone number and the generated streaming address to the Red5 server. This one starts the SIP phone call and streams the audio signal from the generated address to the remote web client. The Red5 server should (if possible) provide a http interface to receive commands from the web user to start and play certain wav files. Of course Red5 must be able to match incoming play commands to the correct SIP line. I think it is senseful to add a part of the generated streaming address as an attached parameter to the http request to let the Red5 know for which present line this command is intended. If the wav file is played it should be delivered to the phone user as well as to the web user.
That is what I need. There are only some few additional variables send from the webserver to the Red5 server which should be handled.
How many seconds a phone call can run as maximum until is is canceled.
sending clip phone number
The phone number which Red5 should send to the called phone to be displayed in the display.
Record audio stream or not
I think it's clear what this variable is for :-)
How to cancel a VOIP connection
The standard way of a prank phone call let's the web user decide when to start which wav file and when to end the phone call. But there is also another kind of prank call. Such ones only play one (long) single wav file and if this wav file finishs the VOIP call should be canceled automatically. The main difference is that in such a case of such a one single clip the web user is not allowed to influence this phone call after it has started. Means: Even if the web user closes his browser window the phone call must run until the wav file ends. In the standard mode (with web user interactions allowed) the VOIP call is finished when the web user leaves the wesite where the audio streaming is coming in through the flash applet. I think the best way will be to send as the variable value the wav file name which should be run as a single wav file. If this variable value is empty then is is a standard prank phone call.
Automatical or manual start of wav play
This variable tells the Red5 if it should start a wav file automatically when the phone user picks up the phone or not.
flash streaming or mp3/aac/ogg/mp3
The standard is the flash streaming. But I would like to provide iPhone users as well with a stream. In this cases it is no problem if there is a time lag of 5 seconds or not. So it would be great if you can find a way to stream (or offer) a format what can be received from iPhones.
So far to the variables. As a final note just to say that it is important only to have a small time delay. Also the Red5 should be able to detect if a phone user ended the phone call to give that used SIP chanel free for further phone calls.
If you have any questions please do not hesitate to ask me!