Thema: Delphi Webcam problem

Einzelnen Beitrag anzeigen

marius0702

Registriert seit: 1. Jan 2008
40 Beiträge
 
#1

Webcam problem

  Alt 7. Apr 2009, 17:34
ich hab mir heute eine neue webcam gekauft ("Hercules Dualpix Chat and Show"). ich habe sie erstmal mit skype getestet und das hat auch funktioniert. aber als ich versucht hab das webcambild so
Delphi-Quellcode:
...

const
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_EDIT_COPY = WM_USER + 30;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_OVERLAY = WM_USER + 51;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;

implementation

{$R *.dfm} 

//Dann brauchst du noch das hier
function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLLname 'capCreateCaptureWindowA';


procedure TForm1.Button1Click(Sender: TObject);
var handle:THandle;
begin
  handle := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 320, 240, Panel1.Handle, 1); //Wie du siehst, brauchst du ein Panel in diesem Beispiel ;-)
  SendMessage(handle, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle, WM_CAP_SET_PREVIEWRATE, 30, 0);
  sendMessage(handle, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle, wm_cap_set_preview, 1, 0);
end;

...
in meinem programm darzustellen wurde im panel nur ein schwarzes bild dargestellt und als ich dann so

Delphi-Quellcode:
SendMessage(Vhandle, WM_CAP_EDIT_COPY, 1, 0 );
Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
das bild in das image laden wollte kam eine fehlermeldung (format in der zwischenablage wird nicht unterstützt).

ich vermute es liegt daran, dass das video mit MJPEG komprimiert wird. leider kann ich das vodeoformat nicht ändern, weil ich im formatmenu
  SendMessage(vhandle,WM_CAP_DLG_VIDEOFORMAT,1,0); nur mjpeg und die auflösung auswählen kann.
und im komprimierungsmenu
  SendMessage(vhandle,WM_CAP_DLG_VIDEOCOMPRESSION,1,0); steht nur "keine erneute komprimierung".

bei meiner alten webcam hat der code immer wunderbar funktioniert.
die led an der webcam geht übrigens an wenn ich das programm starte.
weiß jemand wie ich das problem ,möglichst nicht zu kompliziert ,lösen kann?
  Mit Zitat antworten Zitat