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.DLL'
name '
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?