ist es möglich, eine unterschiedlich lange Verzögerung der Metadaten zu erreichen - abhängig vom Elementtyp?
Also zum Beispiel beim Typ “Musik” 30 Sekunden und beim Typ “Station-ID” 5 Sekunden. So könnte man steuern, dass Claims oder sonstige Texte (z.B. mit Hilfe eines Stille-Elementes vom Typ “Station-ID”) sofort bzw. früher angezeigt werden und Titel erst nach einer gewissen Zeit. Mit Bordmitteln scheint es auf den ersten Blick nicht zu gehen.
Aber vielleicht mit einem Trick? Hat jemand eine Idee?
Per Konfiguration nicht, nein.
Ich könnte mir aber vorstellen, das mit einem Script zu realisieren.
Wichtig dabei: Die Verzögerung muss vor dem Start des Elements eingestellt werden. Es müsste also ermittelt werden, welchen Elementtyp das Element hat, das im Status NEXT steht.
Weiterhin befürchte ich, dass das bei Verlinkungen und Containern nicht funktioniert, und beim AUTO-Modus bin ich mir ebenfalls unsicher (bei der Nutzung von zwei Playern gibt es ja ein NEXT).
Okay, jetzt passe ich. Da müssten wir von den Begrifflichkeiten her schon auf eine Schiene kommen.
Ich hatte Martin so verstanden, dass es ihm um den Sendebetrieb geht, und da wäre der Anatzpunkt eben der Encoder. Dort wird ja die Verzögerung eingestellt.
Das würde dann also nicht in der Cartwall greifen?
Das könnte man aber umgehen, indem man die Verzögerung in der Konfiguration generell auf z.B. 0 stellt und in der Playliste (wenn es denn per Script ginge) Typenspezifische Verzögerungen nutzte.
Da müßte ich erstmal selber forschen. Es ist zwar nur ein gutes Jahr her, aber ich kann mich nicht erinnern, sowas jemals hergestellt zu haben. Man wird aal un schläächt.
const
NEWDELAY = 2; // Zu setzende Verzögerung in Sekunden
ENCODERNR = 3; // Nr. der Encoderverbindung (bei 1 beginnend)
var
OldDelay: integer;
procedure OnItemStart(Item: IPlaylistItem; Region: byte; OnAir: boolean; UniqueID: string);
begin
if Item.GetItemType = pitPromo then
begin
OldDelay := IBaseShoutcastEncoderConnection(Encoder.GetConnections.GetItem(ENCODERNR - 1)).GetTitleUpdateDelay;
IBaseShoutcastEncoderConnection(Encoder.GetConnections.GetItem(ENCODERNR - 1)).SetTitleUpdateDelay(NEWDELAY);
EnableTimer((NEWDELAY + 1) * 1000);
end;
end;
procedure OnTimer;
begin
IBaseShoutcastEncoderConnection(Encoder.GetConnections.GetItem(ENCODERNR - 1)).SetTitleUpdateDelay(OldDelay);
DisableTimer;
end;
begin
end.
Soll die Verzögerung individuell einstellbar sein, zum Beispiel durch ein anderes Skript, so kann man die Konstante NEWDELAY durch eine durch SetRuntimeData bestimmte Variable ersetzen.
Zur Erklärung: Das Skript merkt sich, sobald ein Element vom Typ Promo gestartet wird, die eingestellte Verzögerung und setzt dafür die NEWDELAY genannte ein. Anschließend wird die Verzögerungszeit wieder auf die ursprüngliche zurückgesetzt. Das funktioniert natürlich auch für jeden anderen Elementtyp, sofern er im Skript entsprechend eingestellt wird.
Ja, es ist zwar Samstag, aber der BVB spielt erst morgen auswärts in Freiburg und vielleicht hat Torben ja mal Zeit für einen Blick in das ach so geheime…
Dort erfuhren wir am 29.02.2024 das bislang undokumentierte
begin
IBaseShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0)).SetTitleUpdateDelay(0);
end.
Ist schon eine geile Kiste, muss ich sagen.
Vor fast genau sechs Monaten frug™ ich:
Ich würde das gerne mal wieder nach oben holen und auffrischen, denn die Idee der Textänderung im Encoder via Script treibt mich schon eine ganze Zeit um.
@Torben , könntest du bitte noch einmal die Tür zum
öffnen und einen entsprechenden Dreizeiler rausbringen, sofern es das gibt?
Ich habe da so ein paar Ideen rund um SetTitleUpdate, wenn ich nur wüsste was da so alles mit geht und wie.