Files
stream-recorder/docs/jobs.md
T

125 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Jobs
![Jobs](assets/img2_jobs-overview.png)
Jobs sind vorkonfigurierte Aufnahme-Vorlagen. Jeder Job definiert einen Stream, optional einen Zeitplan und Plugin-Einstellungen.
## Job erstellen
Im Web-UI unter **Jobs → + Neuer Job**.
### Pflichtfelder
| Feld | Beschreibung |
|------|-------------|
| **Name** | Eindeutiger Name (wird als Ordnername verwendet) |
| **Stream-URL** | URL des Streams. Erlaubt: `http`, `https`, `rtmp`, `rtmps`, `rtsp`, `rtsps` |
### Optionale Felder
| Feld | Beschreibung |
|------|-------------|
| **Senderbibliothek** | Sender aus der Bibliothek auswählen — URL und Typ werden übernommen |
| **Beschreibung** | Freitext-Notiz zum Job (wird auch in NTFY-Nachrichten mitgeschickt) |
| **Typ** | Automatisch erkannt aus URL. Manuell wählbar: RTMP, HLS, MP3, AAC, OGG, HTTP |
| **Ausgabeformat** | Dateiendung. Leer = automatisch (mp4 für Video, mp3 für Audio) |
| **Max. Dauer** | Zeitlimit in Minuten. Entfällt bei Zeitplan mit Endzeit |
| **Segment-Dauer** | Aufnahme in Teile zerlegen (Minuten pro Segment) |
| **Extra ffmpeg Argumente** | Zusätzliche ffmpeg-Parameter (z.B. `-b:a 192k`), siehe [Extra ffmpeg-Argumente](#extra-ffmpeg-argumente) |
## Extra ffmpeg-Argumente
Aus Sicherheitsgründen sind nur bestimmte ffmpeg-Optionen erlaubt. Alles andere wird mit einer Fehlermeldung abgelehnt.
| Art | Erlaubte Optionen |
|-----|-------------------|
| Ohne Wert | `-vn` `-an` `-sn` `-dn` `-shortest` `-copyts` |
| Mit einem Wert | `-c` `-c:a` `-c:v` `-codec` `-codec:a` `-codec:v` `-acodec` `-vcodec` `-b:a` `-b:v` `-ar` `-ac` `-map` `-metadata` `-metadata:s:a` `-t` `-to` `-q:a` `-aq` `-af` `-filter:a` `-bsf:a` `-bsf:v` `-f` `-movflags` `-segment_format` `-fflags` `-avoid_negative_ts` `-max_muxing_queue_size` |
Audiofilter (`-af`, `-filter:a`) dürfen keine Quellen wie `movie`, `amovie`, `sendcmd`, `zmq` oder Dateien verwenden. ffmpeg läuft zudem mit einer Protokoll-Whitelist, lokale Dateien können nicht als Eingabe gelesen werden.
Beispiele:
```
-b:a 192k -ar 44100
-c:a libmp3lame -q:a 2
-af loudnorm -metadata title="Meine Sendung"
```
## Validierung
| Feld | Regel |
|------|-------|
| **Startzeit / Endzeit** | Format `HH:MM` |
| **Startdatum / Enddatum** | Format `YYYY-MM-DD` |
| **Tage** | `*` oder Liste/Bereiche wie `Mo-Fr,So` (siehe [Tage-Syntax](#tage-syntax)) |
| **Vor-/Nachlaufzeit** | 0–120 Minuten |
| **Segment-Dauer** | 10 Sekunden bis 24 Stunden |
| **Max. Dauer** | bis 30 Tage |
Ungültige Eingaben werden mit einer Fehlermeldung abgelehnt (API: 400/422).
## Zeitplan
Aktiviert automatische Aufnahmen zu festgelegten Zeiten.
| Feld | Beschreibung |
|------|-------------|
| **Einmalig** | Nur einmal am angegebenen Datum ausführen |
| **Startdatum** | Datum für einmalige Aufnahme |
| **Enddatum** | Enddatum für mehrtägige Aufnahmen (leer = gleicher Tag) |
| **Tage** | Wochentage: `*` (täglich), `Mo-Fr`, `Sa,So`, `Mo,Mi,Fr` |
| **Startzeit** | Aufnahme-Beginn (HH:MM) |
| **Endzeit** | Aufnahme-Ende (HH:MM) — Dauer wird automatisch berechnet |
Wenn Start- und Endzeit gesetzt sind, wird die Aufnahmedauer automatisch berechnet. Das Feld "Max. Dauer" wird dann nicht benötigt.
### Tage-Syntax
| Eingabe | Bedeutung |
|---------|-----------|
| `*` | Jeden Tag |
| `Mo-Fr` | Montag bis Freitag |
| `Sa,So` | Samstag und Sonntag |
| `Mo,Mi,Fr` | Montag, Mittwoch, Freitag |
| `Mo-Mi,Fr` | Montag bis Mittwoch und Freitag |
Unterstützt: `Mo/Mon/Montag`, `Di/Tue/Dienstag`, `Mi/Wed/Mittwoch`, `Do/Thu/Donnerstag`, `Fr/Fri/Freitag`, `Sa/Sat/Samstag`, `So/Sun/Sonntag`
### Zeitpuffer
![Zeitpuffer](assets/img4_buffer.png)
Pro Job können Vor- und Nachlaufzeit konfiguriert werden, um die Aufnahme um den geplanten Zeitraum herum zu erweitern:
| Feld | Beschreibung |
|------|-------------|
| **Vorlaufzeit** | Aufnahme startet X Minuten vor der geplanten Startzeit |
| **Nachlaufzeit** | Aufnahme läuft X Minuten über die geplante Endzeit hinaus |
Die Standardwerte können in den Einstellungen unter **Zeitplan-Puffer** festgelegt werden.
### Mehrtägige Aufnahmen
Bei einmaligen Aufnahmen kann ein **Enddatum** angegeben werden, das nach dem Startdatum liegt. Die Aufnahmedauer wird dann automatisch über die Tagesgrenzen hinweg berechnet.
## Plugins pro Job
Jeder Job kann individuell Plugin-Funktionen aktivieren:
| Option | Beschreibung |
|--------|-------------|
| **Benachrichtigungen (NTFY)** | Push-Nachrichten bei Start, Stop und Fehlern für diesen Job |
| **Plik-Upload** | Automatischer Upload nach Aufnahme-Ende |
| **File nach Upload lokal löschen** | Lokale Datei nach erfolgreichem Plik-Upload entfernen |
Die globale NTFY- und Plik-Konfiguration (URL, Token, etc.) erfolgt in den [Einstellungen](konfiguration.md).
## Manuelle Aufnahme
Jobs können auch manuell über den **Aufnehmen**-Button gestartet werden, unabhängig vom Zeitplan. Pro Job läuft höchstens eine Aufnahme gleichzeitig. Ein Job mit laufender Aufnahme kann nicht gelöscht werden.
## Schnellaufnahme
Für einmalige Aufnahmen ohne Job: **Dashboard → + Schnellaufnahme**. URL eingeben (oder aus der Senderbibliothek wählen), optional Name und Dauer angeben, sofort starten.