Seite 1 von 1

10 screenshots pro sekunde -> 90% cpu auslastung

Verfasst: 22. Juni 2007 13:57
von fettoni
hallo,

ich bin gerade abei ein kleines Programm zu schreiben mit dem ich den Bildschirminhalt eines Rechners über Netzwerk einen anderen Rechner übermitteln kann. D.h ich mache auf Rechner1 Screenshots und übermittel diese an Rechner2.

Leider hab ich das Problem das bei 10 Screenshots(1024x768) pro Sekunde die ich auf Rechner1 erstelle die CPU-Auslastung bis zu 90% hoch geht, wodurch auf diesem Rechner natürlich nichts weiteres lauffähig ist ... und das Bild das auf Rechner2 ankommt auch stark ruckelt (10 Bilder sind halt nicht wirklich optimal).

Deswegen meine Frage ob jmd. eine Idee hat woran das liegen könnte und wie man das ganze optimieren könnte.

Verfasst: 22. Juni 2007 14:23
von macman
Da fällt mir ne Menge ein woran das liegen könnte. Vor allem fallen mir ne Menge Fragen ein.

Verfasst: 22. Juni 2007 14:31
von Zandru
komprimierst du die bilder irgendwie? Idealerweise übermittelt man nur Änderungen gegenüber dem letzten Screenshot.

10 fps ist aber eigentlich garnicht so übel ;)

Verfasst: 22. Juni 2007 15:40
von macman
Zandru hat geschrieben:10 fps ist aber eigentlich garnicht so übel ;)
Ohne Komprimierung gar nicht möglich. 1024 x 768 x 4 x 10 = 30MB/s.

Verfasst: 22. Juni 2007 16:09
von upsala
Ich würde für einen solchen Fall wirklich was fertiges wie VNC verwenden.

Verfasst: 22. Juni 2007 17:39
von fettoni
hallo nochmal,

also ich mache einen Screenshot mit grabWindow und wandle das QPixmap für die Übertragung in ein png um. Also die Übertragung der Datenmenge ist nicht das Problem, da die pngs nicht wirklich groß. Das Problem ist wirklich nur die Erstellung der Screenshots, da diese ja als QPixmap erstellt werden und diese sind ja glaub ich relativ groß sind, da diese nicht komprimiert sind.

Kennt vielleicht jmd. noch irgendeine andere Methode um ein Screenshot zu erstellen (als nen komprimiertes qpixmap zb, wenns sowas überhaupt gibt) oder das Bild irgendwie anders zu erstellen. Ich hab bisher leider noch nichts gefunden.

TightVNC u. UltraVNC hab ich auch schon mal probiert, leider haben diese Programme komischerweise alles Übertragen außerdem was sie Übertragen sollten. Klingt komisch is aber leider so. D.h. ein anders Qt-Programm haben sie nicht aktualisiert, das Bild ist immer gleich geblieben. Bei meinem Programm werden die Änderungen allerdimgs dargestellt. Wieso das so ist weiß ich aber auch nicht so genau.

Verfasst: 22. Juni 2007 17:53
von upsala
Ansonsten kann man ja noch das X-Protokoll verwenden. Das kann ja jedes vernünftige Window-System.