Git Product home page Git Product logo

symphonymediabridge's Introduction

FINOS - Incubating

Symphony Media Bridge

The Symphony Media Bridge (SMB) is a media server application that handles audio, video and screen sharing media streams in an RTC conference system.

In RTC conferencing systems, when more than two participants are in a conference there is usually a media server component involved. Each participant in the conference will send their audio and video streams to the media server. The media server is then responsible for sending the correct media streams to each receiving participant.

Conferencing media servers are typically divided into two categories, multipoint conference units (MCU) and selective forwarding units (SFU). MCUs decode, mix and transcode media streams delivering a single or a few output streams to each receiver. SFUs do not decode or transcode media streams from participants, but forwards a selection of the incoming media streams to each receiver in some intelligent way. Not all incoming streams are forwarded, but typically more than one stream to each receiver.

SMB is an SFU at its core, but has some hybrid MCU like solutions. Video streams are forwarded and not transcoded, but participants can request a mixed, transcoded audio stream instead of forwarded streams. SMB can also be run in a mode where multiple streams are forwarded, but the contents of each stream can vary between different participants in the conference. This allows for larger conferences than SFUs can typically handle.

Written as a high performance native application with efficient resource management, SMB is designed to scale efficiently as the number of conferences and participants grow.

Documentation

Installing

The Supported platforms for the release builds are

  • Ubuntu Server 20.04 LTS
  • Ubuntu Server 21.10

The following additional dependencies have to be installed:

apt-get install libc++-dev libc++abi-dev libsrtp2-1 libmicrohttpd12 libopus0

Alternative 1. Installing the .deb package

1. Download the .deb file from a release

2. Install

dpkg -i finos-rtc-smb_<version>.deb

3. Start with the default empty config file

smb /etc/finos-rtc-smb/config.json

Alternative 2. Download the .tar.gz file

1. Download and extract the .tar.gz file from a release

2. Add realtime priority capabilities to the smb binary

setcap CAP_SYS_NICE+ep smb

3. Start with the default empty config file

./smb config.json

Development setup

The Symphony Media Bridge is a cmake based project that can be built and run for development purposes on Linux as well as MacOSX. Here are instruction on what dependencies are needed to build and run locally. SMB currently only supports compiling with clang/llvm and linking with libc++ on both Linux and MacOSX.

Building for Ubuntu Linux 21.10

1. Install the required dependencies

apt-get install cmake llvm clang lldb libc++-dev libc++abi-dev libssl-dev libsrtp2-dev libmicrohttpd-dev libopus-dev libunwind-13-dev

2. Set Clang as compiler

export CC=clang && export CXX=clang++

3. Generate the Makefile

cmake -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" .

Building for MacOSX

1. Install the required dependencies using brew

brew install cmake srtp [email protected] libmicrohttpd opus

2.1 Generate the Makefile

cmake -DCMAKE_BUILD_TYPE=Debug -G "Unix Makefiles" .

2.2 Alternatively generate Xcode project files

cmake -G "Xcode" .

Running the application

./smb config.json

Running the local test suite

./UnitTest

Contributing

  1. Fork it (https://github.com/finos/SymphonyMediaBridge/fork)
  2. Create your feature branch (git checkout -b feature/fooBar)
  3. Read our contribution guidelines and Community Code of Conduct
  4. Commit your changes (git commit -am 'Add some fooBar')
  5. Push to the branch (git push origin feature/fooBar)
  6. Create a new Pull Request

NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool (or EasyCLA). Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.

Need an ICLA? Unsure if you are covered under an existing CCLA? Email [email protected]

License

Copyright 2021 Symphony LLC

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

symphonymediabridge's People

Contributors

olofkallander avatar ricardomdomingues avatar reddvl1980 avatar pcarlsym avatar marcusspangenberg avatar danielgronberg avatar stepanaksenov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.