Introduction
App_Vonference is a channel-independent video conference application.
It features efficient audio mixing algorithms as well as video selection
support based on VAD, DTMF or CLI (it is a fork of the Konference project).
Design goals
App_vonference has several design goals which are different than Meetme:
* It does not require a zap channel for timing.
* It is very efficient when used with channels which support DTX (silence
detection/discontinuous transmission).
* It can do VAD on channels which do not support DTX (although this
is more expensive than just mixing them, but less expensive then
encoding; therefore it might still be a win).
* It presents messages on the Monitor interface for determine which
speakers are active.
Mixing design
* Minimize encoding/decoding, minimize mixing.
* Minimize generational loss from trancoding.
* Usual cases are handled very efficiently:
o One speaker: That speaker's frame is sent directly to each
participant which uses the same codec. It is trancoded
_once_ for each additional codec type used by participants.
o Two speakers: Each speaker gets the other speaker's frames.
The two speaker's frames are decoded and mixed, and then
encoded _once_ for each codec type used by participants.
Video features
* Video passthrough: video from selected member is passed to every
member of the conference.
* Multiple ways to select video
- VAD
- DTMF from conference members
- CLI
* Ability to set default video sources and to lock/unlock video sources.
License
Naturally, app_vonference is GPL. The GIT repository also includes parts of
libspeex, which is distributed under a BSD-style license. See LICENSE for more
details.
Getting app_vonference
app_vonference is available via GIT from github:
* https://github.com/voximal/asteisk-vonference
Compiling app_vonference
* Checkout sources
* Modify Makefile to point to your Asterisk include directory
* make
* sudo make install
Using app_vonference
There is no configuration file. Conferences are created on-the-fly.
Dialplan syntax:
Vonference(NAME,FLAGS[,MAXUSERS][,TYPE][,SPY][,VADSTART][,VADCONTINUE][,VIDEOSTART][,VIDEOSTOP])
* 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
CLI Commands
Please look at CLI.txt for a comprehensive list of CLI commands and parameters.
Manager Events
app_vonference generates several detailed manager events so that applications
interfacing with the manager API can monitor conferences:
* ConferenceJoin: join conference
* ConferenceLeave: leave conference
* ConferenceDTMF: dtmf received
* ConferenceState: speaking state changed
* ConferenceSoundComplete: sound completed
* ConferenceMemberMute: mute member
* ConferenceMute: mute conference
* ConferenceMemberUnmute: unmute member
* ConferenceUnmute: unmute conference
* ConferenceCameraDisabled: camera disabled
* ConferenceCameraEnabled: camera enabled
* ConferenceStopVideoTransmit: stop video
* ConferenceStartVideoTransmit: start video
* ConferenceUnlock: unlock conference video
* ConferenceLock: lock conference video
* ConferenceVideoBroadcastOff: video broadcast off
* ConferenceVideoBroadcastOn: video broadcast on
* ConferenceVideoMute: mute video
* ConferenceVideoUnmute: unmute video
* ConferenceDefault: set video default
* ConferenceVideoSwitch: video switched
Benchmarking
It would be nice to have solid benchmarks to present, but a good size
machine should be able to handle many callers when either (a) they are
using DTX, or (b) they are listen-only. It's used often with hundreds of
simultaneous callers.
---