Flussonic Media Server is the commercial gold standard for professional streaming infrastructure. It's used by national TV broadcasters, large IPTV operators, and CDN providers. Compared to NGINX-RTMP, Flussonic offers built-in transcoding, DRM, catch-up TV, multi-protocol input/output, advanced monitoring, and clustering — but it's licensed software and not free.

// When to use Flussonic
If you're running a hobby project or sub-100-viewer setup, NGINX-RTMP is fine and free. Flussonic makes sense when you have 500+ concurrent viewers, need cluster failover, want professional features (DVR, DRM, transcoding farms), or your customers expect SLAs. Trial licenses are available from Flussonic for testing.

1. Server requirements

  • OS: Ubuntu 22.04 LTS, Debian 11/12, or CentOS 8 (Ubuntu has best support)
  • RAM: 8 GB minimum, 32 GB+ for transcoding workloads
  • CPU: 8 vCPU minimum, prefer dedicated cores; Intel Xeon with QuickSync for hardware-accelerated transcoding
  • GPU (optional): NVIDIA T4/A2 for NVENC if doing 50+ transcodes
  • Disk: 200 GB NVMe SSD (more if running DVR/catch-up)
  • Bandwidth: 10 Gbps recommended for production

2. Install Flussonic

Flussonic provides a single-line installer. As root:

wget -O - https://flussonic.com/static/flussonic-install.sh | sh

This adds the Flussonic apt repository and installs the latest stable version. Installation takes ~3 minutes.

3. License activation

Visit http://your-server-ip:8080. The first screen asks for your license key.

If you're testing, request a trial license from flussonic.com — they grant 30-day full-feature trials within a few hours.

Paste your key. Activation requires outbound HTTPS to license.flussonic.com.

4. Initial admin setup

Set a strong admin password (don't keep the default!). Configuration is at /etc/flussonic/flussonic.conf — you can also manage everything via the web UI, but learning the config file format pays off long-term.

Example config block for a basic stream:

edit_auth root your_strong_password;
http 80;
https 443;
rtmp 1935;
rtsp 554;

stream channel1 {
  input udp://239.0.0.1:1234;
  dvr root /var/dvr 7d;
}

5. Adding sources (input formats)

Flussonic accepts virtually every IPTV input format. Common ones:

stream news_hd {
  # HLS source
  input http://source.example.com/news.m3u8;
}

stream sports_hd {
  # RTMP source
  input rtmp://ingest.example.com/live/streamkey;
}

stream movies {
  # MPEG-TS over UDP multicast
  input udp://239.1.1.1:5000;
}

stream camera1 {
  # RTSP source
  input rtsp://admin:pass@192.168.1.100:554/stream1;
}

stream xtream_relay {
  # Xtream Codes / general HTTP source with auth
  input http://supplier.example.com:8080/live/user/pass/123.ts;
}

6. Output formats

Flussonic auto-generates outputs from any input. For a stream named news_hd, you automatically get:

  • HLS: http://your-server/news_hd/index.m3u8
  • MPEG-DASH: http://your-server/news_hd/index.mpd
  • RTMP: rtmp://your-server/news_hd
  • MPEG-TS: http://your-server/news_hd/mpegts
  • HDS: http://your-server/news_hd/manifest.f4m (legacy Flash)

This multi-output is one of Flussonic's killer features — your panel can request whatever protocol it prefers without re-ingest.

7. Transcoding

Add a transcoder block to a stream:

stream news_hd {
  input http://source.example.com/news.m3u8;
  transcoder vb=4500k ab=128k size=1920x1080 preset=veryfast threads=2 ac=aac
             addsource video=video1 vb=2500k size=1280x720
             addsource video=video2 vb=800k size=854x480;
}

This produces an ABR ladder (1080p/720p/480p) from a single source. With NVIDIA NVENC:

transcoder hw=nvenc vb=4500k ab=128k size=1920x1080;

8. Catch-up TV (DVR)

Enable timeshift / catch-up by adding dvr to streams:

stream news_hd {
  input http://source.example.com/news.m3u8;
  dvr root /var/dvr 7d;  # 7 days of catch-up
}

Customers can request past content via:

http://your-server/news_hd/timeshift_abs-1717286400.m3u8

Storage planning: 1 day of 1080p stream ≈ 30 GB. Plan disk capacity carefully.

9. Auth & token-based protection

By default, anyone with a stream URL can play it. Add token auth:

auth_token your_secret_key;
auth_url http://your-backend.example.com/auth?token={token}&ip={ip};

Flussonic will hit your backend on every play attempt and only serve the stream if your backend returns 200. This is how serious operators prevent URL sharing.

10. Common Flussonic issues

  • License unreachable: Server clock drift or firewall blocking license.flussonic.com
  • Source connects but no playback: Codec mismatch — check flussonic-ctl streams for the actual codec, then ensure your transcoder profile matches
  • High RAM usage: DVR retention too long; reduce or move to separate slow-disk volume
  • UDP multicast not received: IGMP querier missing on your network — use smcroute on Linux
// Flussonic license costs are real
Flussonic's per-output licensing can run $300–$2000+/month for production deployments. Our restream service includes equivalent infrastructure (CDN, transcoding, anti-freeze) for $149–$1199/mo with no setup work. Compare pricing →