Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl
Online

Registriert seit: 2. Apr 2004
Ort: Bonn
2.532 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: BMP bzw. Stream Indy TCPServer an alle verbundenen Clients schicken

  Alt 12. Okt 2020, 15:48
Denn in meinem Fall reicht es aus in einem Interval von 10 Sekunden ein aktuelles Bild zu erhalten. Ich brauche keinen Livestream ala Teamviewer und ich muss auch nicht mit den anderen Bildschirm interagieren. Auch ist die interne Netzwerkstruktur hier nicht das Problem, denn ich habe selbst die Kontrolle über die Router/Firewalls dazwischen.

Aber natürlich packt einen bei einem solchen Projekt auch ein wenig der Ehrgeiz. Mittlerweise habe ich mir die Display Duplication API angeschaut, mit deren Hilfe es natürlich einfacher ist, die Datenmenge zu verringern, weil man nach dem ersten Bild nur noch die Teilbilder schickt, in denen sich Änderungen ergeben. Damit läßt sich auch bei geringerer Bandbreite ein gutes Ergebnis erzielen.
Nachdem ich diesen Thread las, hatte ich auch noch mal Lust bekommen, an meinem PC-Network Remote Server & Controller Programm weiter zu arbeiten. Das letzte mal war das vor ca. 5 Jahren. Mit aktuellen PC's, dem neuesten Delphi (das ja auch wirklich in den letzten Jahren für schnelleren Code sorgt) und kleineren Optimierungen habe ich das Programm noch mal deutlich von der Geschwindigkeit optimieren können, innerhalb des lokalen Netzwerks ist die Bildschirmübertragung fast Echtzeit.

Habe daher eine neue Version veröffentlicht, bei Interesse ist ein kurzes Demo (ca. 1 Minute) bezüglich der Bildschirm-Übertragung hier zu sehen: https://youtu.be/vZmSHxN0d68?t=30

Dabei muss ich anmerken, dass der Client in einer virtuellen Windows-Maschine lief und ich gleichzeitig das Video aufgenommen habe. "In echt" geht es also noch etwas schneller.

Dabei hat sich heraus gestellt, dass die Indys gar nicht das Problem waren, sondern das Einfangen des aktuellen Bildschirms (auf dem älteren Entwicklungs-PC nicht unter 40 MS machbar, auf dem neuen müsste ich mal testen, muss aber deutlich schneller sein).

Für das Überprüfen, welche Bereiche im Screenshot geändert sind, brauche ich ca. 8 ms (auch alter Entwicklungs-PC).

Auch wenn das eigentlich schnell genug sein sollte, würde mich Dein Hinweis auf die Display Duplication API interessieren. Hast Du das tatsächlich mal getestet und wenn ja, dann gibt es schon eine Delphi Implementation dafür?
  Mit Zitat antworten Zitat