No description
- HTML 98.6%
- Dockerfile 1.4%
|
|
||
|---|---|---|
| .dockerignore | ||
| docker-compose.yml | ||
| Dockerfile | ||
| index.html | ||
| README.md | ||
| screenshot.jpg | ||
n24-yt-multiviewer
Watch many YouTube livestreams at once — full-viewport video wall with priority rows, auto-fitting grid, and live-sync. Built for the Nürburgring 24h onboards.
▶ Live: https://n24.bbrks.me
Features
- Paste any number of YouTube livestream URLs (one per line) —
watch?v=,youtu.be/,/live/,/embed/and bare IDs are all accepted. - Primary rows — prefix a line with
*to pin it to a full-width primary row, or**for a second full-width primary row below it. Primary tiles are rendered at native 16:9 with no letterboxing or gaps. - Auto-fitting matrix — the remaining streams are laid out in the column count that keeps the 16:9 video as large as possible for the available space, recomputed on window resize.
- Autoplay muted with a one-shot sync-to-LIVE ~5s after load (seeks every player to the live edge so the views stay aligned).
- Fullscreen kiosk mode that auto-hides the control bar.
- Mute/unmute all in one click.
Usage
YouTube's IFrame API rejects a null origin, so it must be served over HTTP
(not opened as a file://):
python3 -m http.server 8000
Then open http://localhost:8000/. The default N24 onboard streams are pre-filled; edit the list and click Load / Reload.
Hosting (Docker)
Static nginx image, no build step:
docker build -t n24-yt-multiviewer .
docker run -d --restart unless-stopped -p 8080:80 n24-yt-multiviewer
Then open http://localhost:8080/ (put it behind your own TLS-terminating reverse proxy / load balancer when hosting publicly).
Hotkeys
| Key | Action |
|---|---|
f |
Toggle fullscreen |
m |
Mute / unmute all |
h |
Hide / show bar |
s |
Sync all to LIVE |
Hotkeys are ignored while typing in the URL box.
Limitations
- Some channels disable off-site embedding (YouTube error 150/153) — nothing fixable client-side; drop/replace those URLs.
- Browsers only autoplay muted video; that's why streams start muted.
- Many simultaneous HD streams is heavy on CPU/bandwidth; YouTube picks adaptive quality.
