Entwickler-Ecke
Sonstiges (Delphi) - Live-Capturing verwirklichen?
XenoX - Fr 16.05.03 07:53
Titel: Live-Capturing verwirklichen?
Hi Leute,
wie könnte ich ein Live-Capturing verwirklichen? soll für ein Remotetool sein. sprich auf dem zu steuernden Rechner läuft der Server und auf dem anderem Rechner der Client. Jetzt würde ich gerne eine Live-Capture Funktion einbauen, sprich eine art Echtzeit überwachung. Habe aber keine Ahnung wie ich anfangen soll.
THX schon mal im vorraus!
ase - Fr 16.05.03 14:22
na ganz viele screen shoots machen und dann ab die post.
XenoX - Fr 16.05.03 14:33
Titel: hmm das ja auch nicht die beste lösung oder???
Die idee kam mir auch schon.........aber gibts nicht noch eine andere möglichkeit?
ase - Fr 16.05.03 14:54
klar. siehe remote administrator. die machen auch shoots, versenden aber nur den bildbereich, der sich beim letzten shoot nicht verändert hat. auch ne variante. dann noch als jpg komprimiert... jojo des passt scho
ase
Popov - Fr 16.05.03 17:08
Ich hab da bereits einige Tools geschreiben die permanent den Bildschirm abfotografieren. Allerdings ist meine Erfahrung die, daß es das System sehr belastet. Überleg mal selbst was auf dich zukommt. Ein normaller Bildschirm hat heute 1024x800 Auslösung mit 32 oder 24 Bit Farbtiefe. Das macht pro Bild über 3 MByte große Datei. Jetzt kann man die 3 MB rüberschicken, und das natürlich mindesten 12 mal pro Sekunde. Mach ca. 36 MByte pro Sekunde über das Netztwerk. Auch wenn man das auf 4 Bilder pro Sekunde reduziert, so ist es immer noch viel. Man kann die Pakete aber vorher auch packen. Die Pakete werden dadurch kleiner, aber der Zip belastet das System stärker.
Ansonsten kannst du dir mal meine PopSpy, WebCamRecorder und das PopTV (mit Source) angucken. Allerdings ist PopTv ein kleines Jux-Programm, macht aber permanent Screenschots vom Bildschirm.
XenoX - Fr 16.05.03 19:56
Titel: PS: ich wills es nicht über netzwerk realisieren.....
ich spielte eigentlich mit dem gedanken mit dem internet das programm zu nutzen so ähnlich wie bei der XP Remote Software von der Professional edition
XenoX - Fr 16.05.03 21:08
Titel: Habs mir so vorgestellt....
Quelltext
1: 2: 3: 4: 5: 6:
| for i := 0 to ScreenShot.height do for j := 0 to ScreenShot.width do If OldScreenShot[i,j].Color <> NewScreenShot[i,j].Color then begin Send Change... end; |
aber keinen schimmer wie ich das richitg umsetze........als protokoll wollte ich UDP benutzen wegen der geschwindigkeit......
ase - Fr 16.05.03 22:25
servus. remote administrator kann man durchaus über ein 56k modem mit 1024x768x24er auflösung betreiben!
@XenoX: ich würde des anders machen. im prinzip verändert sich in windows nie ein einziger pixel oder so. es ist meist ein ganzes fenster was mit einmal neu gezeichnet wird. du kannst ja ne routine schreiben, die ein virtuelles rechteck um die veränderten pixel berechnet. sowas wie ne update region. die schickst du dann mit den werten x, y, width und height der region los. wenn du das pixelweise machst, dann musst du ja für jeden pixel noch die koordinaten schicken.
währe mein vorschlag.
ase
XenoX - Fr 16.05.03 23:16
Titel: ja aber wie......
ich hab irgendwie keinen Plan wie ich jetzt anfangen soll wie gesagt hab noch nichts gecoded is bisher nur ne idee die ich noch nicht in code umzusetzen weiss :cry:
ase - Fr 16.05.03 23:20
naja, so wie ich es geschrieben habe? ;)
schreib doch nen prog, was die unterschiede aus 2 bitmaps rausfindet und um alle stellen ein rechteck berechnet. das währe nen anfang ;)
ase
Popov - Fr 16.05.03 23:50
Nur sollte er nicht so arbeiten:
Delphi-Quelltext
1:
| If OldScreenShot[i,j].Color <> NewScreenShot[i,j].Color then |
Da dauert die Untersuchung schon länger als eine Sekunde. Für eine schnelle Untersuchnung reicht schon eine Prügung jedes 8x8 Pixels. Ansonsten sollte er sich ScanLine angucken.
XenoX - Fr 16.05.03 23:53
Titel: und wie ;)
Wenn du mir sagst wie ich am besten dafür ne Routine mache ;) zum abgleichen 2er bitmaps das neuland für mich ;)
ase - Sa 17.05.03 08:21
du könntest es mit ScanLine machen wenn du schon Bitmap objekte hast. das ist schneller als Pixels. Siehe Hilfe nach ScanLine.
dann kännte man noch überlegen, ob man überhaupt jeden pixel vergleichen muss. man könnte ja das bild nehmen und in ein raster aufteilen. dann überprüfst du nur die punkte, an denen sich die linien des rasters kreuzen. damit hättest du dann aber keine 100%ige sicherheit, dass die bilder immer aktuell sind.
schluss: nimm scanline.
ase
focus - Di 27.05.03 10:00
klingt sicher blöd und sags gleich im vorraus: ich kenn mich mit grafik überhauptnicht aus.. theoretisch könntest du jeweils 32 bit gleichzeitig mit einem einzigen asm befehl vergleichen ... und nicht bitweise..dafür sind die prozessoren von heute schliesslich ausgelegt..vielleicht hab ich euch soweit auch missverstanden..wenn dann so ist schreibts bitte kurz..
meine nächste frage wäre warum willst du denn das bmp vergleichen?? wenn du beide umwandelst und die jpg`s vergleichst sparst du dir viel aufwandt...selbst wenn du nur auf 100k kompemierst sind das ja immerhin 1/10 der ursprünglichen vergleiche..oder nimmt das komp. soviel zeit in anspruch?
gruss
michael
ase - Di 27.05.03 11:23
kann er nicht machen weil er ja die koordinaten der unterschiede wissen muss. wenn bei position X:100, Y:100 ein unterschied festgestellt wird, dann muss er ja das entsprechende koordinaten rechteck "ausschneiden" um es zu versenden. aufgrund der komprimierung von jpeg geht des net. würdest du es trotzdem machen würde delphi das jpeg intern wieder in ein bitmap umwandeln soweit ich weiß.
ase
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!