Skip to content

Add self-hostable web player - #1

Merged
JonTelep merged 1 commit into
mainfrom
web-player
Oct 19, 2026
Merged

JonTelep merged 1 commit into
mainfrom
web-player

Conversation

@JonTelep

Copy link
Copy Markdown
Owner

Adds a web player you can self-host with your own password, alongside the existing CLI.

  • unplayer --print prints the stream URL, referer and user agent instead of playing (tested in test/test.sh).
  • web/server.py: paste a link, get a clean player. ffmpeg relays the stream as fMP4 HLS. Audio is re-encoded to plain AAC, because the browser player rewriting .ts audio on Chromium came out deep and slowed down. Playback waits for 30s of buffer so source stalls don't reach the viewer. There's a loading indicator and a tap-to-play fallback when autoplay is blocked, plus an optional PASSWORD gate and a /stats page.
  • Docker + Caddy: make deploy (automatic HTTPS) or make local (this machine only).
  • README: self-hosting guide (configure .env, public server vs local/Tailscale, updating, changing the password, security notes). .env.example is generic.

Tested: make test passes; streams played in the browser through stalls without the player running dry.

🤖 Generated with Claude Code

unplayer --print finds the stream; web/server.py relays it with ffmpeg as
fMP4 HLS (audio re-encoded to plain AAC, 30s start buffer to ride out source
stalls) behind an optional password. Docker + Caddy for HTTPS via make deploy,
make local for one machine. README covers self-hosting with your own password.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@JonTelep
JonTelep merged commit da56410 into main Oct 19, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant