Simulcast Replacer¶
Die Simulcast Replacer Technologie ermöglicht es Hörerinnen und Hörern bei ihrem Lieblings-Radioprogramm aus unterschiedlichen Musikfarben zu wählen.
Während alle die gleiche Sendung hören, läuft beim einen ein aktueller Hit, gleichzeitig beim Nachbarn aber ein Titel aus den 80ern und bei Freunden ein Rock-Hit.
Das Simulcast Replacer Modul tauscht in Echtzeit im Liveprogramm (Simulcast) Musiktitel aus. Dabei bleiben alle redaktionellen Inhalte wie Beiträge, Moderationen, Interviews, Nachrichten, Wetter, Service erhalten. So entstehen aus einem Radio-Vollprogramm mehrere musikalische Varianten mit den gleichen Wort-Inhalten.
Der Simulcast Replacer ist in den Radio Creator integriert. Sie können das Regelwerk für die Ersatz-Titel verwalten und eigene Verpackungselemente für den neuen Kanal hochladen.
Sendeplan-Signale¶
Das Sendesystem signalisiert jeden Start und jeden Stopp eines Audio-Elements an den Replacer. Sobald eine Stelle im Sendeplan erreicht ist, an dem ein Replacement sinnvoll und möglich ist, beginnt der Replacer seine Arbeit.
Die Signalisierung erfolgt über den Aufruf einer URL der Replacer-API. Drei Parameter müssen übermittelt werden:
send_id: Die eindeutige ID die im Sendeplan dem Start des Elements zugeordnet ist. Etwa 81655954446880
isplaying: Dieses Flag gibt an, ob das Audio gerade startet oder stoppt. Werte: true|false
api_key: Der Zugangs-Schlüssel zur API.
Aufbau der Request URL¶
replacer-<station_key>.radio-creator.com:5008/api/signal?send_id=<send_id>&isplaying=<true|false>&api_key=<api_key>
Beispiel:
replacer-ffh.radio-creator.com:5008/api/signal?send_id=81655954446880&isplaying=true&api_key=12345678-1234-5678-1234-123456789012
Das Einrichten der Signalisierung für das Sendesystem Zenon ist im Artikel Zenon Signalisierung genau beschrieben.
Replacer-Signale¶
Umgekehrt kann der Replacer die Start/Stopp-Events eines jeden Audio-Elements als HTTP-GET-Request oder HTTP-POST-Request an eine API bei Ihnen signalisieren. Mehrere verschiedene APIs können angesteuert werden und die gesendeten Events können pro API gefiltert und konfiguriert werden.
Der Replacer berücksichtigt dabei das gerade herrschende Delay, so dass Sie etwa synchrone Now Playing Informationen erhalten oder Werbe-Inserts triggern können.
Folgende Parameter kann der Replacer signalisieren:
send_time: Start/Stopp-Zeitpunkt in ms.
timestamp: Start/Stopp-Zeitpunkt in s. (Float)
utc_str: UTC Startzeitpunkt als String YYYY-MM-DDTHH:MM:SS - Dieses Format nimmt der Radioplayer-Ingest entgegen. (String)
total_delay: Gesamtes Delay vom Replacer-Eingang zum Ausgang.
channel_key: Kanal-Schlüssel. Zum Beispiel „plus80er“
isplaying: true | false. Gibt an, ob ein Element startet (true) oder stoppt (false).
type_name: „ad“, „song“, „dropper“…
planner_id: ID aus der Musik-Planung.
audio_id: ID aus dem Sendeplan.
next_audio_id: Die audio_id des folgenden Titels.
replaced: true | false. Gibt an, ob der Replacer den Titel ersetzt hat.
original_playlist: true | false. Gibt an, ob das ein Titel aus der ursprünglichen Playlist/Sendeplan war.
artist: Interpret.
title: Song-Titel.
artist_title: Interpret - Titel (Kombi-Feld zur Belieferung von icecast)
length: Länge des Elements in ms. (Integer)
length_s: Länge des Elements in s. (Integer)
Die Signale werden im Radio Creator Manager konfiguriert. Dazu dient ein JSON-Ausdruck, der die Ziel-URL <url> definiert, die Bedingungen <conditions> unter denen der HTTP-Request ausgeführt wird, und die Daten <payload>, die übermittelt werden sollen.
<payload> definiert Parameter, die an die URL angehängt werden. Bei einem POST-Request können auch Formular-Felder (body) an die API geschickt werden. Dazu dient die Kofiguration im optionalen Feld data.
Weitere Einstell-Möglichkeiten:
mode: GET oder POST Request: get|post. Wird die Einstellung weggelassen, erfolgt ein GET-Request.
signal_delay: Jeder API-Aufruf kann um den individuellen Wert signal_delay in Millisekunden verzögert werden. Dazu muss noch der Wert r_additional_signal_delay aus den station_settings hinzugerechnet werden, der für alle APIs gilt.
send_time_delay: Damit wird den Werten send_time, timestamp und utc_str ein Offset in ms hinzugefügt. Das Signal wird dadurch nicht verzögert. Die genannten Zeitwerte werden nur erhöht. (Radioplayer-Ingest)
additional_params: Damit können weitere, feststehende URL-Parameter an die API übergeben werden.
additional_data: Damit können weitere, feststehende Datenfelder bei einem Post-Request als Formular-Daten (body) an die API übergeben werden.
[
{
"url": "<url>",
"conditions": {<conditions>},
"payload": {<payload>},
"data": {<data>},
"mode": "get|post",
"send_time_delay": <send_time_delay>,
"additional_params": {<additional_params>},
"additional_data": {<additional_data>}
}
]
Beispiel: Beim Start von Werbespots, den channel_key und die audio_id an eine API senden
[
{
"url": "http://0.0.0.1/instreamads/trigger.php",
"conditions": {"isplaying": [true], "type_name": ["ad"]},
"payload": {"station": "channel_key", "numrotation": "audio_id"}
}
]
Diese Konfiguration erzeugt zum Beispiel den folgenden HTTP-GET-Request:
http://0.0.0.1/instreamads/trigger.php?station=plus80er&numrotation=12345
Radioplayer-Ingest V1¶
Die folgende Konfiguration dient dazu, Now Playing Informationen an den Radioplayer-Ingest zu schicken. Der Radioplayer erwartet einen POST Request und die Startzeit in UTC als String. Hier wurde noch ein send_time_delay von 30 Sekunden hinzugefügt, um das Delay der Streaming-Plattform zu berücksichtigen.
[
{
"url": "https://<user>:<password>@ingest.radioplayer.de/ingestor/metadata/v1/np/",
"conditions": {
"isplaying": [
true
],
"type_name": [
"song"
]
},
"payload": {
"artist": "artist",
"title": "title",
"duration": "length_s",
"startTime": "utc_str"
},
"send_time_delay": 30000,
"mode": "post",
"additional_params": {
"rpId": "<rpId>"
}
}
]
Radioplayer-Ingest V2¶
Das folgende Beispiel zeigt die Konfiguration für die Radioplayer Worldwide API V2. Es muss der api_key angegeben werden. Die rpuid setzt sich aus dem dreistelligen Ländercode und der bisherigen rpId zusammen.
[
{
"url": "https://<user>:<api_key>@np-ingest.radioplayer.cloud/",
"conditions": {
"isplaying": [
true
],
"type_name": [
"song"
]
},
"payload": {
"artist": "artist",
"title": "title",
"duration": "length_s",
"startTime": "utc_str"
},
"send_time_delay": 30000,
"mode": "post",
"additional_params": {
"rpuid": "<rpuid>"
}
}
]
Pause-API¶
Bei Sonderprogrammen kann es wünschenswert sein, dass der Replacer eine Zeitlang nicht ersetzt und keine Titel tauscht. Etwa bei einem Hit-Countdown. Der Replacer kann dazu in den Pause-Modus versetzt werden. In dieser Zeit wird das Simulcast-Signal einfach weitergeleitet. Die Pause gilt für alle Kanäle auf dem Replacer. Es kann also nicht nur für einen einzelnen Kanal pausiert werden.
Der Pause-Modus wird durch den Aufruf einer URL der Replacer-API ausgelöst. Zwei Parameter müssen übermittelt werden:
sleep_duration: Der Pause-Zeitraum in Minuten. Etwa 60 für eine Stunde Pause.
api_key: Der Zugangs-Schlüssel zur API.
Aufbau der Pause URL¶
replacer-<station_key>.radio-creator.com:5008/api/pause?sleep_duration=<sleep_duration>&api_key=<api_key>
Beispiel:
replacer-ffh.radio-creator.com:5008/api/pause?sleep_duration=60&api_key=12345678-1234-5678-1234-123456789012
Pause beenden: Resume¶
Nach der eingestellten Zeit beginnt der Replacer von alleine wieder mit dem Ersetzen. Die Pausezeit kann durch erneutes Aufrufen der Pause-API verlängert oder verkürzt werden. Es gilt immer die Pause-Zeit in Minuten ab dem Aufruf der API. Die Pause kann aber auch sofort mit dem Resume-Befehl beendet werden. Dieser API-Endpoint benötigt nur den api_key als Parameter:
replacer-<station_key>.radio-creator.com:5008/api/resume?api_key=<api_key>
Bemerkung
Dieser Bereich des Manuals ist noch in der Entstehung.