Skip to content
An open source SIP Conference Bridge for Adobe Flash using Red5
Java Other
  1. Java 98.6%
  2. Other 1.4%
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
confphone.swf Removed Nellymoser codec for Flash Player 11.0 Sep 5, 2011
index.html red5-voicebridge release Jan 25, 2011
make_voicebridge.cmd red5-voicebridge release Jan 25, 2011


An open source SIP Conference Bridge for Adobe Flash using Red5

=Red5VoiceBridge= Red5-voicebridge is a SIP based voice bridge engine based on the Open Wonderland jVoiceBridge sub-project.
It enables Red5 developers to provide a single integrated open source web-based voice communication solution similiar to combining Flash Media Gateway (FMG) with Flash Media Server (FMS).

==It supports:== * Outgoing RTMP call participants * Outgoing and Incoming SIP call participants * Incoming SIP call participants controlled by a config file. * Flash/Javascript based API using Red5 to move incoming calls from a lobby into conferences, make outgoing calls to invite SIP endpoints into conference and configure voice bridge * Direct calls between two SIP endpoints or between an RTMP and SIP endpont with no initial conferencing and then transfer to conference later. * Migrate an conference participant from an existing SIP endpoint to a new SIP endpoint. * Rich voice events like call state, speech detection, ability to play sound treatments, etc

==To install:== * Stop red5 server * Unzip and move the voicebridge folder to webapps. * Edit ..\webapps\voicebridge\WEB-INF\red5voicebridge.xml for direct conference calls * Restart server {{{

	<register proxy='' 
		  display='Dele Olajide' 
		  realm='ccmsipline' />				

<conferences exten='3000'>
	<conference id='1111' pin='' />		
	<conference id='2222' pin='2222' />	
	<conference id='3333' exten='3333' pin='' />			
	<conference id='4444' exten='4444' pin='4444' />			

==Outgoing Calls== When you specify a full SUP URI ( for example), the bridge will send a SIP INVITE message directly without using an outbound proxy.

When you specify a telephone number, then the defaultProxy will be used unless the API is used to set the required voip gateway explicitly.
If proxy authentication is required, then the registration details witll be used.
In the example above, there is a registration to an Cisco gateway at as SIP user 1001 in order to make external public calls.

==Incoming calls== You can set the default access incoming SIP exten number for all defined conferences or set exten numbers for specific conferences. The incoming caller is prompted for either meeting code or pass code if either is missing or blank.

===Examples with above configuration. With SIP phone dial:===

  • sip:3000@ on the voice bridge and enter your conference id and pin number to enter any conference.
  • sip:3000@ on the voice bridge, enter 1111 as your conference id and enter conference 1111.
  • sip:3000@ on the voice bridge and enter 2222 as your conference id and enter passcode 2222 to enter conference 2222.
  • sip:3333@ on the voice bridge and enter conference 3333.
  • sip:4444@ on the voice bridge and enter passcode 4444 to enter conference 4444.

==Demo Application== Simple Softphone for outgoing calls only using an RTMP call participant and a SIP call participant.

==JavaScript API Demo== Point you browser at (or whatever) and use Javascript API

==Actionscript/Javascript API==

{{{ private function init():void {

	rtmpUrl = Application.application.parameters.rtmpUrl;
	ExternalInterface.addCallback("windowCloseEvent", windowCloseEvent);		
	ExternalInterface.addCallback("manageCallParticipant", manageCallParticipant);	
	ExternalInterface.addCallback("manageVoiceBridge", manageVoiceBridge);				
	netConnection = new NetConnection();
	netConnection.client = this;
	netConnection.addEventListener( NetStatusEvent.NET_STATUS , netStatus );
	netConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);

public function windowCloseEvent():void 

public function manageCallParticipant(uid:String, param:String, value:String):void 
{"manageCallParticipant", null, uid, param, value);

public function manageVoiceBridge(param:String, value:String):void 
{"manageVoiceBridge", null, param, value);

public function callsEventNotification(eventSource:String, callEvent:String, callState:String, info:String, callDtmf:String, treatmentdId:String, noOfCalls:String, callId:String, confId:String, callInfo:String):*
{"callsEventNotification", eventSource, callEvent, callState, info, callDtmf, treatmentdId, noOfCalls, callId, confId, callInfo);

public function errorEventNotification(error:String):*
{"errorEventNotification", error);

public function infoEventNotification(info:String):*
{"infoEventNotification", info);

public function statisticsNotification(numberOfConferences:String, totalMembers:String, totalSpeaking:String, timeBetweenSends:String, averageSendTime:String, maxSendTime:String):*
{"statisticsNotification", numberOfConferences, totalMembers, totalSpeaking, timeBetweenSends, averageSendTime, maxSendTime);


For mor information about jVoiceBridge and documentation of the parameters to the API above, visit

You can’t perform that action at this time.