Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi 25 Screenshots pro Sekunde (https://www.delphipraxis.net/40890-25-screenshots-pro-sekunde.html)

mschaefer 23. Feb 2005 11:37

Re: 25 Screenshots pro Sekunde
 
Moin, moin

also Bildübertragung über Netz ist wohl das eigentliche Thema.
Ziel soll hier wohl sein, eine möglichst ähnliche Darstellung zum überwachten Rechner zu bekommen.

Unter TurboPascal konnte man direkt auf Vidooram zugreifen. Ähnlich wird hier der Weg auch sein
(Das Thema Treiberprogrammierung hatten wir aber schonmal). Letztlich wird man das letzte Ramabbild
im Rechner halten und die Differenz zum akutellen ermitteln. Jetzt muß man entscheiden ob es günstiger
ist, das Differenzbild oder das neue Vollbild zu komprimieren (Heuristik). Das Komprimat wird
dann verschickt. Das dürften wohl wesentlich weniger Daten sein als die 25 Einzelbilder. Wenn keine
Änderungen am Quellbildschirm gemacht werden, dann wird eben nichts übertragen. Altes Bild bleibt.
Festplatte ist übrigens nicht relevant, wenn es nur eine Überwachung oder Fernwartung ohne Speichern sein soll, wie bei vnc. Und das läuft bei Farbreduktion klasse, sogar noch mit ISDN über Internet. Das sowas nicht im Netz zum laufen zu bringen ist, da glaube ich nicht dran. Auch Pascal ist eigentlich flott genug dafür. Die Direktspeicherzugriffe und die effiziente Komprimierung sind da ein markantes Problem.

// Martin

elliot2extreme 23. Feb 2005 12:39

Re: 25 Screenshots pro Sekunde
 
Hallo zusammen,

es gab mal ein Fernwartungsprogramm, welches in Delphi entwickelt wurde. Von diesem wurde auch der Quellcode veröffentlicht. Vielleicht kann dies bei der Lösung des Problems behilflich sein.

Webseite des Autors: www.netcontrolme.de hier gibt es auch den Sourcecode.

Gruß

Neutral General 23. Feb 2005 13:27

Re: 25 Screenshots pro Sekunde
 
Ich hab selbst mal sowas gemacht und ich kann nur davon abraten :mrgreen:
Nach etwa spätestens 10-20 sek ist ein WIRKLICH GUTER PC in den Knien.
Jedenfalls wars bei mir so. Und dann noch übers Netzwerk......
Naja ich weis nicht ob das überhaupt möglich ist oder ob ich einfach nur wie immer vergessen hab Sachen freizugeben, die dann den Arbeitsspeicher zugemüllt haben ^^

Tubos 23. Feb 2005 17:22

Re: 25 Screenshots pro Sekunde
 
Zitat:

Nach etwa spätestens 10-20 sek ist ein WIRKLICH GUTER PC in den Knien.
Warum nach der Zeit??

Zitat:

Naja ich weis nicht ob das überhaupt möglich ist oder ob ich einfach nur wie immer vergessen hab Sachen freizugeben, die dann den Arbeitsspeicher zugemüllt haben ^^
Daran wird´s liegen ;)

kurtm1 23. Feb 2005 19:04

Re: 25 Screenshots pro Sekunde
 
naja so ein Programm wäre auf jeden Fall vielleicht einmal ein Gemeinschaftsprojekt wert

Binärbaum 23. Feb 2005 21:57

Re: 25 Screenshots pro Sekunde
 
Zitat:

Zitat von kurtm1
naja so ein Programm wäre auf jeden Fall vielleicht einmal ein Gemeinschaftsprojekt wert

Ja, vielleicht wäre das besser.
Allerdings stellt sich anhand der obigen Beiträge die Frage anders:
Wenn solche Überwachungsprogramme auch über ISDN funktionieren, muss man das Programm so einrichten können, dass es nur ein Minimum an Daten verschickt und trotzdem ein möglichst genaues Abbild des zu überwachenden Computers gibt. Die Frage ist, wie geht das?
Dazu müsste man zuerst platzsparende Grafikformate zur Übertragung wählen (z.B. JPG statt BMP). Als nächsten Punkt könnte man, wie schon oft erwähnt, die Framerate runtersetzen. Dabei könnte man soweit gehen, dass man nur ein neues Bild überträgt, wenn sich auf dem Bildschirm auch wirklich etwas verändert hat.
Man könnte es auch auf die Spitze treiben und selbst bei Veränderung des Bilschirms nur die Teile des Bildschirmscreenshots übertragen, die auch verändert wurden. Allerdings dürften das ohne Komprimierung in den meisten Fällen auch noch zu viele Daten für eine ISDN-Verbindung sein. Deshalb könnte man auch einen abgeänderten Ansatz für die Grafikübertragung verwenden: statt die Grafiken als Pixelgrafiken zu übertragen, könnte man auch auf so eine Art "Pseudo-Vektorgrafik" umsteigen. Dabei werden nicht die neuen Screenshots verschickt, sondern nur solche Anweisungen wie "Zeichne in der oberen rechten Bildschirmecke den Mauszeiger neu" an den entfernten Computer geschickt, der diese Anweisungen dann in seinem Programm ausführt und somit das Bild aktualisiert.
Das hätte mehrere Vorteile: zum einen würde sich das Transfervolumen nochmals stark verringern; und zum anderen würde der Rechenaufwand beser auf beide Rechner verteilt werden und es somit auch möglich, dass das Programm auf langsamen Rechnern noch halbwegs flüssig läuft.
Das sind jetzt nur ein paar Gedanken von mir, und ich habe auch keine Ahnung, wie das in den oben angesprochenen Programmen realisiert wurde. Also sagt mir, wenn ich hier nur Unsinn geschrieben habe, aber vielleicht hilft es dem einen oder anderen weiter.

MfG
Binärbaum

Wheelie 23. Feb 2005 22:20

Re: 25 Screenshots pro Sekunde
 
Zitat:

Zitat von generic
mach dir doch bitte nochmal gedanken über die datenmenge die du bearbeiten willst.

bei einer auflösung von
1280*1024=1310720 Bildpunkte
1310720*4=5242880 (32bit Farbtiefe=4 Byte)
5242880*25fps=131.072.000 Byte/sec

du willst also 131MB pro Sekunde verarbeiten.
ein aktueller PC schaft ca. 2000 mb/s (dual channel)
eine scsi-festplatte ca. 150 MB/s
ein 100MBit Netzwerk aus Erfahrung ca. 7 MB/s.

demnach wirst du deine 131 MB/s auf unter 7 MB/s komprimieren müssen.

Jetzt zu der CPU Power, du willst 131 MB/s aus dem Videopuffer kopieren, Komprimieren und dann noch zur Übertragung aufbereiten.
1 Terraherz Rechner werden erst in 24 Jahren auf den Markt kommen :-(

Zur Farbdefinition reichen immer noch 3 Bytes (RGB): 1280 * 1024 * 3 = 3.932.160
15 FPS reichen denke ich auch völlig aus: 3.932.160 * 15 = 58.982.400

-> unkomprimiert also rund 60 MB/s, da du jedoch auch einen Screenshot dieser Auflösung nicht als Bitmap im Forum posten würdest, fällt das Datenaufkommen durch die Komprimierung jedes einzelnen Frames viel geringer aus. Im 100MBit-Netzwerk dürfte das alles sicherlich auch machbar sein. Trotzdem wäre eine auf tatsächliche Bildveränderungen basierende Lösung viel besser.

Binärbaum 23. Feb 2005 22:28

Re: 25 Screenshots pro Sekunde
 
Zitat:

Zitat von Wheelie
...
Zur Farbdefinition reichen immer noch 3 Bytes (RGB): 1280 * 1024 * 3 = 3.932.160
15 FPS reichen denke ich auch völlig aus: 3.932.160 * 15 = 58.982.400

-> unkomprimiert also rund 60 MB/s, da du jedoch auch einen Screenshot dieser Auflösung nicht als Bitmap im Forum posten würdest, fällt das Datenaufkommen durch die Komprimierung jedes einzelnen Frames viel geringer aus. Im 100MBit-Netzwerk dürfte das alles sicherlich auch machbar sein.

Trotzdem ist das noch zuviel, selbst für ein Netzwerk, bei 100MBit müsste man die rund 60MB auch noch auf 7-8 MB komprimieren. Deshalb ist die Idee mit dem (vollständigen) Screenshot also nicht das Wahre.

Zitat:

Zitat von Wheelie
Trotzdem wäre eine auf tatsächliche Bildveränderungen basierende Lösung viel besser.

Meine Rede :wink:

maynard 23. Feb 2005 23:10

Re: 25 Screenshots pro Sekunde
 
Tach...

Ich hab mir auch mal so ein Capture Tool geschrieben. Ich denke den Screen in einzelne (Rechtecke sind vorzuziehen) Bereichen einzuteilen, daran kommst du nicht vorbei. Je nach Leistungsfähigkeit des CPUs hab ich "Rechteck - Auflösung" eingestellt.

Einfach die die Hashwerte der neuen Bildbereiche mit den Werten des Alten abgleichen, die entsprechenden Teile senden und das neue Bild als altes Bild zwischenspeichern. Is kein Hexenwerk. Die Idee wie Binärbaum mir den "Pseudovektorgrafiken" hatte ich auch, wusste aber noch nicht genau wie ich das gut umsetzen kann.

Also auf meinem damaligen P4c Northwood und einem 100MBit LAN waren 12 - 18 Bilder pro Sekunden eigentlich drin ... halt zu Lasten des Hauptspeichers, der reichlich vorhanden sein sollte, weil sonst das Programm ausgebremst wird... die zu übertragende Datenmenge wird ja durch die Einteilung verringert. Komprimierung hilft auch, dauert aber etwas und bewirkt daher eine Verzögerung, heißt es kann passieren, dass der Client mit den Abspielen schon merklich hinterher is.

Viel Spass beim basteln ... hat mir richtig Spaß gemacht!

supermuckl 24. Feb 2005 01:49

Re: 25 Screenshots pro Sekunde
 
kann es sein, das man die repaint anforderungen von windows an die programme per hook oderso abfangen könnte und somit genau auf die repaint canvas'e zugreifen könnte und dann genau weis, welche bereiche neu gezeichnet werden(wurden) um so eine gezieltere direktere überwachung auf eine bild-veränderung zu realisieren ?

ich denke nicht, das VNC und konsorten haufenweise screenshots machen und die vergleichen (wie auch immer)

ich denke, da ist irgendwas angezapft, da wirklich haargenau die bereiche gerefreshed werden, die auch neu gezeichnet wurden via message
das kann man an den alten VNC versionen in kombination mit einem 10mbit halfduplex lan sehr gut beobachten :)

auch von einer framerate kann hierbei wohl nicht gesprochen werden, da es ereignisgesteuert ist, und keinen konstanten refreshzyklus hat.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:18 Uhr.
Seite 4 von 5   « Erste     234 5      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz