|
|
@@ -11,6 +11,35 @@ Dieses Dokument beschreibt das Zielbild. Der aktuelle Ist-Stand in Phase 1 ist: |
|
|
## Ziel |
|
|
## Ziel |
|
|
`fm-rds-tx` soll mittelfristig mehrere Audio-Ingest-Pfade sauber unterstützen, ohne den bestehenden `ffmpeg`-Pfad kaputt zu machen. |
|
|
`fm-rds-tx` soll mittelfristig mehrere Audio-Ingest-Pfade sauber unterstützen, ohne den bestehenden `ffmpeg`-Pfad kaputt zu machen. |
|
|
|
|
|
|
|
|
|
|
|
## Einordnung des Phase-1-Ergebnisses |
|
|
|
|
|
Mit Phase 1 wurde die Audio-Zuführung erstmals als eigenständiges Subsystem vor den bestehenden TX-/DSP-Pfad gezogen. |
|
|
|
|
|
Die bestehende Sendekette bleibt weitgehend unangetastet; neue Ingest-Quellen laufen stattdessen über eine gemeinsame Runtime-Schicht, die Lifecycle, Formatwandlung und Basistelemetrie bündelt und weiterhin in den bestehenden `audio.StreamSource` einspeist. |
|
|
|
|
|
|
|
|
|
|
|
Konkret umfasst dieser Stand: |
|
|
|
|
|
- gemeinsame Ingest-Runtime |
|
|
|
|
|
- zentrale Source-Auswahl für `stdin`, `http-raw` und `icecast` |
|
|
|
|
|
- Umstellung von `/audio/stream` auf den Ingest-Pfad |
|
|
|
|
|
- Runtime-/Source-Stats im Control-Plane-Output |
|
|
|
|
|
- Icecast-Adapter mit Reconnect-/Decoder-Policy |
|
|
|
|
|
- Decoder-Layer mit explizitem Fallback-Pfad |
|
|
|
|
|
|
|
|
|
|
|
Wichtig ist die ehrliche Abgrenzung: |
|
|
|
|
|
Die Decoder-Architektur ist vorhanden, aber native Decoder für `mp3`, `oggvorbis` und `aac` sind aktuell noch Platzhalter. Praktisch funktionsfähig ist der Icecast-Pfad derzeit vor allem über den expliziten `ffmpeg`-Fallback. Das ist für Phase 1 akzeptabel, weil die strukturelle Trennung jetzt sauber steht und spätere native Decoder nicht mehr die Runtime-Architektur verbiegen müssen. |
|
|
|
|
|
|
|
|
|
|
|
## Warum das ein sinnvoller Abschluss von Phase 1 ist |
|
|
|
|
|
Phase 1 hatte nicht das Ziel, sämtliche Transport- und Codecvarianten produktionsreif abzuschliessen. Ziel war vielmehr, die bisher punktuellen Audio-Eingänge in ein gemeinsames, erweiterbares Modell zu überführen. Genau das ist erreicht: |
|
|
|
|
|
- die TX-Schicht kennt keine Source-Familien mehr direkt |
|
|
|
|
|
- HTTP- und CLI-Ingest hängen nicht mehr als Sonderfälle im Startcode |
|
|
|
|
|
- Icecast ist als echter Source-Typ modelliert |
|
|
|
|
|
- Decoder-Fallback ist explizit statt implizit |
|
|
|
|
|
- die Control Plane kann Ingest-Zustand sichtbar machen |
|
|
|
|
|
|
|
|
|
|
|
## Nächster sinnvoller Schritt |
|
|
|
|
|
Der nächste Block ist nicht noch mehr Runtime-Umbau, sondern gezielte inhaltliche Vervollständigung: |
|
|
|
|
|
1. echte native Decoder für MP3 und Ogg/Vorbis |
|
|
|
|
|
2. danach AAC/ADTS, sofern Bibliothekslage und Streaming-Verhalten sauber genug sind |
|
|
|
|
|
3. erst danach zusätzliche Familien wie AoIP/SRT in die gemeinsame Runtime ziehen |
|
|
|
|
|
|
|
|
Die strategische Richtung ist daher **nicht** „ffmpeg sofort ersetzen“, sondern: |
|
|
Die strategische Richtung ist daher **nicht** „ffmpeg sofort ersetzen“, sondern: |
|
|
|
|
|
|
|
|
- bestehenden `ffmpeg`-Pfad als universellen Fallback behalten |
|
|
- bestehenden `ffmpeg`-Pfad als universellen Fallback behalten |
|
|
|