How to stream audio from OBS to Icecast
OBS Studio does not have a first-class audio-only output to Icecast. There are three real approaches that work, with very different trade-offs. This is an honest comparison so you can pick the right one for your setup.
Published 2026-05-08 / 11 minute read

The short version
Three methods exist. Pick by your situation:
- OBS Recording + FFmpeg Custom Output: the legacy hack. Works without plugins or extra apps. Ties up the recording pipeline. Cross-platform.
- BUTT or another external source client + virtual audio cable: the standalone-app path. Mature, cross-platform, but adds an app, a kernel-level driver, and a routing layer outside OBS.
- Radio Streamer plugin: the dedicated dock. Lives inside OBS, reads OBS audio tracks directly, runs independently of recording or streaming. Currently macOS Apple Silicon only.
If you produce in OBS on a Mac, jump to method 3. If you are on Windows or Linux, methods 1 or 2 apply for now.
Method 1: OBS Recording output + FFmpeg Custom Output
This is the method most older OBS forum posts recommend. It abuses the OBS recording output by pointing it at an Icecast URL through the FFmpeg Custom Output.
How to set it up
Settings > Output. Set "Output Mode" to Advanced.- Open the
Recordingtab. - Set "Type" to Custom Output (FFmpeg).
- Set "FFmpeg Output Type" to Output to URL.
- "File path or URL":
icecast://source:password@host:8000/live.mp3 - "Container Format":
mp3(oradtsfor AAC,oggfor Opus). - "Audio Encoder":
libmp3lame,aac, orlibopus. - Set "Audio Bitrate" to 128, 192, or whatever your mount expects.
- Disable video by clearing "Video Encoder" or setting it to a dummy.
- Click "Start Recording" to begin the broadcast.
What's wrong with it
- Recording is now your broadcast. You cannot also record video to disk; the recording output is consumed.
- The "Start Recording" button starts a broadcast. Easy to confuse, easy to forget you are live.
- No real reconnect logic. If Icecast drops, FFmpeg dies and the broadcast ends. There is no automatic retry.
- Disabling video cleanly is awkward. Some OBS versions still allocate video resources even when you set the encoder to none.
- FFmpeg credentials leak into OBS logs. Source URL passwords appear in the OBS log file, which gets pasted into bug reports.
The method works. It was the only path for years. It is also the reason a dedicated plugin exists.
Method 2: BUTT (or another external source client) plus a virtual audio cable
BUTT (Broadcast Using This Tool) is a standalone Qt app that has shipped audio to Icecast since 2007. To use it with OBS audio, you need a virtual audio cable so BUTT can read what OBS is producing.
How to set it up (macOS example)
- Install BlackHole (free virtual audio driver) or Loopback (paid, more features).
- Create a multi-output device in macOS Audio MIDI Setup that routes to both your speakers and BlackHole.
- In OBS, set "Audio Monitoring" on the relevant sources to "Monitor and Output" so the audio gets sent to the multi-output device.
- Install BUTT.
- In BUTT, set the audio input device to BlackHole.
- Configure BUTT's server settings with your Icecast credentials and codec.
- Click Play in BUTT to broadcast.
What's wrong with it
- Two apps to manage. OBS plus BUTT plus the virtual driver. Three things that can fail independently.
- Audio routing happens outside OBS. BUTT reads from the OS audio device, not from OBS's mixer. Different mix per output is awkward.
- Virtual audio drivers add latency, usually 5 to 20 ms depending on driver and buffer settings. Tolerable for music, audible for tight live mixing.
- Kernel-level installation. BlackHole and Loopback both install audio drivers that require system extension permissions and a reboot.
- BUTT does not see your OBS scenes. Switching scenes in OBS does not signal anything to BUTT. The broadcast just keeps reading raw audio.
BUTT itself is a great tool. The friction is the bridge between OBS and BUTT. For non-OBS workflows (a music DJ rig pushing to Icecast), BUTT alone is the right answer. More on BUTT vs Radio Streamer.

Method 3: Radio Streamer plugin (the dedicated dock)
Radio Streamer is an OBS plugin that adds a dock with a single Icecast URL field, codec selector, bitrate, audio track selector, and start/stop controls. It reads from any OBS audio track directly and pushes to Icecast through FFmpeg, all in-process.
What it solves
- No virtual audio cable. The plugin reads OBS audio tracks internally. No driver to install, no system-level routing.
- No second app. Configure the dock once and Start lives next to your scene controls.
- Independent output. Recording, streaming, and the radio mount run in parallel. None blocks any other.
- Reconnect built in. Optional automatic reconnect at 2, 5, 10, 20, then 30 seconds.
- Sub-second startup. The audio callback writes into a pre-allocated ring buffer; FFmpeg starts with explicit raw-pipe settings to skip format probing.
- Sanitized credentials in OBS logs. FFmpeg's stderr is filtered before it reaches the OBS log, so passwords do not leak into support files.
What it does not do (yet)
- Windows or Linux. The 1.0 release is macOS Apple Silicon only.
- ICY metadata push (now-playing track info). Planned, not shipped.
- Codecs beyond MP3, AAC, and Opus.
Setup walkthrough
- Download the plugin and copy
radiostreamer.plugininto the OBS user plugin folder. Restart OBS. - Open
Docks > Radio Streamer. - Paste your Icecast URL:
icecast://source:password@host:port/mount.mp3 - Pick codec (matching mount extension), bitrate, and audio track. Track 2 is the conventional pick if you also stream video on Track 1.
- Enable Reconnect.
- Click Start.
Detailed docs: radiostreamer.app/docs. Platform-specific guides: AzuraCast, self-hosted Icecast.
Side-by-side comparison
| Aspect | OBS + FFmpeg Custom Output | BUTT + virtual cable | Radio Streamer plugin |
|---|---|---|---|
| Setup effort | Medium (deep OBS settings) | High (3 things to install) | Low (1 plugin) |
| Apps required | OBS only | OBS + BUTT + virtual driver | OBS only |
| Reads from OBS audio | Yes (recording pipeline) | Indirect (via OS device) | Yes (direct, any track) |
| Can record video locally too | No | Yes | Yes |
| Can stream to Twitch too | Yes (separate pipeline) | Yes | Yes |
| Reconnect on drop | No | Yes | Yes |
| Latency overhead | None extra | 5 to 20 ms (virtual cable) | None extra |
| Credentials in OBS log | Visible | N/A (in BUTT logs only) | Sanitized |
| Platform support | Windows, macOS, Linux | Windows, macOS, Linux | macOS Apple Silicon (1.0) |
| Cost | Free | Free (BUTT, BlackHole) | Free, GPL |
Which method should I pick?
Use Radio Streamer if
- You produce in OBS Studio on macOS Apple Silicon.
- You want one app, one mixer, one workflow.
- You record video and broadcast radio at the same time, or might soon.
- You want sub-second activation and built-in reconnect.
Use FFmpeg Custom Output if
- You are on Windows, Linux, or an Intel Mac (where Radio Streamer is not yet available).
- You are not willing to install a separate app or a virtual driver.
- You are fine giving up local video recording while broadcasting.
Use BUTT plus a virtual cable if
- You need cross-platform support today and want a mature, well-known tool.
- You also broadcast from non-OBS workflows and want one source client across them.
- You need codecs beyond MP3, AAC, and Opus, like FLAC or AAC-HE.
- You need ICY metadata (now-playing track) push.
What about combining methods?
You can run more than one. A station might use Radio Streamer for live shows produced in OBS and BUTT for unattended music programming on a different rig. Icecast supports many simultaneous mounts; nothing stops you from feeding them with different clients.
What does not combine well: running FFmpeg Custom Output and Radio Streamer on the same OBS instance and pointing both at the same Icecast mount. Icecast accepts only one source per mount, so the second connection gets rejected.
Wrap up
"How to stream audio from OBS to Icecast" looks like one question and is really three, depending on what platform you are on and what else OBS is doing for you. The honest ranking for an OBS-on-Mac setup is plugin first, FFmpeg Custom Output second, BUTT third. For Windows and Linux, the order flips: BUTT first, FFmpeg Custom Output second, Radio Streamer when it lands on those platforms.
