Service: Symphony Media Bridge - EyevinnOSC/community GitHub Wiki
Getting Started
Symphony Media Bridge is an open source WebRTC Selective Forwarding Unit (SFU) that routes real-time media between participants without transcoding. By forwarding streams selectively rather than mixing them, it reduces server CPU usage while giving each participant control over which streams they receive. It is suited for multi-participant video conferencing, live production workflows, and WebRTC distribution applications. Available as an open web service in Eyevinn Open Source Cloud.
Prerequisites
- If you have not already done so, sign up for an Eyevinn OSC account
Step 1: Create a Symphony Media Bridge instance
Navigate to the Symphony Media Bridge service in the Eyevinn OSC web console. Click Create docker-wrtc-sfu and fill in:
| Field | Description |
|---|---|
| Name | Short alphanumeric name for your instance |
| ApiKey | API key for authenticating HTTP API requests. The default value is eyevinn — change this for any production deployment. |
| VideoCodec | Optional. Video codec used by the bridge: VP8 (default) or H264. |
| H264ProfileLevelId | Optional. H264 profile-level-id. Default 42001f. Use 42e01f (Constrained Baseline), which WebRTC mandates and Safari expects. |
| H264PacketizationMode | Optional. H264 packetization mode. Default 1. |
| RctlInitialEstimate | Optional. Initial bandwidth estimate in kbps. Default 1200. Consumers that do not send REMB (for example GStreamer webrtcbin) stay at this estimate. |
| RctlFloor | Optional. Rate control floor in kbps. Default 300. |
| RctlCeiling | Optional. Rate control ceiling in kbps. Default 9000. |
Click the instance card once the status turns green and running.
Store your ApiKey as an OSC Service Secret and reference it with
{{secrets.apikey}}rather than entering it in plaintext. See Working with Secrets.
Video codec and rate control: Leave the optional fields empty to keep the defaults (VP8). Set VideoCodec to
H264when you need to bridge to H264-based tooling such as SRT/MPEG-TS gateways. These settings are read when the instance starts and cannot be changed on a running instance. To change them, delete and recreate the instance.
Step 2: Verify the instance is running
The SFU exposes a health endpoint:
curl https://<your-instance-url>/api/health
A 200 OK response confirms the bridge is ready.
Step 3: Interact with the HTTP API
All management endpoints require the api-key header:
# List active conferences
curl https://<your-instance-url>/api/conferences \
-H "api-key: <your-api-key>"
# Create a conference
curl -X POST https://<your-instance-url>/api/conferences \
-H "Content-Type: application/json" \
-H "api-key: <your-api-key>" \
-d '{"last-n": 3}'
The response includes a id field identifying the new conference. Use this ID to add endpoints and manage participants.
Step 4: Connect participants
Participants connect via WebRTC using the SFU's signaling API. The typical flow:
- Create a conference (Step 3)
- Create an endpoint for each participant:
POST /api/conferences/{conferenceId}/endpoints - Exchange SDP offer/answer through the endpoint API
- The SFU forwards media streams between endpoints
See the Symphony Media Bridge documentation for the full signaling protocol and SDP exchange details.
CLI usage
osc create eyevinn-docker-wrtc-sfu mysfu -o ApiKey="mysecretkey"
To use H264 instead of VP8:
osc create eyevinn-docker-wrtc-sfu mysfu \
-o ApiKey="mysecretkey" \
-o VideoCodec="H264" \
-o H264ProfileLevelId="42e01f"
Resources
- Symphony Media Bridge on GitHub
- Symphony Media Bridge WHIP Gateway — WHIP ingest companion service
- Symphony Media Bridge WHEP Gateway — WHEP egress companion service
- Eyevinn Open Source Cloud