Flussonic Media Server documentation

Using WebRTC for video publication to Flussonic Media Server

About WebRTC Anchor Anchor x2

WebRTC is a P2P protocol of communication between two clients over an already established connection. For example, to communicate with each other by WebRTC, two browsers need to be connected by opening the same website in the Internet. Connection can also be established by means of a mediator, so called signaling server.

So there are two clients and a signaling server, that connects these clients. Before starting to transmit video data, the clients need to establish the connection. To do so, they exchange data of two types about the connection:

  • textual descriptions of media streams in the SDP format
  • ICE Candidates as part of an SDP

The signaling server (the mediator) makes it possible to transfer the data about the connection from one client to the other.

About publication via WebRTC to Flussonic

Flussonic Media Server uses WebRTC for publishing a media stream from a client device or app (the source) to Flussonic (the recipient). Then Flussonic becomes the source in order to play the stream on another client (the recipient). In both cases, Flussonic also acts as the signaling server to exchange the data about the connection.

Why do we use WebRTC to send media data between clients? Because with the WebRTC mechanism we can provide ultra-low latency.

Therefore, the exchange of video via Flussonic cannot be called peer-to-peer, rather, we call it video publication to Flussonic Media Server via WebRTC and video playback via WebRTC.

The diagram shows the process of initiating the connection between Flussonic and a client device, for publication:

WebRTC

How to organize publication via WebRTC Anchor Anchor x2

The connection to Flussonic Media Server for a media stream publishing via WebRTC is established in the similar way as for video playback.

The principle here stays the same – parties should exchange SDPs via the mediator (signaling server - Flussonic), and then start the direct data transfer. In the case of video publishing, it's the client that initiates the process and sends an SDP offer.

Connection is established via WebSocket, and then video is transferred via RTP.

Attention! Some browsers allow video and audio publishing via WebRTC by using secure connection only. The browser migth deny access to the camera and microphone from a page located not by HTTPS but by HTTP address. But this is allowed on local addresses (localhost, 127.0.0.1).

How to publish video to Flussonic via WebRTC

On the Flussonic server, add a published stream to the configuration, this is a stream with the source publish://.

stream STREAMNAME {
  url publish://;
}

Then the code must be run on the client side that publishes video to the created stream. To write the code use the Flussonic WebRTC player library. You will use the URL of the created stream in the code (the ws and wss protocols are supported).

The description of the library classes and the example code can be found at npm.