update
This commit is contained in:
82
README.md
82
README.md
@@ -33,11 +33,15 @@ Im Betrieb läuft der Sync täglich um 4:30 von selbst.
|
||||
## Entwickeln
|
||||
|
||||
```bash
|
||||
make dev # Backend :8000, Frontend :5173
|
||||
make stop
|
||||
make dev # MediaMTX, Backend :8000, Frontend :5173
|
||||
make stop # alles wieder aus
|
||||
```
|
||||
|
||||
Der Vite-Dev-Server leitet `/api` an den Backend-Port weiter.
|
||||
`make dev` startet MediaMTX als Container mit. Ohne ihn liefe der
|
||||
Stream-Reiter ins Leere und OBS fände keinen Server. Einzeln geht es über
|
||||
`make mtx` und `make mtx-stop`.
|
||||
|
||||
Der Vite-Dev-Server leitet `/api` ans Backend und `/stream` an MediaMTX.
|
||||
|
||||
## Produktiv
|
||||
|
||||
@@ -113,6 +117,78 @@ Im Raster stehen Reihen als eine Karte, die durch ihre Teile blättert. Aus
|
||||
Die Karte startet beim bestbewerteten Teil, danach richtet sich auch ihr
|
||||
Platz im Raster.
|
||||
|
||||
## Der Stream-Reiter
|
||||
|
||||
Du sendest von deinem Rechner per OBS an den Server, alle schauen im Browser
|
||||
zu. Voice läuft weiter über Discord.
|
||||
|
||||
```
|
||||
OBS ──RTMP──► MediaMTX ──LL-HLS──► FastAPI ──► Browser (hls.js)
|
||||
```
|
||||
|
||||
**Senden:**
|
||||
|
||||
```bash
|
||||
make stream # an den lokalen MediaMTX
|
||||
make stream ZIEL=horror.marha.de # an den Server
|
||||
make stream-stop # OBS beenden
|
||||
```
|
||||
|
||||
Strg-C im Terminal beendet OBS nicht zuverlässig — deshalb `make stream-stop`
|
||||
oder einfach das OBS-Fenster schließen.
|
||||
|
||||
Das Skript legt ein eigenes OBS-Profil `filmabend` an und startet OBS damit.
|
||||
Deine normale OBS-Konfiguration bleibt unberührt. Beim Start fragt der
|
||||
Desktop, welches Fenster übertragen werden soll — erst nach dieser Auswahl
|
||||
fließen Bilder.
|
||||
|
||||
Bitrate und Auflösung stehen in
|
||||
`~/.config/obs-studio/basic/profiles/filmabend/basic.ini` und werden nur
|
||||
beim ersten Mal geschrieben. Das Sendeziel aktualisiert das Skript jedes Mal.
|
||||
|
||||
Von Hand geht es auch:
|
||||
|
||||
| Feld | Wert |
|
||||
| --- | --- |
|
||||
| Server | `rtmp://horror.marha.de:1935/` |
|
||||
| Streamschlüssel | `filmabend?user=sender&pass=<MTX_SENDEPASSWORT>` |
|
||||
|
||||
Ohne Passwort weist MediaMTX die Verbindung ab. Zuschauen braucht keins.
|
||||
|
||||
**Ton:** OBS nimmt den Desktop-Ton über PulseAudio mit. Im Browser ginge
|
||||
das nicht — dort liefert `getDisplayMedia` unter Linux nur Tab-Ton, und
|
||||
Firefox gar keinen.
|
||||
|
||||
**Warum alle dasselbe Bild sehen**
|
||||
|
||||
Jeder Player hält 4 Sekunden Abstand zur Live-Kante (`liveSyncDuration`).
|
||||
Wer zurückfällt, spielt bis zu 1,5-fach schneller ab, bis er wieder auf
|
||||
Ziellatenz ist — das regelt hls.js über `maxLiveSyncPlaybackRate`. Ab 7
|
||||
Sekunden Rückstand springt es stattdessen.
|
||||
|
||||
Gemessen mit zwei unabhängigen Playern am selben Stream:
|
||||
|
||||
| Fall | Ergebnis |
|
||||
| --- | --- |
|
||||
| Dauerlauf, 45 s | Latenz konstant 4,05 s, keine Regelung nötig |
|
||||
| Zwei Player | **11 ms** Bildversatz |
|
||||
| Nach 8 s Aussetzer | zurück auf 12 ms in 9 Sekunden |
|
||||
|
||||
Die Anzeige rechts zeigt Verzögerung, Abweichung, Tempo und die Sendezeit
|
||||
aus dem Manifest. Zwei Zuschauer mit gleicher Sendezeit sehen exakt dasselbe
|
||||
Bild — damit lässt sich der Gleichlauf im Betrieb prüfen.
|
||||
|
||||
**Grenzen**
|
||||
|
||||
- Dein Upload muss stabil 6–8 Mbit/s halten. Reicht er nicht, wird es für
|
||||
alle schlechter.
|
||||
- Der Server schiebt pro Zuschauer die volle Bitrate raus. Bei 15 Leuten
|
||||
und 6 Mbit/s sind das 90 Mbit/s und rund 80 GB je Filmabend. Hetzner
|
||||
liefert 10 Gbit und 20 TB im Monat.
|
||||
- Der HLS-Proxy in FastAPI reicht jedes Byte durch Python. Für einen
|
||||
Filmabend genügt das; bei mehr Last gehört eine Traefik-Route direkt auf
|
||||
MediaMTX davor.
|
||||
|
||||
## Vorschläge und Rad
|
||||
|
||||
Im Reiter **Rad** landen die Filmvorschläge. Jede Sitzung darf einen Film
|
||||
|
||||
Reference in New Issue
Block a user