Why LiveSwitch Server
LiveSwitch Server makes WebRTC- and SIP-compatible audio and video conferencing scalable, efficient, and truly cross-platform.
LiveSwitch provides unparalleled flexibility to combine peer-to-peer (P2P)-, Selective Forwarding Unit (SFU)-, and Mixing Control Unit (MCU)-based media flows in a single session and switch dynamically while the session is live.
LiveSwitch provides a full cross-platform WebRTC stack. You can use the following exclusive features in your app:
- Token-based authentication
- Support for multiple simultaneous devices
- Powerful channel-based session management
- P2P, MCU, and SFU modes
- Support for H.264, VP8, VP9, G.711 and Opus codecs
- Presence management
- REST API and Webhooks control
- WebSocket-based media communication for the cases when WebRTC is blocked on the network (Beta, available for .NET and browsers only)
- SIP trunking
SFU for Video Conferencing
LiveSwitch supports SFU that uses a one-up, many-down architecture. With SFU, participants send their media to the server only once. The server subsequently distributes the media to connected downstream clients.
SFU reduces upstream bandwidth and client load. This allows you to scale your app out much further on the client. The server forwards the media packets without decoding or re-encoding them. Thus, you can keep the server load minimal to make the most of each instance.
You can also use simulcast in a conference or broadcast. Simulcast allows downstream clients to receive the best possible quality stream.
Mixing for Multiparty Audio and Video
LiveSwitch supports MCU that mixes audio and video into a single stream based on standard or custom video templates. If a connection goes over MCU, it offloads the stream to the servers.
MCU connection has only one upload stream and one download stream for each call participant. This is especially useful for legacy and resource-constrained devices. The server handles all the mixing and delivers the stream to users in their devices' format.
SIP Connection for VOIP/PSTN Integration
LiveSwitch provides a SIP connector that allows you to directly access SIP trunks or integrate with VOIP/PSTN virtual PBXs such as FreeSWITCH and Asterisk.
Record Audio/Video Streams
LiveSwitch allows you to record individual SFU or MCU upstreams to ffmpeg-compatible Matroska containers in real time. These files can then undergo any post-processing required by your app to mix, modify, or archive.
Online Demo
A demo is available online on the LiveSwitch Video Chat demo page. You can open the demo in a few browser windows or ask some friends to help you out.
Platform Support
LiveSwitch provides client SDKs for all modern platforms, with libraries written in C#, JavaScript, Java, and Objective-C. LiveSwitch supports Android, iOS, macOS, almost any flavor of .NET, Windows 10, and a few other minor platforms.
LiveSwitch Server components can run on Windows Servers with .NET Core or Linux.
Download LiveSwitch
LiveSwitch SDK is available for multiple platforms. For convenience, SDKs for each platform are packaged together in a single download available on the Downloads page on our website.
The downloaded package includes the LiveSwitch installer and example apps. You can use the installer to install the LiveSwitch Server consisting of the following components:
- Gateway
- Media Server
- Recording Monitor
- Recording Mover
- Recording Muxer
- SIP Connector
Create a Sample App
You can learn how to use LiveSwitch by following the Getting Started Guide and create a sample app. This guide includes step-by-step tutorials to set up your development environment and create apps with all the basic functionalities of LiveSwitch for C#, Android, iOS, and TypeScript. These functionalities include client registration, media streaming, screen sharing, text chat, and file transferring.
Explore the Example App
You can also learn LiveSwitch by exploring the Chat and the Layout Manager examples in the downloaded package for all supported platforms.
The Chat example demonstrates the following:
- Switch among P2P, SFU, and MCU modes
- Perform token-based authentication
- Send and display a chat message
- Capture screen
- Change audio and video devices
- Simulcast
- Fallback to the Media-over-WebSockets protocol for the cases when WebRTC is blocked on the network (Beta)
The Layout Manager example demonstrates how to lay out views according to set parameters.
To build the example, navigate to the folder for your platform and load the project in an appropriate Integrated Development Environment (IDE) for your platform:
- For C#, use Visual Studio.
- For Web, we recommend Visual Studio. The example includes both TypeScript and JavaScript flavors.
- For Android, use Android Studio.
- For iOS and macOS, use Xcode.
WebRTC Support
LiveSwitch supports WebRTC. LiveSwitch's network tunneling strategies are identical to those recommended by the WebRTC specification. LiveSwitch's WebRTC implementation provides complete audio, video, and data-channel stack that is fully interoperable with other modern WebRTC implementations.
Browser | Supported by LiveSwitch? |
---|---|
Chrome | Yes |
Firefox | Yes |
Opera | Yes |
Safari | Yes. LiveSwitch fully supports plugin-free WebRTC communications in iOS 11+ and Safari 11+ for macOS High Sierra. |
Internet Explorer | Yes. LiveSwitch is bundled with an ActiveX plugin for Internet Explorer users. This is tightly integrated with the JavaScript SDK so that the browser automatically uses the plugin if native WebRTC functionality is unavailable. |
Edge | Yes |
Media-Over-WebSockets Support (Beta)
Media-over-WebSockets is a feature that supports sending the media over the WebSocket protocol and joining WebRTC-based conferences. This feature is helpful in the circumstances where WebRTC connections cannot be established due to network policies. This allows end-clients to establish WebSocket-based connections to the WebSocket Media Server. The WebSocket Media Server then establishes WebRTC-based media connections to the Media Server.
The feature includes: WebSocket Media Server that is responsible for sending and receiving media over WebSocket connections. It converts media for WebRTC compatibility, and establishes connections to the WebRTC-based Media server. WebSocket-enabled clients connect to the Gateway to conduct signaling and to the WebSocket Media Server to send media.
Platform Support
Platform | Supported by LiveSwitch? |
---|---|
.NET | Yes |
iOS | No |
Android | No |
Maui | No |
Browser Support
Browser | Supported by LiveSwitch? |
---|---|
Chrome | Yes |
Firefox | No |
Opera | No |
Safari | Yes |
Internet Explorer | No |
Edge | No |
Third-Party Dependencies
Internal Dependencies
LiveSwitch uses the following libraries:
Library | Vendor | License | Platform |
---|---|---|---|
BouncyCastle | Open-source software (OSS) | MIT | All except native iOS/macOS for DTLS encryption. |
libssl / libcrypto | OSS | Apache 1.0 / BSD | Native iOS/macOS for DTLS encryption. |
SkiaSharp | Microsoft | MIT | .NET (Media Server) for video mixing. |
librtmp | MPlayer | LGPLv2.1 | .NET (Media Server) for RTMP |
libavcodec | FFMpeg | LGPLv2.1 | .NET (Media Server) for encoding AAC audio |
External Dependencies
The following libraries are necessary for capturing and processing audio and video:
Library | Vendor | License | Platform |
---|---|---|---|
NAudio | OSS | Ms-PL | .NET for audio capture and playback |
AForge.NET | OSS | LGPL v3 | .NET for camera capture |
Sarxos | OSS | MIT | Java for camera capture |
libvpx | WebM Project | New BSD | All for video encoding/decoding |
libopus | Xiph.Org | BSD | All for audio encoding/decoding |
libaudioprocessing | BSD | All except iOS/macOS for echo cancellation | |
libyuv | BSD | All for YUV conversion | |
libopenh264* | Cisco | Two-Clause BSD / AVC/H.264 Patent Portfolio License | All except iOS/macOS for video encoding/decoding (downloaded at runtime) |
* libopenh264 isn't included or shipped in release artifacts. It's downloaded at runtime by clients that are configured to use software H.264.
Optional Dependencies
The following libraries are optional:
Library | Vendor | License | Used By |
---|---|---|---|
log4net | Apache | Apache 2.0 | .NET for logging |
Json.NET | Newtonsoft | MIT | .NET for JSON serialization |
Redis | OSS | BSD | LiveSwitch Gateway state provider |