Open Protocol · Apache 2.0

Sub-second
Broadcast
Link.

Open protocol for professional live production over local WiFi. Glass-to-glass latency 100–300ms (20–75ms in low-latency mode). Built-in tally, scene metadata, and zero-config discovery.

100–300msGlass-to-glass
3Round trips to connect
Apache 2.0No royalties, no SDK
Zero-configmDNS + QR pairing

— Motivation

The gap
NDI left open.

📶

WiFi-first

NDI requires 100–500 Mbps — impractical over WiFi. SBL uses adaptive bitrate encoding (2–50 Mbps) with a WebRTC congestion controller optimized for wireless links.

📱

Mobile-native

NDI has no native mobile story. SBL was designed from day one for smartphones as professional cameras, with QR-code pairing that works in 3 seconds.

🎛

Production metadata

WHIP/WebRTC gives you low latency but zero context. SBL bakes in tally status, scene name, timecode, and transport controls — everything a camera operator needs.

🔓

Truly open

NDI is free-to-use but proprietary SDK. SBL is a protocol spec under Apache 2.0 — implement it in any language, any platform, without contacting us first.

— Protocol

How it
works.

Application SAMBA · SAMBA Air · Your app
Media Channel RTP / RTCP
Control Channel JSON / WebSocket
DTLS 1.3 Encryption + Auth
ICE (RFC 8445) NAT Traversal
UDP + TCP fallback

Connection in 3 round trips

Source (app)
SBL-HELLO
SBL-OFFER + ICE candidates
TALLY / METADATA / PING
Receiver (SAMBA)
SBL-HELLO-ACK
SBL-ANSWER + ICE candidates
TALLY / BITRATE-HINT / PING
Setup

SBL-HELLO

Source announces capabilities: codecs, max resolution, platform, app version. Includes QR pairing token.

Setup

SBL-OFFER / ANSWER

Codec negotiation + ICE candidate exchange. Simpler than SDP — just JSON with the fields you actually need.

Control

TALLY

Receiver notifies source of on-air status: live, preview, standby, recording.

Control

METADATA

Scene name, source name, timecode, stream duration — pushed from receiver to source in real time.

Control

TRANSPORT-CONTROL

Receiver sends commands to source: flip-camera, torch-on/off, snapshot, mark.

Control

BITRATE-HINT

Receiver requests bitrate adjustment based on observed packet loss or buffer buildup.

— Comparison

SBL vs
the field.

SBL NDI WHIP SRT RTMP
Latency (LAN) 100–300ms 100–200ms 100–500ms 200ms–2s 1–5s
Bandwidth 2–50 Mbps 100–500 Mbps Variable Variable Variable
WiFi-ready ✗ High BW ⚠ No ABR
Mobile-native ⚠ Partial
Tally ✓ Built-in ✓ Built-in ✗ None ✗ None ✗ None
Scene metadata ✓ Built-in ✓ Built-in
Discovery mDNS + QR mDNS Manual URL Manual Manual
Encryption DTLS-SRTP Optional DTLS-SRTP AES-128/256 None
License Apache 2.0 Proprietary SDK IETF Open MPL-2.0 Proprietary

SBL and WHIP are complementary, not competing. SAMBA supports both: WHIP for cloud ingest, SBL for local production with tally and discovery.

— For developers

Implement
in minutes.

1

Discover via mDNS or QR

Browse _sbl._tcp.local or parse sbl://host:port?token=... from QR scan.

2

WebSocket + SBL-HELLO

Connect to ws://host:port/sbl and send your capabilities and pairing token.

3

SBL-OFFER / SBL-ANSWER

Exchange codec params and ICE candidates. No SDP parsing required — pure JSON.

4

WebRTC media + control loop

Media flows over standard WebRTC RTP. Handle TALLY, METADATA, and PING on the WebSocket.

SBL-OFFER (JSON)
{
  "type": "SBL-OFFER",
  "sessionId": "f3a9c2e1",
  "video": {
    "codec": "h264",
    "profile": "constrained-baseline",
    "bitrateMbps": 8,
    "resolution": "1920x1080",
    "fps": 60
  },
  "audio": {
    "codec": "opus",
    "sampleRate": 48000,
    "channels": 2
  },
  "ice": {
    "candidates": ["..."],
    "ufrag": "xxxx",
    "pwd": "yyyyyyyy"
  }
}

— Ecosystem

SBL Ready.
Your device.

Implement SBL in your app or hardware and get listed here. Open a PR on GitHub.

Official

SAMBA

Windows production software. Reference SBL receiver implementation.

Details
Official

SAMBA Air

Android camera app. Reference SBL source implementation.

GitHub
Open

Your app here

Implement SBL and submit a PR. Apache 2.0 — no approval needed.

Contribute