App_konference is a channel-independent conference application. It features efficient audio mixing algorithms and comprises a set of enhancements needed to migrate a MeetMe application to AppConference. The goals of this
project are scalability and stability focused on voice.
Conference is a good alternative to the standard MeetMe because it does not require a timing source to be available. Lack of timing can be a pain when Dahdi / Zaptel hardware is NOT present, including solving problems when using virtual hardware that cant support timing cards.
Starting with app_conference the project was forked as app_conference did not include the alterations that were submitted to their project, app_konference now contains bug fixes and performance enhancements over app_conference however as app_Konference is focused on voice the video component is deprecated.
app_konference is not in the Asterisk standard distribution and can be found athttp://sourceforge.net/projects/appkonference/ Konference(NAME,FLAGS,MAXUSERS,TYPE,SPY,VADSTART,VADCONTINUE,VIDEOSTART,VIDEOSTOP)
There is no configuration file. Conferences are created on-the-fly.
NAME: whatever you want to identify the conference
FLAGS: dialplan flags, see Flags.txt for a comprehensive list
MAXUSERS: limit conference participants to max_users
TYPE: conference type identifier
SPY: channel name to spy
VADSTART: "probability" to use to detect start of speech.
VADCONTINUE: "probability" to use to detect continuation of speech.
VIDEOSTART: length of speech before assuming that a member is speaking
VIDEOSTOP: length of silence before assuming that a member has stopped speaking
Flags
Mute/no receive options:
'C' : member starts with video muted
'c' : member starts unable to receive video
'L' : member starts with audio muted
'l' : member starts unable to receive audio
Speex preprocessing options (right now only for Zaptel members):
'V' : enable speex preprocessing Voice Activity Detection
'D' : enable speex preprocessing De-noise
'A' : enable speex preprocessing Automatic Gain Control
'T' : member connects through Zaptel, so speex preprocessing should be enabled
DTMF options:
'X' : enable DTMF switch: video can be switched by users using DTMF. Do not use with 'S'.
'R' : enable DTMF relay: DTMF tones generate a manager event
If neither 'X' nor 'R' are present, DTMF tones will be forwarded to all members in the conference
Moderator/video switch options:
'M' : member is a "moderator". When a moderator quits, all members are kicked and the conference is disabled.
'S' : member accepts VAD controlled video switching. Do not use with 'X'.
'z' : member can "linger". When the member is currently transmitting video and becomes silent and nobody else is speaking, we stay on it.
'o' : enable special behavior when in 1 and 2 member situation (one on one video). The conference observes the 'o' status of the last
member to join it
'F' : force switch mode: if the member is talking, force a switch to it even when there is no video
Miscellaneous:
't' : member accepts text based control messages. The messages are described in a separate document
'N' : Assume that the member starts off with camera disabled.
'x' : if a moderator leaves, all conferees are kicked and conference ends.
'a' : V + T
'H' : play music on hold if only one member in conference
Arguments
The parser is not perfect so it might not cope well with spurious spaces or other characters.
All arguments are optional; appkonference will use sane default values for missing arguments.
priority=
vad_prob_start=
vad_prob_continue=
video_start_timeout=
video_stop_timeout=
max_users=
type=
spy=
Dialplan Example
exten => _X.,n,konference(1234,RVxT,max_users=3)
A member in a conference can be referred to by its id or by its channel. Id
is a positive number assigned automatically when the member joins the
conference. Channel is Asterisk channel identifier. To obtain a list of
member ids and channels in a conference, do: CLI> konference list
Current command line used by app_konference: konference debug: enable debugging for a conference usage: konference debug
If mute is specified, all other audio is muted while the sound is played back. konference stop sound: stop playing sounds to a conference member usage: konference stop sound
konference restart: kick all users in all conferences usage: konference restart
konference set default: sets default video source usage: konference set default
use a negative value for member if you want to clear the default konference set defaultchannel: sets default video source channel usage: konference set defaultchannel
If destination member is missing or negative, break existing connection konference drivechannel: drive VAD video switching of destination channel using audio from source channel usage: konference drivechannel
If destination channel is missing, break existing connection We get about 3 requests a week about adding DTMF handling to app_konference, this is not something that we intend to do.
This is easily solved by something we have dubbed "The Listener". The listener connects to Asterisk via the AMI and watches for certain events. one of the reasons to use the listener over building in DTMF tones is because of app_konference's channel independent structure.
We still have to order the packets correctly in the conference, to accomplish this a sound queue is setup for each conference member. So the listener now not only listens for events it also uses the app_konference command "play sound". If you download the source of the app_konference it has a good example of using a listener, ours is implemented in Perl.
People tell us all the time that putting DTMF in a separate daemon we take a performance hit, this is simply untrue. When we flipped the switch from Meetme to app_konference, using our listener our conferences were able to grow from 500 to 1,200 people and not a single person noticed a difference, other then they had more people on the call.
Naturally, app_konference is GPL. The SVN repository also includes parts of
libspeex, which is distributed under a BSD-style license. See LICENSE for more
details.
No comments:
Post a Comment