DGNCast Native Protocol

Stream at half the bandwidth, with no quality loss.

Opus instead of MP3, WebSocket instead of Icecast HTTP. Around 50% less upload traffic at equal or slightly better audio quality. Exclusive between DGNCast Studio and DGNCast servers.

−50%

Upload traffic

Opus encodes more efficiently than MP3. Opus at 64 kbps sounds like MP3 at 128 kbps. Savings are especially noticeable on slow DSL, mobile hotspots, and hotel Wi-Fi.

≤ 10 s

Rock-solid listener stream

Server-side 10-second ring buffer absorbs short Wi-Fi glitches. Listener HTTP connections don't drop, MP3 decoders stay in sync.

0–8 s

DJ crossfade

On DJ handover, the server mixes the old and new DJ in parallel over a configurable fade duration. Real crossfading, no hard cuts, just like in a studio.

Panel auth

API keys per DJ

Every DJ has their own key, rotatable, revocable, with audit log (last use & IP). No more shared source passwords.

Quality comparison

Opus isn't worse, it's better

Objective, based on international blind tests (xiph.org, AES publications).

Codec & bitrateAudible qualityContext
MP3 @ 64 kbpsclear artifactspractically unusable for music
Opus @ 64 kbps≈ MP3 @ 128 kbpsbroadcast standard, the sweet spot
MP3 @ 128 kbpsradio standard, slightly hollowtypical classic streams
Opus @ 96 kbps≈ MP3 @ 192 kbpsHi-Fi music radio at 50% upload
MP3 @ 192 kbpsvery good, Hi-Fi capablepremium classic streaming
Opus @ 128 kbpstransparentno one can tell from the original
Bottom line: at equal bitrate, Opus sounds better than MP3. At half the bitrate, Opus sounds the same as MP3. That's why WhatsApp, Discord, Zoom, and YouTube Live all use Opus.
Savings calculator

How much do you save per month?

Move the sliders to your real values, the calculator shows the difference instantly.

24 h/day
128 kbps
Classic (MP3)
43.2 GB/month
With Native (Opus)
21.6 GB/month
Savings
21.6 GB

Formula: bitrate × 3600 × hours × 30 / 8 / 1024 / 1024. Opus bitrate = MP3 bitrate / 2 at equal audible quality.

Stable listener stream

What the 10-second buffer actually does

The DGNCast server keeps a 10-second buffer between the transcoder and listener delivery. When your source is briefly gone (Wi-Fi spike, DJ handover, laptop sleep), the listener stream doesn't drop.

To be honest: the buffer doesn't prevent audio from being missing if the source is gone for 5 seconds. But it prevents the listener's player from dropping the connection, rebuffering, and showing "Connection lost". The HTTP connection stays alive, the MP3 decoder stays in sync. When the source comes back, playback continues without the listener having to reconnect manually.

For comparison: with classic Icecast and an 8-second grace time, the listener's player must reconnect after the grace time expires. That's 3 to 5 extra seconds of load overhead, and many players show "Stream offline" even if the interruption was short.

For real DJ crossfading, i.e. two DJs actually mixed in parallel, we now have a dedicated solution. See the next section.
★ New

DJ crossfade: seamless handover between two DJs

When DJ B connects while DJ A is still broadcasting, the server mixes both streams in parallel with a linear fade curve. No silence, no listener reconnect, no hard switch.

// Example with a 3-second fade:
T=0.0s   DJ A still at full volume (100%)
T=0.0s   DJ B connects via Native → server starts the mix engine
T=0.5s   DJ A: 83%  +  DJ B: 17%
T=1.5s   DJ A: 50%  +  DJ B: 50%
T=2.5s   DJ A: 17%  +  DJ B: 83%
T=3.0s   DJ B broadcasts alone (100%), DJ A cleanly disconnected

The mixer operates at sample level (48 kHz, stereo), mixing each sample with a linear fade curve gain_A = 1 − t, gain_B = t. The output bitrate stays constant, listeners hear a continuous stream without frame sync loss.

Configurable duration

In the panel you set per stream how long the fade should run:

  • Off (0s), hard takeover like classic Icecast
  • 500 ms, barely audible, just avoids clicks
  • 1 to 2s, quick scheduled handover
  • 3s (default), musically elegant, good for most genres
  • 5 to 8s, DJ show handover with announcement ("Thanks for the last hour, now over to ...")
Only with DGNCast Native Protocol. The server needs PCM input to mix. Classic Icecast/Shoutcast delivers finished MP3 frames that can't be cleanly sample-mixed. If you stream over Icecast/Shoutcast, you still get the classic grace-timer flow.
Direct comparison

Classic vs. Native

Classic Icecast/Shoutcast DGNCast Native
Transport HTTP PUT/SOURCE on TCP ports 8000 to 8011 WebSocket on standard port (443/8010), firewall-friendly
Codec MP3 @ 128 kbps ≈ 1.4 GB/day Opus @ 64 kbps ≈ 0.7 GB/day at equal audible quality
Authentication Source password in plain text, shared across all DJs API keys per DJ, rotatable, revocable, audit log
Reconnect Stream drops audibly, listener's player shows "offline" Session resume ≤ 30s, listener HTTP stays alive
DJ handover New DJ waits for grace timeout (typically 8 to 30s) Takeover possible instantly, grace session cleared
Metadata (title) Inline Ice tags (brittle) Separate channel with JSON, no audio sync problem
TLS Usually only on the listener side, source connect often plain text wss:// everywhere, HTTPS by default
Server compatibility Icecast 2, AzuraCast, Centova, Shoutcast DNAS, DGNCast DGNCast only. With third-party hosts, classic protocols still work.
FAQ

Common questions

Does Native work with Icecast/Shoutcast third-party hosts?
No. DGNCast Native is a proprietary protocol between DGNCast Studio and DGNCast servers. With third-party hosts (AzuraCast, Centova, Shoutcast DNAS, generic Icecast), the Studio automatically streams in classic Icecast 2 or Shoutcast mode. All three protocols are built into the Studio, switching happens via dropdown.
Does Native cost extra?
No. DGNCast Native is included in every DGNCast stream package regardless of tier. The upload savings are your direct benefit, no upgrade path, no premium model.
What if Native doesn't work?
The Studio doesn't automatically fall back to classic protocols, but you can switch with one click in the protocol dropdown. Best practice: create your profile twice (Show Native + Show Backup Icecast), so you're back on-air in two clicks if needed.
Do I have to learn anything new?
In the Studio, almost nothing. Instead of Icecast 2, you select DGNCast Native in the protocol dropdown and enter an API key instead of a source password. Bitrate, station name, title update, everything works identically.

In the Panel: new menu item API keys where you generate one key per DJ. One click per key.
What is Opus exactly?
Opus is an audio codec developed by the Xiph consortium (Vorbis / FLAC developers) together with Mozilla and the Skype team. Standardized as RFC 6716 in 2012. Today a mandatory codec in WebRTC (every video call uses Opus), Discord voice, Zoom, WhatsApp voice messages, YouTube Live. The industry standard for audio on the internet. Only classic internet radio hasn't adopted it yet, because the protocol world there is stuck in 1999.
Why is Opus better than MP3?
Opus uses more modern compression techniques (psychoacoustic model from CELT/SILK, transient coding for percussive hits, adaptive frame sizes). MP3 dates from 1993 and has systematic weaknesses like "pre-echo" on transients (snares sound mushy). Objective blind tests show: Opus at 64 kbps matches MP3 at 128 kbps. At 128 kbps, Opus is transparent (no one can tell from the original).
Do my listeners still get MP3?
Yes. The DGNCast Native protocol only applies between your Studio and the server. The server decodes Opus and keeps delivering classic MP3 and OGG to listeners as before. Your listeners don't notice the protocol change. The 50% savings are on the upload side, i.e. at your end.
Which bitrate should I pick?
Talk radio / podcast style: Opus 48 to 64 kbps, sounds like MP3 96 to 128. Plenty for voice.

Music radio: Opus 96 kbps, sounds like MP3 192, Hi-Fi quality.

Premium / classical: Opus 128 kbps, transparent, no difference from the original audible.

Rule of thumb: take half your current MP3 bitrate.
What upload speed do I need at minimum?
Minimum for Opus 64 kbps: 0.15 Mbit/s upload (typical LTE is more than enough). For a rock-solid 24/7 connection, keep 0.3 to 0.5 Mbit/s of upload headroom.

For Opus 128 kbps: 0.3 Mbit/s minimum, 0.5+ Mbit/s recommended.

For comparison: classic MP3 128 kbps already needs 0.3 Mbit/s. With Native, you get comparable quality on slow DSL uploads that can barely sustain classic streaming.
Does it work on mobile / hotspot?
Yes, it's even a main use case. Opus + WebSocket on port 443 gets through every mobile network. At 64 kbps you're at around 30 MB per hour, so even a modest data plan can handle a full DJ set. Classic Icecast at 128 kbps would be twice that and frequently drops entirely on spike losses.
Does it work through corporate firewalls?
Yes, even better than classic Icecast. Native uses WebSocket on port 8010 (DGNCast default) or 443 (TLS port, open in every company). Classic Icecast often uses exotic ports 8000 to 8011 that corporate firewalls block.
What are API keys?
Short string in the format stsk_live_<32 chars> that you generate per DJ in the DGNCast Panel. Enter it once in the Studio, it replaces the source password. Benefits:
• Every DJ has their own key, nobody sends with someone else's credentials by accident
• Lost or compromised? One click in the panel rotates the key, the old key is immediately invalid, other DJs are not affected
• Audit log shows last use + IP per key
• DJ leaves? Revoke the key, done.
How do I create an API key?
Panel → select stream → API keysCreate new key → enter name (e.g. "Andreas laptop") → optionally link to DJ account → the key is shown once as a green banner → copy and paste it into the Studio's API key field. Save the Studio profile, done.
What if I lose my key?
In the panel, click Rotate. The old key is instantly invalidated, a new key is generated and shown once. Re-enter it in the Studio profile. Other DJs with different keys are not affected.
What happens when my network drops?
Short drops (≤ 10s): your listener HTTP connections stay alive (10-second ring buffer). The actual audio gap is audible (5s gone = 5s silence), but no listener has to reconnect manually.

Longer drops (10 to 30s): the Studio reconnects automatically with session resume, the server transcoder keeps running, no OGG header reset, no additional reinit overhead.

More than 30s gone: the session is dissolved, AutoDJ takes over.
How does DJ handover with crossfade work?
When DJ B connects with DGNCast Native while DJ A is still broadcasting, the server automatically starts a crossfade: both streams run in parallel, are mixed sample-accurately, and crossfaded over a fade curve. After the configured duration (default 3s, configurable 0 to 8s in the panel), DJ B is alone live and DJ A is cleanly disconnected.

For listeners: no silence, no disconnect, no click, a continuous audio stream that acoustically fades from A to B just like in a real DJ set.

Limitation: only with DGNCast Native Protocol. Classic Icecast/Shoutcast delivers finished MP3 frames that can't be sample-mixed. There the server only knows hard takeover after the grace period.
Where do I set the crossfade duration?
In the customer panel under Stream settings → DJ crossfade duration. A dropdown with options from Off (hard takeover) via 500 ms (just click avoidance) up to 8s (show handover with announcement). Default is 3 seconds, musically sensible for most music streams.

The setting is per stream and takes effect immediately. No server restart needed. The next handover uses the new value.
Can I use classic and Native at the same time?
Not in parallel on the same stream, only one DJ can broadcast at a time. But you can choose different protocols per profile, e.g. Backup-Icecast + Native-Main, and switch between them at the push of a button if one misbehaves.
Do I need to change anything for existing DJs?
No, nothing mandatory. The classic source password still works. All existing encoder setups (butt, OBS, RadioBoss, Mixxx, VirtualDJ) work without changes. Native is an optional upgrade path if you use DGNCast Studio.
How do I migrate from classic to Native?
Gradual migration with zero downtime:
1. Generate an API key for a DJ in the panel
2. The DJ pastes the key into DGNCast Studio (profile field API key)
3. Switch the protocol dropdown to DGNCast Native
4. Start the stream, it now runs over Native

Other DJs who don't change anything stay on classic. The server accepts both in parallel.
Is Native open source or proprietary?
The Studio has a closed core (Rust binary) with a documented open plugin SDK. The Native protocol itself is intentionally a DGNCast USP and currently not documented as an open standard. However, all the technology building blocks used (Opus, WebSocket) are open standards. If you want Native, use DGNCast. If you prefer a different encoder, keep streaming Icecast/Shoutcast. Both worlds are supported equally.

Ready for half the upload?

DGNCast Studio is available in Beta. DGNCast servers are available hosted or as a Panel license.