multiparty-meeting-sipgw icon indicating copy to clipboard operation
multiparty-meeting-sipgw copied to clipboard

Multiparty-meeting (mediasoup) SIP gateway using Kurento

multiparty-meeting-sipgw

A SIP gateway for multiparty-meeting

Try it by calling: [email protected]

This will make you join the other participants at: https://letsmeet.no/roomname

Architecture

multiparty-meeting-sipgw architecture

Kurento pipeline

For every incoming call, a Kurento MediaPipeline is created. The pipeline can be seen below, with some parts removed (waiting screen PlayerEndpoint, notification sound PlayerEndpoint, participant name GStreamerFilter). Apart from the RtpEndpoint connected to the SIP client, all other RtpEndpoints correspond to a Mediasoup Producer or Consumer depending on it sending or receiving respectively. All Mediasoup audio Consumers connected to Kurento RtpEndpoints are sent into a Kurento Composite hub for mixing before the single audio stream is sent to the SIP caller. Only one Mediasoup video Consumer RtpEndpoint is sent to the SIP caller at any given time, and this is determined by speaker detection.

multiparty-meeting-sipgw kurento architecture

Installation

To run this gateway you will need several external components, install them according to their installation guides and your local requirements:

Clone this project:

$ git clone https://github.com/havfo/multiparty-meeting-sipgw.git
$ cd multiparty-meeting-sipgw

Edit config/default.json with appropriate settings.

Install node modules:

$ npm install

Run it

Run the Node.js server application in a terminal:

$ npm start

You can test it by calling: [email protected]

Deploy it in a server

Stop your locally running server. Copy systemd-service file multiparty-meeting-sipgw.service to /etc/systemd/system/ and check location path settings:

$ cp multiparty-meeting-sipgw.service /etc/systemd/system/
$ edit /etc/systemd/system/multiparty-meeting-sipgw.service

Reload SystemD configuration and start service:

$ systemctl daemon-reload
$ systemctl start multiparty-meeting-sipgw

If you want to start multiparty-meeting-sipgw at boot time:

$ systemctl enable multiparty-meeting-sipgw

Author

  • Håvar Aambø Fosstveit

License

MIT