Verzögerung bei Mediacenter Szenen

Alles was nicht direkt mit dem normalen Verhalten des PC_DIMMERs zu tun hat
Antworten
Felix
Beiträge: 2
Registriert: 13.03.2012, 12:36

Verzögerung bei Mediacenter Szenen

Beitrag von Felix »

Guten Tag!

Ich verwende PC Dimmer, um eine Art "dynamische Ausstellung" zu steuern. (Es handelt sich um einen "Ostergarten", eine Darstellung der Ostergeschichte in einer Kirche.) Ein "Reiseleiter" führt dabei eine Gruppe von Besuchern durch verschiedene Räume und betätigt mindestens am Ein- und Ausgang eines Raumes, manchmal auch noch zusätzlich, normale Lichtschalter (Taster). Diese Taster lösen über ein modifiziertes Midi Keyboard ein Note On Event aus, das vom PC Dimmer interpretiert wird. Über ein DMX4ALL DMX 512 Interface an der RS232 Schnittstelle wird ein Dimmer gesteuert, der das Licht in den Räumen ein- und ausschaltet bzw. Effekte aktiviert. Das funktioniert alles ganz prima soweit!

Parallel zum Licht sollen auch Geräuscheffekte und in einem Raum ein Video abgespielt werden. Dazu gibt es diverse PCs (6 Stück), auf denen jeweils der Mediacenter Server vom PC Dimmer läuft. Bei Bedarf aktiviert ein Taster dann eine Mediacenter Szene bzw. eine Sequenz von diesen (Load, Set Volume, Play). Genau diese Automatisierung funktioniert auch prinzipiell. D.h. alle Rechner können die Dateien laden und abspielen. Allerdings gibt es zwischen dem Start des Szene (Audiodatei abspielen) und dem Zeitpunkt, an dem das Geräusch wirklich hörbar ist, eine Verzögerung von ca 15 Sekunden. Zumindest beim ersten Abspielen. Wird dann innerhalb einer kuzen Zeit von vielleicht einer Minute erneut die "Audiodatei Abspielen" Szene aktiviert, dann startet das Abspielen sofort. Wird zwischendurch ein anderer Mediacenter Server benutzt, um z.B. dort Audiodateien zu laden, so ist das Abspielen auf dem Ersten wieder verzögert. Es scheint sporadisch auch Fälle zu geben, in denen das Abspielen fast unmittelbar erfolgt, aber in der Regel gibt es diese lange Verzögerung. Kennt jemand das Problem, einen Workaround oder eine Lösung?

Die Dateien, die abgespielt werden, sind klein, eine z.B. 48kB! Interaktiv mit dem Windows Mediaplayer werden diese Dateien "sofort" gespielt. Es sind zum Teil mp3, zum Teil WAV und zum Teil Video Dateien, das macht keinen Unterschied. Die Rechner sind schon älter nur mit recht langsamen Celeron Prozessoren ausgestattet, aber das Video spielt und lokal geht alles schnell. Sämtliche Energiesparoptionen sind deaktiviert. Die Rechner stehen nebeneinander und sind mit kurzen Kabeln über einen Switch verbunden - Netzwerkprobleme sind unwahrscheinlich und wurden beim Remote Desktopzugriff nicht beobachtet.

Ich vermute, dass die Verwendung einer "großen" Anzahl von Mediacenter Servern eher ungewöhnlich ist!? Wir verwenden einen PC pro Satz von Lautsprechern, die jeweils in die Räume eingebaut sind. Da die Geräusche nur in dem jeweiligen Raum zu hören sein sollen, schien ein PC pro Raum eine gute Lösung.

Hält der PC Dimmer die Verbindung zu den Mediaservern, oder wird die jedes Mal hergestellt? Ist das Wechseln des Servers ein Problem, weil dann die alte Verbindung runter und die neue hochgezogen wird? Kann man die Verzögerung durch geschicktes Sequenzen der Aktionen "verbergen"? Wir hatten mit dem Abspielen von "Stille" zum Vorbereiten experimentiert, aber das löste das Problem nicht, das anscheinend das Laden der nächsten (richtigen) Datei wieder eine Verzögerung bedingte. Könnten Windows Socketoptionen helfen (TCP Session timeout?). Ich habe (leider?) keine Delphi Entwicklungsumgebung und kann deshalb eher nur mit Aufwand den Quellcode ansehen. Ich bin eher so auf Java und C++ :-)

Mit freundlichen Grüßen und der Hoffnung auf sachdienliche Hinweise

Felix
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Christian »

Hallo,

wie schon richtig vermutet, ist im PC_DIMMER lediglich ein TCP-Client implementiert, welcher zum jeweils aktuellen Server die Verbindung aufbaut. Dieser Verbindungsaufbau dauert bei Windows-Netzen immer etwas. Steht die Verbindung einmal, kann sehr schnell gearbeitet werden. Wird nun eine Szene für einen anderen Computer gestartet, wird zunächst die TCP-Verbindung getrennt, die neue zum anderen Computer etabliert und danach das Kommando gesendet.

Ich hätte da auf anhieb keine Lösung parat. Würde ich verschiedene Clients auf Seiten des PC_DIMMERs aufmachen, müsste man immer die Portnummern nachkonfigurieren, da an jedem Computer nur jeweils ein Port der selben Nummer offen sein kann.

Man kann das Problem aber ganz anders lösen, indem man die Steuerungsinfos an alle Netzwerkcomputer gleichzeitig sendet (Broadcasting). Dafür müsste ich aber einiges ändern. Jeder Empfänger-PC würde dann auch die Steuerungsinfos für die anderen Computer empfangen und müsste dann die richtigen Pakete für seine eigene IP herausfiltern. Momentan habe ich für solch eine Anpassung aber kaum Zeit, sodass daraus kurzfristig nichts werden dürfte - sorry.

Eine andere Lösung fällt mir jetzt spontan nicht ein.

viele Grüße,
Christian
Felix
Beiträge: 2
Registriert: 13.03.2012, 12:36

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Felix »

Hallo Christian,

Danke für die schnelle Antwort! Wenn der PC Dimmer (Hauptprogramm) viele Verbindungen zu Mediacenter Servern aufbaut, dann kann der Serverport auf den Servern doch immer gleich sein, und wird ja in der Szene konfiguriert. Der lokale Port der TCP Clientverbindung wird ja klassischerweise nicht fest konfiguriert sondern dynamsich vergeben, da dieser Port ja nicht "well known" sein muss. Zumindest kenne ich das so. Aber wer viele Verbindungen aufbaut muss natürlich auch mehrere Verbindungen schließen ... Ein Broadcast würde ich eher nicht verwenden. Wenn vielleicht ein Multicast. Wir werden versuchen "organisatorisch" darum herumzuarbeiten, d.h. den Taster einfach "früh" genug zu betätigen. Mal sehen. Vielleicht werfe ich oder ein Kollege auch noch einen Blick in den Code, aber ich befürchte, mein Pascal ist etwas zu eingerostet für ein schnellen Fix.

Ich könnte mir vorstellen, dass man die zu verwendenden Mediacenter Server relativ gloabal konfiguriert, so wie das DMX Interface o.ä. Unter Umständen könnte man laufende Server auch discovern. In den Szenen könnte man dann aus einer Liste von Mediacenter Servern einen auswählen und auch gleich dort sowie in einer Statusansicht sehen, welcher Server online ist, und was er gerade tut.

BTW: Super Programm! Danke!

Grüße

felix

P.S.: aber warum in Delphi. ICH finde doch Java viel besser ;-)
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Christian »

P.S.: aber warum in Delphi. ICH finde doch Java viel besser ;-)
Ich hab zwar derzeit keine Zeit zum proggen, aber wenn ihr fit im Programmieren seid, könnt ihr ein Plugin für den PC_DIMMER schreiben, welches das MediaCenter etwas performanter anspricht. Das Übertragungsprotokoll kann ich euch zuschicken - so kompliziert ist das alles nicht :car:

Man kann per Plugin sehr einfach eigene Szenen definieren, sodass man relativ schnell zum Ergebnis kommen sollte. Meine Netzwerkkenntnisse sind nicht so riesig, dass ich da auf die Schnelle was deutlich performanteres hinbekommen könnte.

beste Grüße,
Christian
Dirk
Beiträge: 4
Registriert: 13.03.2012, 14:13

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Dirk »

Hallo Christian,

ich gehöre auch zu der Truppe um Felix und den Ostergarten, bin mit Delphi ein wenig vertraut und habe nach den Quelltexten geschaut.
Macht es Sinn, die Version von Sourceforge anzuschauen?

Viele Grüße,
Dirk

P.S. mit Java verbraucht man die meiste Zeit damit, seine IDE zu konfigurieren!
Benutzeravatar
Christian
PC_DIMMER-Entwickler
Beiträge: 1856
Registriert: 12.11.2007, 09:30
Wohnort: Knw.-Remsfeld
Kontaktdaten:

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Christian »

Hi,

leider habe ich die aktuelle Version vom Quellcode noch nicht hochgeladen. Ich will zusehen, dass ich heute Abend nach der Arbeit den Code zusammenpacke und dann morgen früh auf Sourceforge.net-Hochlade. Dann könnt ihr mit den aktuellen Sources arbeiten. Da ich aber sehr viele Drittanbieter-Komponenten (alle frei verfügbar) verwende, wird es aber bei euch ne Weile dauern, diese in der IDE zu konfigurieren. Sollte aber nicht so lange dauern, wie bei Java :lol:

Deshalb wäre die Entwicklung eines Plugins eigentlich die schnellere Wahl. Dann braucht man sich auch nicht um das Hauptprogramm kümmern.


viele Grüße,
Christian
Dirk
Beiträge: 4
Registriert: 13.03.2012, 14:13

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Dirk »

Das mit dem Plugin ist auch gut. Hast du ein Beispiel für mich, an dem ich mir das ansehen kann?

Grüße,
Dirk
Benutzeravatar
Stephan Cordes
< PC_DIMMER >
Beiträge: 187
Registriert: 28.08.2009, 14:23
Wohnort: 34281 Gudensberg
Kontaktdaten:

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Stephan Cordes »

Eine Art Anleitung, wie man Plugins für PC_Dimmer programmieren kann, inkl. Demos, wäre hilfreich.
Sicher gibt es noch mehr Projekte.

Edit:
Oh, gibt es schon?
Peinlich ... :oops:
Zuletzt geändert von Stephan Cordes am 15.03.2012, 12:13, insgesamt 1-mal geändert.
Dirk
Beiträge: 4
Registriert: 13.03.2012, 14:13

Re: Verzögerung bei Mediacenter Szenen

Beitrag von Dirk »

Sorry Christian,
dass du meine Frage noch lesen musstest (und dies hier auch).
Ist ja alles vorhanden. Gerade habe ich die Web-Seiten mit den Beispielen gefunden. Dein Engagement bin ich wohl nicht gewöhnt :D
Viele Grüße,
Dirk
Dirk
Beiträge: 4
Registriert: 13.03.2012, 14:13

[gelöst] Re: Verzögerung bei Mediacenter Szenen

Beitrag von Dirk »

Die Verzögerungen gehen m.E. auf ein Timeout beim reverse dns lookup der IPs zurück.
Auf den Rechnern war ein Standardgateway und DNS-Server eingetragen, der aber nicht erreicht wird: Alle Rechner sind aus einem Image geklont und ich hatte nur die IP geändert, die Ausstellung ist aber "offline" und hat kein Gateway. Hatte nicht daran gedacht, dass das ein Problem sein könnte, da die MediaCenter Server über die IP angesprochen werden. :gruebel:

Mit anderen Worten, PCD hat gar keine Probleme...

Grüße,
Dirk
Antworten