[gelöst] Metadaten-Verzögerung abhängig von Elementtyp

Hallo allerseits,

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?

Schöne Grüße
Martin

1 Like

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).

Im ASSIST jedoch sehe ich Chancen auf ein Script.

Kann man denn mittels Skript direkt auf den Logger zugreifen? Wenn ja, wie?

Du meintest vermutlich den Encoder. :slightly_smiling_face:

begin
  IBaseShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0)).SetTitleUpdateDelay(0);
end.

(nicht dokumentiert, aus dem mAirList-Forschungslabor)

1 Like

Nein, ich meinte schon den Logger. Aber wenn es da (auch) geht …

Und ich meinte natürlich

:wink:

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.

@uli.mairlist : Alles gut. Ich weiß, wo ich ansetzen muß.

Ja, das hast Du richtig verstanden

Metadaten-Verz

Ihr Lieben,

es funktioniert. Vielen Dank!!

1 Like

Ich möchte das Thema mal wieder aufwärmen, und das gleich an zwei Ecken.

Zum einen @Tondose:
Magst du uns an der Scriptlösung teilhaben lassen oder müsste man dich dafür einzeln anbetteln? :sunglasses:

Zum anderen @Torben:
Kann SetTitleUpdate auch den Text “Wenn kein Element spielt” im laufenden Betrieb ändern?
Wenn nein, ginge das anders und: Wie?

Im Background Script Template.mls ist das nicht dokumentiert, denn da sind die procedures zu finden…

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.

  1. Februar 2024, 19 Uhr 38:

:face_with_monocle:
Fröhliches forschen!

(Hoffentlich muss ich jetzt nicht erst ein Schaltjahr abwarten)

Guggemaa:

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.

1 Like

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.

1 Like

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.

Vielen Dank!