Appearance
Streams and mounts
A mount is one stream. It has a URL path, a password for the encoder that feeds it, and (optionally) its own listener limit and access rules. You can run many mounts on one server.
Add more streams
Each [[mounts]] block adds a stream:
toml
[[mounts]]
path = "/main.mp3"
secret_file = "secrets/main-source"
[[mounts]]
path = "/talk.mp3"
secret_file = "secrets/talk-source"
listener_limit = 100Listeners play http://your-server:8000/main.mp3 and http://your-server:8000/talk.mp3. You can have up to 64 mounts.
Use a different password per mount
Give each stream its own secret file. Then a leaked password only lets someone take over that one stream.
Path rules
- Start with
/, with no trailing/. Nested paths such as/stations/jazzare fine. - Letters, digits and
/ . _ - ~only. Paths are case-sensitive. /api,/admin,/internal,/health,/metricsand/hlsare reserved.
One source per mount
Only one encoder can broadcast to a mount at a time. A second encoder is refused with 409, so a forgotten test encoder can never silently replace your real show. When the encoder disconnects, its listeners are disconnected too, and players reconnect when the next session starts.
If you want a live DJ takes over from the playlist workflow, do the switching in Liquidsoap and send Quikcast a single stream. See How it fits with Icecast and Liquidsoap.
Limit listeners
By default every mount can have up to 10,000 listeners, within the server-wide limit. Cap one mount with listener_limit:
toml
[[mounts]]
path = "/small.mp3"
secret_file = "secrets/small-source"
listener_limit = 25 # 0 means no per-mount capServer-wide and default limits live under [limits]; see Capacity and limits.
Let encoders create streams on demand
Sometimes you do not know the stream names ahead of time, for example when each presenter gets their own mount. Turn on dynamic mounts and give them a shared credential:
toml
[sources]
allow_dynamic_mounts = true
username = "source"
secret_file = "secrets/dynamic-source"
[sources.defaults]
name = "Community Radio"
genre = "Various"Now an encoder that authenticates with that password can broadcast to any free path, for instance /dance. The mount exists while the source is connected and disappears once its last listener leaves. Nothing is written to your config. Mounts you list under [[mounts]] always take precedence.
[sources.defaults] provides the station name, description, genre and website for any source that does not send its own.
Station name and genre
For listed mounts, your encoder (BUTT, Liquidsoap) sends the name, genre and song title. Quikcast passes them to players that ask for them. You do not configure these per mount in the config file.
Supported formats
| Format | Content type the encoder sends | Notes |
|---|---|---|
| MP3 | audio/mpeg | Works everywhere. |
| AAC (ADTS) | audio/aac, audio/aacp | AAC-LC. |
| Ogg Vorbis, Opus, Ogg FLAC | audio/ogg, application/ogg | Titles travel inside the stream. |
| FLAC | audio/flac | Native FLAC, for lossless streams. |
Quikcast does not convert between formats. Each listener receives exactly what the encoder sent, so choose a format your audience's players support.