121 lines
3.7 KiB
Markdown
121 lines
3.7 KiB
Markdown
<p align="center">
|
|
<a href="https://techniverse.net">
|
|
<img src="https://assets.techniverse.net/f1/git/graphics/repo-techniverse-logo.png" alt="Techniverse Community" height="70" />
|
|
</a>
|
|
</p>
|
|
|
|
<h1 align="center">stream-recorder</h1>
|
|
|
|
<h4 align="center">
|
|
Generischer Stream-Recorder für RTMP, HLS, HTTP-Audio und weitere Formate — mit Web-UI und Docker
|
|
</h4>
|
|
|
|
<h6 align="center">
|
|
<a href="https://www.cleveradmin.de">🏰 Website</a>
|
|
·
|
|
<a href="https://techniverse.net">📰 Community</a>
|
|
·
|
|
<a href="https://social.techniverse.net/@donnerwolke">🐘 Mastodon</a>
|
|
·
|
|
<a href="https://matrix.to/#/#support:techniverse.net">💬 Support</a>
|
|
</h6>
|
|
<br>
|
|
|
|

|
|
|
|
## Funktionen
|
|
|
|
- **Web-Interface** — Jobs planen, Aufnahmen steuern und verlängern im Browser
|
|
- **Docker-basiert** — Ein Container, läuft auf ARM und x86/x64
|
|
- **Mehrere Stream-Typen** — RTMP, RTMPS, HLS (m3u8), MP3, AAC, OGG, FLAC und HTTP-Streams
|
|
- **Aufnahmen verlängern** — Laufende Aufnahmen spontan verlängern oder auf unbegrenzt setzen
|
|
- **Zeitplanung** — Automatische Aufnahmezeiten direkt im Web-UI konfigurieren
|
|
- **Segment-Splitting** — Lange Aufnahmen automatisch in Teile zerlegen
|
|
- **Auto-Reconnect** — Automatische Wiederverbindung bei Verbindungsabbrüchen
|
|
- **Schnellaufnahme** — URL eingeben, sofort aufnehmen
|
|
- **NTFY-Benachrichtigungen** — Push-Nachrichten bei Start, Stop, Fehler und Upload (pro Job schaltbar)
|
|
- **Plik-Upload** — Aufnahmen automatisch hochladen, optional danach löschen (pro Job schaltbar)
|
|
- **Metadata-Monitor** — Automatische Show-Erkennung via Stream-Metadaten (Plugin)
|
|
- **REST-API** — Alle Funktionen auch per API steuerbar
|
|
|
|
## Schnellstart
|
|
|
|
```bash
|
|
# Repository klonen
|
|
git clone https://git.techniverse.net/scriptos/stream-recorder.git
|
|
cd stream-recorder
|
|
|
|
# Container starten
|
|
docker compose up -d
|
|
```
|
|
|
|
Das Web-UI ist unter `http://localhost:8484` erreichbar. Die Konfiguration wird beim ersten Start automatisch in `data/config.yml` erstellt.
|
|
|
|
## Container Image
|
|
|
|
Release-Images werden automatisch in der Gitea Container Registry veröffentlicht:
|
|
|
|
```bash
|
|
docker pull git.techniverse.net/scriptos/stream-recorder:latest
|
|
docker pull git.techniverse.net/scriptos/stream-recorder:v3.0.0
|
|
```
|
|
|
|
Dev-Images entstehen bei Pushes auf `main` oder `dev`:
|
|
|
|
```bash
|
|
docker pull git.techniverse.net/scriptos/stream-recorder:dev-latest
|
|
```
|
|
|
|
## Docker Compose
|
|
|
|
```yaml
|
|
services:
|
|
stream-recorder:
|
|
image: git.techniverse.net/scriptos/stream-recorder:latest
|
|
container_name: stream-recorder
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8484:8484"
|
|
volumes:
|
|
- ./data:/app/data
|
|
environment:
|
|
TZ: Europe/Berlin
|
|
```
|
|
|
|
## Daten
|
|
|
|
Alle persistenten Daten liegen in einem einzigen Volume (`./data`):
|
|
|
|
| Pfad | Beschreibung |
|
|
|------|-------------|
|
|
| `data/config.yml` | Konfiguration (wird beim ersten Start automatisch erstellt) |
|
|
| `data/stream-recorder.db` | SQLite-Datenbank |
|
|
| `data/recordings/` | Aufnahmen (pro Job ein Unterordner) |
|
|
|
|
## Multi-Arch Build
|
|
|
|
```bash
|
|
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t stream-recorder:latest .
|
|
```
|
|
|
|
## Dokumentation
|
|
|
|
| Thema | Beschreibung |
|
|
|-------|-------------|
|
|
| [Jobs](docs/jobs.md) | Jobs erstellen, Zeitplanung, Schnellaufnahme |
|
|
| [Aufnahmen](docs/aufnahmen.md) | Verlängern, Stoppen, Reconnect, Segment-Splitting |
|
|
| [Plugins](docs/plugins.md) | NTFY, Plik-Upload, Metadata-Monitor |
|
|
| [Konfiguration](docs/konfiguration.md) | config.yml, alle Parameter |
|
|
| [API](docs/api.md) | REST-API Endpunkte |
|
|
|
|
<br><br>
|
|
<p align="center">
|
|
<img src="https://assets.techniverse.net/f1/git/graphics/gray0-catonline.svg" alt="">
|
|
</p>
|
|
|
|
<p align="center">
|
|
<sub>
|
|
© Patrick Asmus · Techniverse Network · <a href="./LICENSE">Lizenz</a>
|
|
</sub>
|
|
</p>
|