Konfigurationsreferenz
Die Datei
Section titled “Die Datei”Die Konfiguration ist bewusst eine einfache, lesbare Textdatei und keine Datenbank. Sie lässt sich mit cp sichern, mit der Kopie der letzten Woche vergleichen, in eine Versionsverwaltung einchecken und per SSH von Hand bearbeiten, wenn die Weboberfläche nicht erreichbar ist — also genau dann, wenn Sie am dringendsten etwas ändern müssen. Es gibt keinen separaten Zustandsspeicher, der mit ihr synchron gehalten werden müsste.
Castmux schreibt die Datei bei jeder Änderung in der Weboberfläche neu. Bearbeitungen von Hand und in der Oberfläche sind also derselbe Vorgang an derselben Datei. Wer die Datei bei laufendem Dienst von Hand bearbeitet, riskiert, dass die nächste Aktion in der Oberfläche die Änderung überschreibt: Stoppen Sie den Dienst, bearbeiten Sie die Datei und starten Sie ihn wieder.
Bei einem Upgrade werden Schlüssel, die ein neueres Release hinzufügt, automatisch mit ihren Voreinstellungen ergänzt, sodass eine ältere Datei weiter funktioniert. Bevor etwas geändert wird, wird eine .pre-migration-Kopie des Originals geschrieben. Diese Datei stellen Sie wieder her, wenn eine Migration nicht Ihren Vorstellungen entspricht.
Kommandozeilenoptionen
Section titled “Kommandozeilenoptionen”—config
Pfad zur Konfigurationsdatei. Voreinstellung config.yaml im Arbeitsverzeichnis. Container-Installationen übergeben einen expliziten Pfad in ein eingebundenes Volume, normalerweise /config/config.yaml.
—port
TCP-Port für die Weboberfläche und die HTTP-API. Voreinstellung 8080. Die API hat keinen eigenen Port; es gibt einen einzigen Listener.
-debug
Ausführliches Logging, einschließlich der vollständigen Engine-Kommandozeilen und Details zu jedem Neustart. Nützlich bei der Diagnose eines Senders, der nicht startet. Die Ausgabe ist umfangreich; lassen Sie die Option auf einem Gerät mit kleiner Log-Partition nicht dauerhaft eingeschaltet.
Umgebungsvariablen
Section titled “Umgebungsvariablen”CASTMUX_WEB_USERNAME
Benutzername für die Weboberfläche und die API.
CASTMUX_WEB_PASSWORD
Passwort für die Weboberfläche und die API.
Ein vollständiges kommentiertes Beispiel
Section titled “Ein vollständiges kommentiertes Beispiel”Eine funktionierende Datei für eine kleine Installation: zwei Sender, einer per HLS und einer per SRT, beide sowohl auf einem DVB-C-Multiplex als auch per Multicast übertragen.
global: default_engine: tsduck # pass-through unless a channel overrides it udp_device: 192.168.10.4 # source address, NOT the egress interface startup_stagger_seconds: 3 hls_live_start_index: -1 on_demand_enabled: true on_demand_fail_open: true # viewer detection broken => keep streaming igmp_active_query: true igmp_grace_seconds: 90 igmp_linger_seconds: 30 igmp_query_interval_seconds: 30 igmp_interfaces: - eth0 - eth1 enable_dummy_listeners: true overwrite_srt_latency: true overwrite_pkt_size: true ping_hosts: - 192.168.10.1 # the site gateway - origin.example.net # the content provider location_name: Seaview Court re_seller: Northern AV ts_monitoring: true ts_pcr_jitter_max_ms: 200 licence: identity_dir: /config/identity # must be on a persistent volume site_ref: seaview-court
streams: - id: 1 name: Example One # also the DVB service name and metric label description: Main lounge line-up active: true source: type: hls url: https://origin.example.net/one/master.m3u8 destination: address: 239.10.0.1 port: 5000 force_always_on: false # on-demand: runs when somebody joins engine: tsduck epg_id: example-one.uk # the channel's id in the XMLTV guide resolution_profile: hd # closest rung wins; not an exact-match filter min_output_kbps: 500 pdt_shift_ms: 0 # 0 disables the PDT drift restart
- id: 2 name: Example Two description: Contribution feed from the studio active: true source: type: srt url: srt://feed.example.net:9001?streamid=two destination: address: 239.10.0.2 port: 5000 force_always_on: true # always on air, viewers or not engine: tsduck resolution_profile: "" # SRT has no ladder; nothing to select min_output_kbps: 500
dvb_muxes: - id: 1 name: Mux A device: 0 # modulator device index frequency: 474000000 # Hz, not MHz qam: 256 symbol_rate: 6900 network_id: 1 ts_id: 1 network_name: Seaview Court active: true channel_ids: [1, 2] # order decides slot, PID block, service IDGlobale Einstellungen
Section titled “Globale Einstellungen”Alles unter global gilt für jeden Sender, sofern der Sender es nicht überschreibt. Eine Änderung über die Weboberfläche wird ohne Neustart auf laufende Sender angewendet; es handelt sich also um Live-Einstellungen, nicht um Einstellungen, die nur beim Start gelesen werden.
| Schlüssel | Voreinstellung | Zweck |
|---|---|---|
| Engines und Ausgang | ||
| default_engine | tsduck | Welche Engine Sender verwenden, die selbst keine angeben. Die Pass-through-Engine erhält die ursprünglichen PIDs, Audiospuren und Sprachdeskriptoren; die Remux-Engine schreibt sie neu, was manche nachgelagerten Geräte verlangen. Siehe Streaming-Engines. |
| udp_device | leer | Quelladresse für ausgehendes UDP. Beachten Sie genau: Damit wird die Quelladresse gebunden, die Ausgangsschnittstelle wird dadurch nicht gewählt — der Kernel entscheidet weiterhin anhand der Routingtabelle, über welchen Port die Pakete hinausgehen. Geht Multicast über die falsche Schnittstelle hinaus, korrigieren Sie die Route, nicht diesen Wert. |
| startup_stagger_seconds | 3 | Abstand zwischen den Senderstarts beim Hochfahren. Sonst öffnet jeder Sender seine Quelle gleichzeitig, und acht gleichzeitige HLS-Starts sättigen einen Uplink mit 100 Mbit während des ersten Segment-Schubs, sodass alle acht scheitern statt nur einer. Setzen Sie 0 zum Abschalten, wenn es Ihrem Uplink wirklich nichts ausmacht. |
| hls_live_start_index | -1 | Bei welchem Segment der Live-Playlist begonnen wird, gezählt ab der Live-Kante. -1 ist das letzte Segment. Näher an der Kante bedeutet geringere Latenz und weniger Puffer, um Jitter des Ursprungsservers aufzufangen; weiter hinten ist toleranter und weiter hinter live. |
| overwrite_pkt_size | true | Erzwingt bei HLS-Sendern volle 1316-Byte-UDP-Datagramme — sieben Transportpakete pro Datagramm, wie Set-Top-Boxen es erwarten. Ohne diese Option erzeugen manche Quellen kurze Datagramme und verschwenden einen spürbaren Anteil der Leitung. |
| overwrite_srt_latency | true | Leitet die SRT-Latenz aus der gemessenen Round-Trip-Zeit zum Absender ab, statt einen festen Wert zu verwenden. Eine von Hand gesetzte Latenz, die für einen Pfad richtig war, ist für die nächste Installation meist falsch. |
| On-Demand-Streaming und IGMP | ||
| on_demand_enabled | true | Hauptschalter für zuschauergesteuertes Streaming. Ist er aus, läuft jeder als aktiv markierte Sender dauerhaft, unabhängig davon, ob jemand zusieht. |
| on_demand_fail_open | true | Lässt die Sender weiterlaufen, wenn die Zuschauererkennung nicht verfügbar ist — der Mitschnitt kann nicht starten, die Schnittstelle verschwindet, der Beobachter stirbt. Lassen Sie diese Option eingeschaltet. Ohne sie ist die Folge ein Gebäude voller schwarzer Bildschirme, verursacht durch eine Überwachungskomponente — in jeder Hinsicht schlimmer als ein wenig verschwendete Bandbreite. |
| igmp_active_query | true | Sendet eigene IGMP General Queries. Clients melden sich unaufgefordert nur im Moment des Beitritts und schweigen dann, bis sie gefragt werden. Ohne Abfrage verliert ein Neustart deshalb jedes Wissen über vorhandene Zuschauer. Schalten Sie das nur ab, wenn das Segment bereits einen echten Querier hat; zwei Querier in einem Segment sind unsauber, aber nicht fatal. |
| igmp_grace_seconds | 90 | Wie lange ein Zuschauer schweigen darf, bevor er als gegangen gilt. Muss igmp_query_interval_seconds deutlich übersteigen, sonst verdrängt ein einziger verlorener Report einen Zuschauer, der noch zusieht. |
| igmp_linger_seconds | 30 | Wie lange ein Sender weiterläuft, nachdem der letzte Zuschauer gegangen ist. Das macht Zappen erträglich: Eine Rückkehr innerhalb des Linger-Fensters erfolgt sofort, statt einen Kaltstart zu kosten. |
| igmp_query_interval_seconds | 30 | Abstand zwischen General Queries. Ein kleinerer Wert erkennt schneller ein Gerät, das an der Steckdose ausgeschaltet wurde, auf Kosten von mehr Steuerverkehr. |
| igmp_interfaces | alle mit einer Adresse | Auf welchen Schnittstellen Membership mitgeschnitten wird. Die Voreinstellung umfasst jede Schnittstelle, der eine Adresse zugewiesen ist. Benennen Sie sie ausdrücklich auf einer Box mit mehreren Netzwerkkarten, von denen nur eine zu den Fernsehgeräten zeigt. |
| enable_dummy_listeners | true | Hält an jeder Gruppe einen lokalen Abnehmer. Ohne ihn stauen sich Pakete an eine Gruppe, der niemand beigetreten ist, in den Socket-Puffern und verursachen schließlich Überläufe, die wie Quellenfehler aussehen. |
| Überwachung und Standortkennung | ||
| ts_monitoring | true | Misst die Transport-Stream-Qualität jedes Senders — Bitrate und ihre Streuung, PCR-Timing, Transport- und Continuity-Fehler — für die Diagramme pro Sender und die exportierten Messwerte. Auf einem Pass-through-Sender läuft die Messung in der Verarbeitungskette des Senders selbst; bei einem Remux-Sender hört ein zweiter, rein lesender Prozess auf die Multicast-Gruppe des Senders und misst so, was ein Empfänger tatsächlich erhält. Beide beobachten nur und verändern den Stream nie. Setzen Sie false, um auf einem stark ausgelasteten Gerät den geringen CPU-Aufwand pro Sender zu sparen. |
| ts_pcr_jitter_max_ms | 200 | Wie weit, in Millisekunden, eine Program Clock Reference vom tatsächlichen Timing ihres Pakets abweichen darf, bevor sie als PCR-Jitter-Ereignis zählt. Das ist eine Toleranz für Lieferschübe, nicht der Genauigkeitswert aus MPEG-2: SRT-Ursprungsserver verschachteln häufig in Schüben von etwa 160 ms, und ein Relay, das HLS umverpackt, liefert ganze Segmente auf einmal. 200 lässt gewöhnliches Verschachteln passieren und markiert die Schübe, die der Puffer eines Empfängers tatsächlich überbrücken müsste. Erhöhen Sie den Wert, wenn ein bekanntermaßen stoßweise liefernder Ursprungsserver das Diagramm mit Ereignissen flutet, gegen die niemand etwas tun kann. |
| ping_hosts | leere Liste | Zusätzliche Hosts für die Erreichbarkeitsüberwachung, ergänzend zu dem, was aus der Konfiguration abgeleitet wird. Sinnvolle Einträge sind das Gateway der Installation und der Inhalte-Ursprungsserver: Wenn ein Sender ausfällt, ist die erste Frage, ob die Installation das Internet verloren hat oder der Anbieter den Sender — und das beantwortet diese Liste. |
| location_name | leer | Der Standort, den dieses Gerät versorgt, so benannt, wie Sie ihn nennen würden — in Settings als Location angezeigt. Er kennzeichnet die exportierten Messwerte, sodass sich eine Flotte von Geräten in einem Dashboard unterscheiden lässt, er wird dem Lizenzserver als Standortname gemeldet, und er ist der DVB-C-Netzwerkname, den Set-Top-Boxen anzeigen, sofern keiner ausdrücklich gesetzt ist. Dieser Schlüssel hieß früher hotel_name; eine ältere Datei wird beim Laden automatisch migriert. |
| re_seller | leer | Der Partner oder Installateur, der für die Installation zuständig ist. Ebenfalls ein Metrik-Label, um ein Dashboard auf den Bestand eines Wiederverkäufers zu filtern. |
Engine-Parameter
Section titled “Engine-Parameter”Diese Schlüssel enthalten rohe Argumentzeichenketten, die an die zugrunde liegenden Programme übergeben werden: FFmpeg für Remux-Sender, TSDuck für Pass-through-Sender und mpv für den HDMI-Ausgang. Sie sind bewusst nicht in der Weboberfläche. Sie lassen sich durch Bearbeiten der Datei oder über PUT /api/settings ändern, und das Speichern eines davon startet jeden aktiven Sender neu.
Der Grund, sie aus der Oberfläche herauszuhalten, ist der Wirkungsradius. Jede Zeichenkette gilt für jeden Sender, der diese Engine verwendet. Eine Engine, die wegen eines einzigen fehlerhaften Arguments nicht startet, nimmt die gesamte Senderliste auf einmal vom Netz, nicht nur einen Sender. Ein Feld, das einem ganzen Gebäude das antun kann, sollte nicht einen Tastendruck von einem Betreiber entfernt sein, der gerade einen Sender umbenennen will.
| Schlüssel | Voreinstellung | Zweck |
|---|---|---|
| ffmpeg_params | ausgelieferter Wert | Optionen ganz am Anfang der FFmpeg-Kommandozeile jedes Remux-Senders, vor dem Eingang — Zeitstempelreparatur, Probe-Größe und Pufferung. Der ausgelieferte Wert ist auf HLS-Ursprungsserver abgestimmt; seine Probe-Größe von 15 MB ist der Grund, warum es startup_stagger_seconds gibt. Ist der Schlüssel leer, wird stattdessen ein minimales -fflags +genpts -rw_timeout 10000000 verwendet. |
| ffmpeg_udp_params | ausgelieferter Wert | Query-String, der an die udp://-Ausgangs-URL jedes Remux-Senders angehängt wird: TTL, Datagrammgröße, Socket- und FIFO-Puffer. Zwei Teile werden gemeinsam genutzt oder überschrieben. Die ttl hier wird auch von Pass-through-Sendern verwendet, sodass beide Engines dieselbe TTL auf die Leitung bringen. Und mit eingeschaltetem overwrite_pkt_size wird jedes pkt_size bei HLS-Sendern entfernt, weil die Anwendung die Datagrammgröße selbst festlegt. |
| ffmpeg_preview_params | ausgelieferter Wert | Zusätzliche Optionen für den FFmpeg-Prozess der Browser-Vorschau, vor dessen Eingang eingefügt. Sie wirken nur auf Vorschauen, nie auf das, was auf die Leitung geht. |
| tsduck_params | leer | Zusätzliche tsp-Optionen und -Plugins, die jedem Pass-through-Sender nach der eingebauten Verarbeitung und vor der Qualitätsmessung und dem Ausgang hinzugefügt werden. Zwei eingebaute Schritte treten dafür zurück: Nennt der Wert das Plugin svrename oder sdt, wird die automatische DVB-Service-Benennung übersprungen statt verdoppelt; und wählt er selbst eine HLS-Stufe (zum Beispiel --lowest-bitrate), wird die voreingestellte Auswahl der höchsten Bitrate nicht hinzugefügt, weil tsp zwei Selektoren ablehnt. |
| mpv_params | ausgelieferter Wert | Zusätzliche Optionen für den Player des HDMI-Ausgangs, die nach der auf der HDMI-Seite getroffenen Anzeige- und Audioauswahl angehängt werden. mpv berücksichtigt das letzte Vorkommen einer Option; eine Angabe hier überschreibt also das entsprechende Auswahlmenü. Der ausgelieferte Wert nennt einen bestimmten Anzeigekontext und eine bestimmte Audiokarte; auf anderer Hardware als der, für die er geschrieben wurde, entfernen Sie diese Angaben und verwenden stattdessen die Auswahl auf der HDMI-Seite. |
HDMI-Ausgang
Section titled “HDMI-Ausgang”Der Block hdmi_stream unter global konfiguriert den HDMI-Ausgang. Alles darin wird auf der HDMI-Seite eingestellt.
| Schlüssel | Voreinstellung | Zweck |
|---|---|---|
| hdmi_stream.name | leer | Bezeichnung des Ausgangs in der Statusanzeige und in den Logs. |
| hdmi_stream.stream_id | keine | Die id des abzuspielenden Senders. Der Player tritt der Multicast-Gruppe dieses Senders bei und verwendet dabei die Adresse udp_device, sofern eine gesetzt ist. 0 oder die ID eines gelöschten Senders lässt den Ausgang ohne etwas zum Abspielen, und das Log sagt, welcher Fall vorliegt. |
| hdmi_stream.active | false | Startet und stoppt die Wiedergabe. |
| hdmi_stream.vo | Voreinstellung des Players | Die Videoausgabe des Players, etwa gpu, gpu-next oder drm. Die beiden gpu-Ausgaben erhalten automatisch einen DRM/KMS-Kontext, da ein Gerät keinen Desktop hat, in den gezeichnet werden könnte. |
| hdmi_stream.drm_device | Voreinstellung des Players | Das Anzeigegerät als Pfad, etwa /dev/dri/card0. Nötig auf Hardware mit mehr als einem Display-Controller, wo die Voreinstellung der falsche Anschluss sein kann. |
| hdmi_stream.audio_device | Voreinstellung des Players | Das Audioausgabegerät oder none für ein Bild ohne Ton. Die Namen der Audiogeräte unterscheiden sich von Board zu Board; ein Wert, der von einem anderen Gerät kopiert wurde, ist der übliche Grund, warum der Player nicht startet. |
Lizenz
Section titled “Lizenz”Der Block licence unter global legt fest, wie sich das Gerät gegenüber dem Lizenzserver ausweist. Adresse und Signaturschlüssel des Servers sind in das Release eingebaut und keine Einstellungen. server_url oder token_public_key in diesem Block werden akzeptiert, aber ignoriert, und beim Start wird eine entsprechende Warnung protokolliert.
| Schlüssel | Voreinstellung | Zweck |
|---|---|---|
| licence.identity_dir | /config/identity | Wo das Gerät seinen Geräteschlüssel, sein Zertifikat und den letzten Lizenzzustand ablegt. Dies muss auf persistentem Speicher liegen. Andernfalls erzeugt jedes Neuanlegen des Containers eine neue Identität, die der Lizenzserver als neues, nicht freigegebenes Gerät sieht, und das Streaming bleibt blockiert, bis es erneut freigegeben wird. |
| licence.enroll_key | leer | Optionaler, vorab vereinbarter Registrierungsschlüssel, der mit einer Charge von Geräten geliefert wird. Behandeln Sie ihn wie ein Passwort: Er wird nie in die Logs geschrieben, ist aber für jeden lesbar, der diese Datei lesen kann. |
| licence.site_ref | leer | Eine Freitext-Referenz, etwa eine Auftrags- oder Standortnummer, die bei der Registrierung mitgesendet wird, damit sich das Gerät bei der Freigabe wiedererkennen lässt. Sie ist ein Hinweis für Menschen, kein Berechtigungsnachweis. |
| licence.agent_version | die laufende Version | Die Softwareversion, die dem Lizenzserver gemeldet wird. Lassen Sie sie ungesetzt. |
Einstellungen pro Sender
Section titled “Einstellungen pro Sender”Jeder Eintrag unter streams ist ein Sender: eine Quelle, ein Ziel, ein Satz Überwachungsregeln.
| Schlüssel | Voreinstellung | Zweck |
|---|---|---|
| Kennung | ||
| id | zugewiesen | Numerische Kennung, eindeutig innerhalb der Datei. Sie wird in API-Pfaden und in channel_ids eines Multiplex verwendet. Kennungen werden nach dem Löschen wiederverwendet; betrachten Sie eine Kennung daher nicht als dauerhaften Verweis für ein externes System. |
| name | erforderlich | Anzeigename. Er ist nicht kosmetisch: Er wird auch zum DVB-Service-Namen in der Senderliste des Fernsehgeräts und zum Label an den exportierten Messwerten dieses Senders. Eine Umbenennung ändert, was Zuschauer sehen und wonach Ihr Dashboard gruppiert. |
| description | leer | Freitext für den Betreiber. Wird nirgendwohin übertragen. |
| epg_id | leer | Die Kennung dieses Senders im XMLTV-Programmführer — die Sender-ID des Guides selbst, typischerweise etwas wie rtl.de. Sie wird auf der EPG-Seite gesetzt und bewirkt, dass eine Guide-Synchronisierung Sendungen für diesen Sender speichert. Leer bedeutet: keine Programmdaten für den Sender. Siehe Programmführer (EPG). |
| managed_by | leer | Wem der Sender gehört. Leer bedeutet, dass ein Betreiber ihn angelegt hat, und er wird von nichts anderem geändert. licence bedeutet, dass der Lizenzserver ihn geliefert hat: Er kann Quelle und Ziel des Senders bei jeder Aktualisierung ersetzen, deshalb lässt die Weboberfläche ihn weder bearbeiten noch löschen. Setzen Sie licence nicht von Hand bei einem Sender, den Sie selbst angelegt haben — die nächste Aktualisierung kann ihn überschreiben. |
| active | true | Ob der Sender überhaupt laufen soll. Ein inaktiver Sender bleibt in der Datei, wird aber nie gestartet. So legen Sie einen Sender still, ohne seine Einstellungen zu verlieren. |
| Quelle | ||
| source.type | hls | Einer von hls, srt, rtmp oder mpegts. mpegts ist ein einfacher Transport Stream, über UDP (udp://group:port) oder HTTP (http(s)://…) — siehe MPEG-TS-Quellen. Der Typ bestimmt mehr als nur den Abruf: Nur HLS hat eine Qualitätsleiter, daher gelten Auflösungsprofile ausschließlich für HLS. |
| source.url | erforderlich | Die URL des Ursprungsservers. Bei HLS sollte das normalerweise die Master-Playlist sein, nicht eine Variante — geben Sie Castmux die Qualitätsleiter und lassen Sie das Auflösungsprofil wählen, damit der Sender es übersteht, wenn der Ursprungsserver seine Stufen umorganisiert. |
| Ziel | ||
| destination.address | erforderlich | IPv4-Ziel. Verwenden Sie für die Verteilung innerhalb eines Gebäudes den administrativ begrenzten Multicast-Bereich 239.0.0.0/8. Unicast wird für Punkt-zu-Punkt-Verbindungen akzeptiert. |
| destination.port | erforderlich | UDP-Zielport. Verschiedene Gruppen dürfen sich einen Port teilen; dieselbe Gruppe mit demselben Port bei zwei Sendern ist ein doppelter Absender und erzeugt auf beiden unansehbare Bilder. |
| Verhalten | ||
| force_always_on | false | Lässt diesen Sender dauerhaft laufen und ignoriert die Zuschauererkennung. Verwenden Sie das für einen Sender, der sofort verfügbar sein muss, oder für einen Sender auf einem DVB-C-Multiplex, wo es ohnehin keine IGMP-Membership zu beobachten gibt. |
| engine | geerbt | Überschreibt default_engine für diesen Sender. Der übliche Grund ist eine Quelle, die die Pass-through-Engine nicht lesen kann, oder ein nachgelagertes Gerät, das auf geremuxtem Ausgang besteht. |
| resolution_profile | leer | Einer von 4k, fullhd, hd, sd, mobile oder leer für die Wahl des Ursprungsservers. Es gewinnt die nächstliegende Höhe, bei Gleichstand die höhere Bitrate — ein Sender, der 480p streamt, wenn niemand 576p anbietet, ist besser als ein Sender, der nicht startet. Die Wahl wird bei jedem Start angewendet und nie in diese Datei zurückgeschrieben. Siehe Auflösungsprofile. |
| Überwachung — nur in der Konfigurationsdatei | ||
| min_output_kbps | 500 | Die Untergrenze, unterhalb derer dieser Sender als nicht erzeugend gilt und neu gestartet wird. Senken Sie sie für Radio und andere reine Audio-Services: Ein Radiosender mit 128 kbps, gemessen an einer für Video bemessenen Schwelle, gilt dauerhaft als stumm und wird in einer Schleife neu gestartet. Nicht in der Weboberfläche verfügbar. |
| pdt_shift_ms | 0 | Neustartschwelle für die Drift von Program Date Time, in Millisekunden: Springt die angegebene Zeitachse der Quelle um mehr als diesen Wert, wird der Sender neu gestartet, statt mit einer defekten Uhr weiterzulaufen. 0 schaltet die Prüfung ab. Das ist die Voreinstellung, weil ein Ursprungsserver, der Zeitstempel berechtigterweise neu setzt, sonst Neustarts verursachen würde. Nicht in der Weboberfläche verfügbar. |
Einstellungen für DVB-C-Multiplexe
Section titled “Einstellungen für DVB-C-Multiplexe”Jeder Eintrag unter dvb_muxes ist ein HF-Träger: eine Reihe von Sendern, zu einem einzigen Transport Stream zusammengefasst und auf das Koaxialnetz moduliert. Wie Sie die HF-Parameter wählen, steht unter DVB-C-Multiplexing.
| Schlüssel | Wert | Zweck |
|---|---|---|
| Kennung | ||
| id | zugewiesen | Numerische Kennung des Multiplex, in API-Pfaden verwendet. |
| name | erforderlich | Bezeichnung des Multiplex für den Betreiber. Wird nicht übertragen. |
| device | Index oder Pfad | Auf welcher Modulator-Hardware dieser Multiplex gesendet wird, je nach eingebauter Karte über Index oder Gerätepfad bezeichnet. Ein Multiplex pro Gerät. |
| HF-Parameter | ||
| frequency | Hz | Mittenfrequenz des Trägers in Hertz, nicht in Megahertz. 474000000, nicht 474. Muss zum Frequenzplan des bestehenden Kabelnetzes im Gebäude passen und darf nicht mit einem dort bereits vorhandenen Träger kollidieren. |
| qam | 16 / 32 / 64 / 128 / 256 | Modulationsordnung. Eine höhere Ordnung überträgt mehr Bitrate in denselben 8 MHz und verträgt weniger Rauschen. Auf intaktem Koaxialkabel im Gebäude ist 256-QAM üblich; gehen Sie herunter, wenn die Verkabelung alt, stark aufgeteilt oder von unbekannter Qualität ist. |
| symbol_rate | ksym/s | Symbolrate des Trägers. Zusammen mit der Modulationsordnung legt sie die gesamte Bitrate fest, die allen Services im Multiplex zur Verfügung steht — sie ist also die Zahl, die entscheidet, wie viele Sender hineinpassen. |
| Signalisierung | ||
| network_id | Ganzzahl | An die Empfänger signalisierte Netzwerkkennung. Halten Sie sie über alle Multiplexe einer Installation hinweg einheitlich, damit die Geräte sie als ein Netzwerk behandeln und nicht als mehrere. |
| ts_id | Ganzzahl | Transport-Stream-Kennung. Muss unter den Multiplexen der Installation eindeutig sein; Duplikate führen dazu, dass Geräte beim Suchlauf eine Senderliste mit einer anderen überschreiben. |
| network_name | Text | An die Empfänger signalisierter Netzwerkname. Diesen Text sieht ein Gast beim Suchlauf; normalerweise ist es der Name des Gebäudes. |
| active | true | Ob der Multiplex gesendet wird. Mit false wird der Träger abgeschaltet; die Fernsehgeräte zeigen dann die gesamte Senderliste als fehlend, nicht nur einen ausgefallenen Sender. |
| Inhalt | ||
| channel_ids | geordnete Liste | Die übertragenen Sender, per id. Die Reihenfolge ist maßgeblich. Die Position in dieser Liste bestimmt den Slot, den dem Service zugewiesenen PID-Block und die Service-Kennung. Ein Umsortieren der Liste gibt den Services daher neue Kennungen, und Fernsehgeräte, die bereits gesucht haben, müssen unter Umständen neu abgestimmt werden, um wieder übereinzustimmen. Hängen Sie neue Sender nach Möglichkeit ans Ende an. |
Sichern und Wiederherstellen
Section titled “Sichern und Wiederherstellen”Sichern Sie das gesamte Konfigurationsverzeichnis, nicht nur config.yaml. Neben der Konfiguration enthält es die Lizenzidentität des Geräts und seine Programmdaten:
| Im Verzeichnis | Was es ist |
|---|---|
| config.yaml | Die auf dieser Seite beschriebene Konfiguration. |
| config.yaml.pre-migration | Die Datei in dem Zustand vor der Änderung durch das letzte Upgrade. Diese stellen Sie wieder her, wenn eine Migration nicht Ihren Vorstellungen entspricht. |
| identity/ | Geräteschlüssel und Zertifikat des Geräts für den Lizenzserver. Gehen sie verloren, erscheint das wiederhergestellte Gerät dem Lizenzserver als neues, nicht freigegebenes Gerät und streamt nicht, bis es erneut freigegeben wird. |
| epg.db | Gespeicherte Programmdaten. Sie lassen sich durch erneutes Synchronisieren der Guide-Quellen neu aufbauen; sie mitzusichern ist also bequem, aber nicht unerlässlich. |
Die Pfade hängen davon ab, auf welcher Seite des Containers Sie sich befinden. Bei der in diesem Handbuch beschriebenen Installation ist das Verzeichnis auf dem Host /opt/castmux/config, und der Container sieht es als /config. Die Konfigurationsdatei ist also aus einer Shell auf dem Gerät /opt/castmux/config/config.yaml und innerhalb des Containers /config/config.yaml. Sicherungen werden vom Host aus erstellt:
# on the appliance (host), as root: the files are owned by rootsudo cp -a /opt/castmux/config /backup/seaview-court-$(date +%F)Das Kopieren bei laufendem Dienst ist normalerweise unproblematisch, weil config.yaml nur beim Speichern einer Einstellung neu geschrieben wird. Speichern Sie während des Kopierens keine Änderungen in der Weboberfläche. Für eine garantiert konsistente Kopie, einschließlich epg.db mitten in einer Guide-Synchronisierung, stoppen Sie zuerst den Container.
Zur Wiederherstellung stoppen Sie den Container, legen das Verzeichnis zurück und starten ihn wieder. Dateien unter einem laufenden Container zu ersetzen funktioniert nicht: Der laufende Dienst schreibt bei der nächsten Änderung seine eigene Kopie von config.yaml über Ihre.
# on the appliance (host)sudo docker stop castmuxsudo rm -rf /opt/castmux/configsudo cp -a /backup/seaview-court-2026-04-11 /opt/castmux/configsudo docker start castmuxMit Docker Compose verwenden Sie stattdessen sudo docker compose stop und sudo docker compose start in /opt/castmux. Wenn Sie ein anderes Host-Verzeichnis eingebunden haben, ersetzen Sie /opt/castmux/config durchgehend durch dieses.
Weil die Datei einfaches YAML ist, dient die config.yaml einer Sicherung auch als Ausgangspunkt für eine zweite Installation: Ändern Sie die Adressen, die Namen und die HF-Parameter, der Rest lässt sich übernehmen. Kopieren Sie dafür nur config.yaml, niemals identity/. Zwei Geräte mit derselben Identität sind für den Lizenzserver dasselbe Gerät. Das ist heute ein manueller Vorgang.
Export und Import mit einem Klick aus der Weboberfläche sowie das Klonen einer Konfiguration über eine Flotte von Installationen sind geplant.