Skip to content

Commit 297d2cc

Browse files
author
Datanoise
committed
docs: add AutoDJ documentation and rename UI menu item
1 parent cffb60b commit 297d2cc

2 files changed

Lines changed: 29 additions & 3 deletions

File tree

README.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,9 @@ Traditional streaming servers can be complex to configure and resource-heavy. Ti
4242
- **Instant Start**: Listeners receive a 64KB audio burst upon connection, eliminating the "buffering" delay common in traditional servers.
4343
- **High-Performance Distribution**: Shared circular buffer architecture designed for 100,000+ concurrent listeners per stream.
4444
- **Icecast2 Compatible**: Works with standard source clients (BUTT, OBS, Mixxx, LadioCast) and players (VLC, web browsers).
45-
- **Approval Workflow**: New streams are hidden by default until approved by an administrator.
45+
- **Approvals Workflow**: New streams are hidden by default until approved by an administrator.
46+
- **Integrated AutoDJ**: Automated 24/7 broadcasting from local music directories. Supports recursive folder scanning, shuffle mode, and manual queue management.
47+
- **Dedicated MPD Servers**: Optionally expose a standard MPD (Music Player Daemon) server for each AutoDJ instance for remote control via standard clients.
4648
- **Stream Relaying**: Act as an edge node by pulling streams from remote servers.
4749
- **Outbound ICY Metadata**: Injects song titles directly into the audio stream, ensuring "Now Playing" info appears on all traditional radio players (VLC, Winamp, etc.).
4850
- **Built-in Transcoding**: High-performance, pure Go transcoding (MP3/Opus) to provide multiple quality options or formats for a single source.
@@ -103,7 +105,21 @@ TinyIce uses a JSON configuration file (`tinyice.json`). Below are the available
103105
"directory_listing": true,
104106
"directory_server": "http://dir.xiph.org/cgi-bin/yp-cgi",
105107
"low_latency_mode": false,
106-
"banned_ips": []
108+
"banned_ips": [],
109+
"autodjs": [
110+
{
111+
"name": "24/7 Chill",
112+
"mount": "/chill",
113+
"music_dir": "/music/chill",
114+
"format": "mp3",
115+
"bitrate": 128,
116+
"enabled": true,
117+
"loop": true,
118+
"inject_metadata": true,
119+
"mpd_enabled": true,
120+
"mpd_port": "6600"
121+
}
122+
]
107123
}
108124
```
109125

@@ -151,6 +167,16 @@ TinyIce includes a built-in, CGO-free transcoder that allows you to take one inp
151167

152168
> **Note**: Currently supporting MP3 (128kbps fixed) and Opus.
153169
170+
### AutoDJ (Internal Streamer)
171+
TinyIce features a built-in AutoDJ that allows you to stream local music files automatically.
172+
173+
- **Multi-Instance**: Run multiple independent AutoDJs on different mount points.
174+
- **Recursive Library**: Browse and add entire folders or individual tracks recursively.
175+
- **MPD Compatible**: Optionally expose a dedicated MPD server for each instance (with optional password protection).
176+
- **Advanced Management**: Drag-and-drop playlist reordering, manual queueing, and shuffle mode.
177+
- **Real-time Monitoring**: Track song progress and monitor playback directly from the Admin Dashboard.
178+
- **Auto-Transcoding**: Stream your local MP3s in either MP3 or Opus format at any bitrate.
179+
154180
**Example Filter (`/etc/fail2ban/filter.d/tinyice.conf`):**
155181
```ini
156182
[Definition]

server/templates/admin.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@
8080
{{if eq .User.Role "superadmin"}}
8181
<button class="nav-link" onclick="showTab('tab-users')"><i data-lucide="users"></i> User Management</button>
8282
<button class="nav-link" onclick="showTab('tab-relays')"><i data-lucide="refresh-ccw"></i> Edge Relays</button>
83-
<button class="nav-link" onclick="showTab('tab-streamer')"><i data-lucide="play-circle"></i> Internal Streamer</button>
83+
<button class="nav-link" onclick="showTab('tab-streamer')"><i data-lucide="play-circle"></i> AutoDJ</button>
8484
<button class="nav-link" onclick="showTab('tab-transcoding')"><i data-lucide="scissors"></i> Transcoding</button>
8585
<button class="nav-link" onclick="showTab('tab-webhooks')"><i data-lucide="webhook"></i> Webhooks</button>
8686
<button class="nav-link" onclick="showTab('tab-security')"><i data-lucide="shield-check"></i> Security & Bans</button>

0 commit comments

Comments
 (0)