You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+19-20Lines changed: 19 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,16 +33,16 @@ DLNA clients (including most modern TVs, Apple TV (via Infuse or VLC), PS5, Xbox
33
33
34
34
- Runs from a single command, `spritz` — zero config, zero state
35
35
- Announces itself via SSDP/UPnP, so clients find it without typing an IP
36
-
- Serves one or more folders (recursively — subdirectories are indexed automatically) from a single instance
36
+
- Serves one or more folders (recursively, subdirectories are indexed automatically) from a single instance
37
37
- Presents three browse views at the root: `Videos`, `Music`, and `By folder` (the on-disk structure)
38
-
- Supports video and audio formats (MP4/MKV/AVI/MOV/… and MP3/FLAC/OGG/…)
38
+
- Supports video and audio formats (MP4/MKV/AVI/MOV/... and MP3/FLAC/OGG/...)
39
39
- Implements `ContentDirectory:1` and `ConnectionManager:1` for DLNA Browse and Search
40
40
- Advertises sidecar subtitles (`.srt` / `.vtt` / `.ass`) next to matching media files
41
41
- Advertises duration, resolution, honest DLNA profile names (from the file, not the extension), and sidecar album art (`cover.jpg` / matching stem)
42
42
- Exposes an M3U playlist at `/spritz` for VLC, Infuse, and similar players
43
43
- Sends `ssdp:byebye` on Ctrl+C so clients drop it immediately
44
44
45
-
##Why Spritz?
45
+
# Why Spritz?
46
46
47
47
Most DLNA and media servers (such as Plex, Jellyfin, Emby, MiniDLNA/ReadyMedia, Rygel, Serviio, and others) are meant to be persistent servers: that is, you install a service, point a config file at your media library, often on a NAS or similar, maintain a database, and leave it running.
48
48
@@ -61,15 +61,14 @@ Spritz is built for ad hoc sharing, as in folders you don't serve every day. But
61
61
62
62
**Note:** Spritz reads the file tree at startup and doesn't watch it for changes. If you add files to a share, restart Spritz. Or let watchexec do it for you: `watchexec -r -- spritz`
63
63
64
-
## Install
65
-
66
-
### Homebrew (macOS and Linux)
64
+
# Install
67
65
66
+
## Homebrew (recommended for macOS and Linux)
68
67
```bash
69
68
brew install dfallman/tap/spritz
70
69
```
71
70
72
-
###Pre-built binaries
71
+
## Pre-built binaries
73
72
74
73
Download the latest archive for your platform from the [Releases](https://github.com/dfallman/spritz/releases) page. Builds are provided for:
75
74
@@ -79,7 +78,7 @@ Download the latest archive for your platform from the [Releases](https://github
79
78
80
79
Each archive ships with a `.sha256` checksum.
81
80
82
-
###From source
81
+
## From source
83
82
84
83
To compile Spritz from source, you'll need Rust. Use [rustup](https://rustup.rs/) for the installation:
###Smart TVs, game consoles, or media players (DLNA)
131
+
## Smart TVs, game consoles, or media players (DLNA)
133
132
Open your TV's Media Server or Network source. Spritz should show up within a few seconds. Inside, you'll see three containers — `Videos`, `Music`, and `By folder`. The first two are flat lists of every file by type; `By folder` mirrors your on-disk directory structure so you can navigate Shows → Season 1 → ep1.mkv the way you'd expect.
134
133
135
-
###VLC
134
+
## VLC
136
135
`Media → Open Network Stream → http://<your-spritz-server-ip>:8080/spritz`, or browse via `View → Playlist → Local Network → Universal Plug and Play`. VLC only scans at startup and when it receives a NOTIFY packet, so if it doesn't appear, restart VLC once Spritz is already running.
137
136
138
-
###Infuse (Apple TV / iOS / iPadOS)
137
+
## Infuse (Apple TV / iOS / iPadOS)
139
138
`Add Files → Network Share` and pick Spritz Media Server from the list, or enter the M3U URL manually. Works on tvOS as well — the share browses the three-container layout described above.
140
139
141
-
###Any M3U-capable player
140
+
## Any M3U-capable player
142
141
Point it at `http://<your-spritz-server-ip>:8080/spritz`.
143
142
144
143
**Note**: `<your-spritz-server-ip>` is the IP address of the machine you run spritz on, that's the "server" here — the "client" (see above) is the device from which you play your content. To find your server's IP, use `ipconfig` in the Windows Command Prompt. On macOS, check `System Settings → Network` (or use `ipconfig getifaddr en0` in a terminal). On linux, run `ip addr` or `hostname -I`.
@@ -189,7 +188,7 @@ Point it at `http://<your-spritz-server-ip>:8080/spritz`.
189
188
| Apple TV — VLC (tvOS, iOS, iPadOS) | Works | tvOS VLC sometimes misses SSDP; add the M3U URL manually |
190
189
| Xbox | Works | Advertises Microsoft `MediaReceiverRegistrar`|
191
190
192
-
##Troubleshooting
191
+
# Troubleshooting
193
192
194
193
DLNA is fiddly by nature, especially in combination with certain devices and operating systems (looking at you, Apple TV).
195
194
@@ -201,9 +200,9 @@ IPv6-only LANs: SSDP also joins `[FF02::C]:1900`. When `--bind` is the default u
201
200
202
201
On Apple TV, Infuse tends to work better than VLC. If you're using VLC and can't find the share, you can bypass discovery entirely by pasting the M3U URL into VLC: `Media → Open Network Stream → http://192.168.X.X:8080/spritz`. If that plays, the server is fine and the issue is discovery.
203
202
204
-
Restart VLC once Spritz is already running — VLC only scans at startup and on NOTIFY packets.
203
+
Restart VLC once Spritz is already running as VLC only scans at startup and on NOTIFY packets.
205
204
206
-
###Windows / WSL2
205
+
## Windows / WSL2
207
206
208
207
Spritz works under WSL2 with mirrored networking. Add this to your `~/.wslconfig`:
> **Known issue:** SSDP multicast sometimes requires elevated privileges under WSL2. If devices don't auto-discover the server, try `sudo spritz` or grant the binary `CAP_NET_RAW`. HTTP file serving and the M3U endpoint work either way.
223
+
**Known issue:** SSDP multicast sometimes requires elevated privileges under WSL2. If devices don't auto-discover the server, you could try granting the binary `CAP_NET_RAW` or (as a last resort) `sudo spritz`. HTTP file serving and the M3U endpoint work either way.
225
224
226
-
##Architecture
225
+
# Architecture
227
226
228
227
Spritz implements DLNA/UPnP AV directly instead of wrapping an existing library. At a glance:
0 commit comments