[Asterisk-video] MCU architecture
Sergio Garcia Murillo
sergio.garcia at fontventa.com
Fri Jan 30 04:18:10 CST 2009
Hi everyone,
Currently the mcu solution has two main components, the VideoMixer and
the mcuWeb.
The videomixer component handles ONLY media, i.e. it receives rtp,
unpack audio and video, performs audio/mixing video, encoding, packing
and rtp sending. It is completely controlled by a xmlrpc interface and
has no service logic at all.
The current xmlprc api has the following methods:
-Create/Destroy conference
-Add/Remove participant to conference
-Set conference parameters like video size and number and distribution
of participants on screen
-Set audio/video send/receive ports per participant
-Set audio/video codec and parameters (size,fps) etc per participant
-(Un)Mute participant
-Set conference mosaic positions: lock slot, assign slot to participant,
etc..
-Add watch only participant to conference (experimental: flash video
broadcasting in web)
It currently supports only h263p but should not be too difficult to add
support to h264. The rest of the functionalities are completed (except
flash support) and only a bit of testing is needed. In the near future I
would like to convert the videomixer in a MediaServer, been able not
only to offer multivideo conference services, but also transcoding,
flash casting, etc..
As I said before everything is controlled by an xmlrpc api, so a
component handling the service logic and signalling is needed. That
component could app_conference and the confiance project did integrate
the video mixer as an external unit.
I decided to implement it as a complete external unit from Asterisk.
Why? I think it was easier quicker and easier to develop, avoid the
monolithic and sometimes obscure architecture of asterisk and could
provide much more functionalities. And the chosen technology was.. java
(I feel a great disturbance in the Force, as if millions of voices
suddenly cried out in terror and were suddenly silenced).
Yes, Java, using the Sailfin Sip Application Server
(https://sailfin.dev.java.net/) which allows to create an application
that handles SIP and HTTP request (an application like click to dial is
just a few lines of code
http://wiki.glassfish.java.net/Wiki.jsp?page=SipClickToDialExample2). If
you start with your prejudges about java, speed and show on, just think
that it is a telco grade Sun and Ericsson development.
The mcuWeb component implement the service logic, handles all the SIP
signalling (receiving invite request from asterisk), controls the Video
Mixer with the xmlrpc and offers a WEB UI to manage the conferences.
This part is also fully functional, but I think that is where more work
is needed in order to customize the service with the functionalities
needed by the customers. In particular questions like the following need
to be answered:
- Is it required to create the conference before the user calls? or it
get created when it calls in?
- Are there private conferences? How are the participants allowed to get
in, by password or by invite only?
- Is there always a default public room?
- etc...
Any thoughts are welcome
Best regards
Sergio
More information about the asterisk-video
mailing list