Neuland hat geschrieben: 03.08.2024 13:28
Neuland hat geschrieben: 29.07.2024 22:29
Hallo!
Ich möchte eine meiner USB-WEB-CAM’S (Logitech HD (1280x720 Pixel)/ NoName (640x400 Pixel) (laut Werbung min. 13 MegaPixel)) an meinem PC (Windows 10) per PureBasic abfragen, bzw. ansteuern. So alle 5 Minuten ein Bild machen und dann abspeichern. Ja, ich hab diverse Webcam -Beispiele hier aus den Forum ausprobiert, aber keines der 9 Programme hat zum Erfolg geführt (Fehlermeldungen, Webcam nicht gefunden, schwarzes Bild, lässt sich nicht speichern…).
Nun würde ich mich sehr freuen, wenn mir einer unter die Arme greift und mir einen Link bzw. einen Code überlassen könnte. Ich krieg es einfach nicht hin, die Webcam per Bordmittel anzusprechen. Da reicht es bei mir nicht von der Erfahrung.
Da mein Englisch unter aller Sau ist

, dachte ich hier könnte mir jemand helfen. Hätte ja sein können das jemand Ahnung von (siehe oben) hat. Dann gebe ich auf und vergesse das Projekt. Danke für eure „Hilfe“.
Wow, für Herabsetzung (unsere Hilfe sei nur eine "Hilfe") und Beleidigungen (wir seien Ahnungslos) immer wieder gern. Du hast ja nicht auf die Frage geantwortet bis heute Mittag. Es gibt tonnenweise APIs unter Windows für Videoschnittstellen, deshalb die Frage ob eine andere Anwendung bei dir funktioniert, aber so hab ich auch keine Lust mehr. Danke, dir auch ein scheiß Wochenende.
[Edit]
Ich lasse das Ahnungslos nicht auf mir sitzen. Den
hiesigen Beispielcode kann man leicht nach PB 6 übersetzen:
Code: Alles auswählen
; Author: DarkDragon (updated for PB 4.00 by Andre)
; Date: 22. May 2005
; OS: Windows
; Demo: No
Structure VIDEOHDR
lpData.l
dwBufferLength.l
dwBytesUsed.l
dwTimeCaptured.l
dwUser.l
dwFlags.l
dwReserved.l[3]
EndStructure
Procedure FrameCallback(lwnd.l, *lpVHdr.VIDEOHDR)
For k=0 To *lpVHdr\dwBufferLength-1
Color = PeekB(*lpVHdr\lpData+k)
PokeB(*lpVHdr\lpData+k, RGB(Blue(Color), Green(Color), Red(Color)))
Next
EndProcedure
Prototype.i Prototype_capCreateCaptureWindowW(lpszWindowName.p-unicode, dwStyle.i, x.i, y.i, nWidth.i, nHeight.i, hwndParent.i, nID.i)
Global capCreateCaptureWindowW.Prototype_capCreateCaptureWindowW
hWnd = OpenWindow(0, 0, 0, 820, 620, "WebCamTest", #PB_Window_SystemMenu)
If OpenLibrary(0, "AVICAP32.DLL")
capCreateCaptureWindowW = GetFunction(0, "capCreateCaptureWindowW")
hWebcam = capCreateCaptureWindowW("BLUBBER", #WS_VISIBLE + #WS_CHILD, 10, 10, 800, 600, hWnd, 0)
SendMessage_(hWebcam, #WM_CAP_DRIVER_CONNECT , 0 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_SCALE , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEWRATE , 50, 0)
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 1 , 0)
SendMessage_(hWebcam, #WM_CAP_SET_CALLBACK_FRAME , 0 , @FrameCallback())
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
Until Quit = 1
SendMessage_(hWebcam, #WM_CAP_SET_PREVIEW , 0, 0)
SendMessage_(hWebcam, #WM_CAP_DRIVER_DISCONNECT, "BLUBBER", 0)
CloseWindow(0)
CloseLibrary(0)
EndIf
End
Funktioniert:
Wenn bei dir nur bestimmte Beispiele gehen dann wird das aber wahrscheinlich nicht funktionieren, oder? Die meisten sind wohl mit AVICAP32.DLL.