Bonjour,
j'utilise Delphi6 et ai un écran au travers duquel j'affiche ma webcam.
Cela marche sans problème avec une webcam externe (depuis des années)
mais sur les portables (différents modèles testés), lors de la première utilisation, tout est OK mais ensuite, il m'affiche un écran me demandant le choix de la source vidéo.
Je sélectionne ma webcam mais j'ai un écran noir au lieu de mon image.
Mon code est le suivant :
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 procedure TFrameSpaWebCam.OpenWebcam; begin if Handlecap <> 0 then begin ShowMessage('Erreur Connexion WebCam'); exit; end; HandleCap := capCreateCaptureWindow('Fenetre video', WS_CHILD or WS_VISIBLE, 0, 0, Width, Height, ADNPanel1.Handle, 0); SendMessage(HandleCap, WM_CAP_DRIVER_CONNECT, 0, 0); if Handlecap <> 0 then begin Getmem(Status, Sizeof(TCapStatus)); Getmem(DrvCaps, SizeOf(TCapDriverCaps)); SendMessage(HandleCap, WM_CAP_GET_STATUS, Sizeof(TCapStatus), LongInt(Status)); SendMessage(HandleCap, WM_CAP_DRIVER_GET_CAPS, SizeOf(TCapDriverCaps), LongInt(DrvCaps)); SendMessage(HandleCap, WM_CAP_SET_PREVIEW, 1, 0); SendMessage(Handlecap, WM_CAP_SET_PREVIEWRATE, 1, 0); end; end;
Le choix de la source vidéo apparait sur la ligne SendMessage(HandleCap, WM_CAP_DRIVER_CONNECT, 0, 0); de ma procédure OpenWebcam
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 procedure TFrameSpaWebCam.CloseWebcam; begin if Handlecap = 0 then begin ShowMessage('Erreur Déconnexion WebCam'); exit; end; SendMessage(Handlecap, WM_CAP_DRIVER_DISCONNECT, 0, 0); Handlecap := 0; end;
S'agissant des portables, j'ai une petite diode à coté de la webcam,
celle-ci est allumé lors de la première utilisation (suite à SendMessage(HandleCap, WM_CAP_DRIVER_CONNECT, 0, 0) ),
s'éteint lorsque je fait CloseWebCam
et ne se rallume pas lors de la seconde utilisation après choix du périphérique (l'image n'apparait pas).
Si quelqu'un a une idée ?
Merci d'avance
Partager