Hi Torben,
erstmal ein paar Hintergrund Infos:
Wir übertragen in den Metadaten des MP3 streams im Feld ICQ und AIM, Moderatoren ID und Studio ID. Daraus ermittelt die Webseite welches Moderatoren Bild bzw. Studiobild angezeigt wird.
Kann man ja alles wunderbar einstellen, nun das Problem.
Es gibt Off-Air Produktionen, die jeweils Ihre eigene ID haben, ich möchte die über die Automation Zeitgesteuert abfahren. Nur muß sich je nach dem welche Produktion gerade läuft, die ID ändern. Im Momten müsste ich mehrere mAirlist Instanzen laufen lassen oder jedes mal die Konfiguration aufrufen und mAirlist neustarten.
Nun der eigentlich Feature Request: Ich möchte diese Metadaten ändern, während der Encoder verbunden ist.
z.B. per Script was über ein Event abgerufen wird, oder von einem Playlist Element abgerufen wird.
Vielleicht hast Du auch noch eine andere Idee, ich möchte jedenfalls mehrere Instanzen verhindern und mAirlist auch nicht neu starten.
WOW ich bin mal wieder positiv überrascht.
Muß ich die Tastenkombination im Setup Dialog drücken, oder in der normalen mAirlist ansicht?
Würde das auch funktionieren, wenn ich mit einer externen Anwendung die INI Datei modifiziere?
Weil ich will das ja zeitgesteuert machen. Ich würde dann über ein Script mit “ExecuteCommand” aus der commandozeile die 2 Werte in der INI ersetzen.
Dann einmal offAIR schalten und wieder onAIR schalten. Encoder Connect ist mit onAIR schalter verlinkt. Vorher muß ich nur das neuladen der Configuration auslösen, Ctr+Alt+X, da hab ich noch keine Idee, wie ich das automatisch machen soll.
Hi Torben,
hab’s grade auspobiert, klappt leider nicht. Egal wo ich die Tastenkombination drücke. Version 3.1 Build 705 (das neueste wsa ich gefunden habe)
Die geänderten Metadaten werden nicht übernommen.
Ich hab auch extra bis zum Titelupdate gewartet, auch das hilft nicht.
Ich hab den Fehler inzwischen gefunden.
Strg+Alt+x ist bei mir belegt zum abfeuern eines CART players. Daher funktioniert die Tastenkombination nicht um die Systemsteuerung aufzurufen.
Bleibt noch die Frage offen, wie ich das automatisch hin bekomme. Kann ich das neu einlesen der Settings irgendwie per Event/ Script steuern?
So, jetzt ist Build 708 aktuell, und dort kann man per Scripts auf den Encoder zugreifen. Ausgangspunkt ist die Funktion “Encoder”, die ein Interface vom Typ IBassStreamingEncoder zurückliefert. Dort kann man mittels GetConnections auf die einzelnen eingerichteten Verbindungen zugreifen, die allerdings in den meisten Fällen vorher noch einem Typecast unterzogen werden müssen, in IShoutcastEncoderConnection oder IIcecastEncoderConnection, je nachdem. Hier ist ein Beispiel, wie man mehrere Parameter von der ersten Verbindung - in diesem Falle Shoutcast - ändert:
var
conn: IShoutcastEncoderConnection;
begin
conn := IShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0));
conn.BeginUpdate;
try
conn.SetURL('http://www.mAirList.com');
conn.SetICQ('12345');
finally
conn.EndUpdate;
end;
end
Um die Metadaten (ICQ etc.) auf dem Server zu ändern, muss die Verbindung unterbrochen und neu hergestellt werden (jedenfalls ist mir nichts Gegenteiliges bekannt). Der Encoder tut das automatisch, sobald man einen Parameter ändert. Möchte man mehrere Parameter gleichzeitig ändern, sollte man wie oben ein “BeginUpdate” und “EndUpdate” um die Aufrufe herum setzen, am besten noch in “try…finally” gekapselt - dadurch wird erreicht, dass die Verbindung nur einmalig unterbrochen wird und nicht nach jeder einzelnen Parameteränderung.
Dann will ich meine frühere Frage nochmal stellen:
“Kann ich den Live-Button des encoder meters über ein notification script setzen? (OnLoad)”
Habe die Script Referenz zwar schon mehrmals durchgefilzt aber da ist nix was jezt offensichtlich drauf hinweist. (Zumindest nicht für mein Verständnis ;D )
(Denk dran, der On-Air-Status ist ein mAirList-weiter Wert, der nicht direkt etwas mit dem Encoder zu tun hat - der Encoder überwacht ihn nur und verbindet sich entsprechend, wenn die Option aktiviert ist.)
Hallo Torben,
ich habe Dein Script Beispiel genau so eingefügt, als mls gespeichert und auf ein Audio Element als Aktion bei Start gelegt.
Da bekomme ich beim schließen des Dialog schon den Fehler:
Overflow while converting variant of type (LongWord) into type (integer). Der Bug Report als Anhang.
Hab dann noch mal SetURL in SetAIM geändert, aber das ändert auch nix.
Ähm, was ich oben schrieb war natürlich nur eine Zeile aus einem Script. Damit es ein ganzes Script wird, musst du noch “begin” davor und “end.” dahinter schreiben.
Sorry, hab mich nicht klar ausgedrückt. Ich meine dieses Script hier:
var
conn: IShoutcastEncoderConnection;
begin
conn := IShoutcastEncoderConnection(Encoder.GetConnections.GetItem(0));
conn.BeginUpdate;
try
conn.SetURL('http://www.mAirList.com');
conn.SetICQ('12345');
finally
conn.EndUpdate;
end;
end
Och nööö, da hätte ich auch selber drauf kommen können. Da kann man mal wieder sehen, wie planlos ich in sachen Programierung bin.
Werd’s heute abend testen und hier berichten.
Danke schonmal.