Problem mit HWND
-
Hmm... HWNDs sind doch immer nur auf dem Rechner gültig, auf dem sie erstellt wurden... also würde es wahrscheinlich net funktionieren. Andere Lösung: Den Inhalt des Fensters irgendwie holen und den dann rüberschicken.
cya
-
Das Problem liegt in dem "irendwie"!
Alle VFW Funktionen geben nicht die daten zurück.(nur boolsche Werte)
Oder gibt es eine Funktion die die Daten zurückgeben?
-
Ich kenn mich jetzt mit den cap-Funktionen überhaupt nicht aus, aber du hast doch nach dem ganzen Zeug da ein Fenster, das dir das Bild deiner Webcam einfängt, oder? Wenn ja, wird es ja wohl irgenwie möglich sein, über ein Window-Handle auf den Inhalt des Windows zuzugreifen... nur wie ;)?
cya
-
Irgendwie sowas dürfte im Preview-Mode funktionieren:
HDC hdc; int cx, cy; // Breite und Höhe des Videobildes int x, y; COLORREF pixel; hdc=GetDC(hwndVideo); for (y=0; y<=cy; y++) { for (x=0; x<=cx; x++) { pixel=GetPixel(hdc,x,y); send(Socket,&pixel,sizeof(COLORREF),0); } } ReleaseDC(hwndVideo,hdc);
-
ach du scheiße !!
-
Das wären bei einem Bild mit 256 auf 256 (wenn es ein Bitmap ist, und das ist es in diesem Fall) ja 65536 Pixel. Da jeder Pixel bei einem Bitmap 3 Byte braucht, wären das dann 196608 Byte/Bild. Dann haben wir so ca~ 12 Bilder/sec.
Daraus folgt dann, dass wir 2359296 Byte/sec verschicken müssten. Das wären dann 2.25 MegaByte / sec, die verschickt werden müssten...Wie soll das denn gehen??
-
GetDIBits und dann komprimieren
-
Du könntest ja auch einfach nur 1 Bild pro Sekunde rüberschicken ;).
cya
-
Es ist doch Blödsinn, sich zuerst das Bild kommen zu lassen, dann abzubilden, dann wieder auszulesen und dann zu verschicken. IMHO sollte man gleich, wenn man das Bild aus der Kamera bekommt, das Bild verschicken.
-
2.25 MegaByte/s im Netzwerk sind aber Peanuts - fürs Internet sollte man das natürlich komprimieren...
Wenn man GetDIBits benutzt wäre das ganze wahrscheinlich sogar evtl. machbar
(GetPixel ist viel zu langsam)Wenn man wüsste wie man das Bild direkt kriegt...