Thema: Webcam

Einzelnen Beitrag anzeigen

MiniMax

Registriert seit: 15. Dez 2009
Ort: Bremen
193 Beiträge
 
Delphi 2009 Architect
 
#1

Webcam

  Alt 28. Jul 2010, 12:31
Hallo zusammen,
ich benutze z.Z. folgenden Code um eine Webcam anzeigen zu lassen:

Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,
  ExtCtrls,Windows, Messages,StdCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

  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;

  WM_CAP_DLG_VIDEOFORMAT = WM_USER+41;
  WM_CAP_DLG_VIDEOSOURCE = WM_USER+42;
  WM_CAP_DLG_VIDEOCOMPRESSION = WM_USER+46;

  WM_CAP_STOP = (WM_User+ 68) ;
  WM_CAP_DRIVER_DISCONNECT = (WM_User+ 11) ;
implementation

function capCreateCaptureWindow(lpszWindowName: LPCSTR;
  dwStyle: DWORD;
  x, y,
  nWidth,
  nHeight: integer;
  hwndParent: HWND;
  nID: integer): HWND; stdcall;
  external 'AVICAP32.DLLname 'capCreateCaptureWindowA';

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);

var handle22:THandle;
begin
  handle22 := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 640,480, panel1.Handle, 1);
  SendMessage(handle22, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle22, WM_CAP_SET_PREVIEWRATE, 1, 0);//bildrate = 1
  sendMessage(handle22, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle22, wm_cap_set_preview, 1, 0);
  Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
var handle22:THandle;
begin
  handle22 := capCreateCaptureWindow('Video',ws_child+ws_visible, 0,
  0, 640,480, panel1.Handle, 1);
  SendMessage(handle22, WM_CAP_DRIVER_CONNECT, 0, 0);
  SendMessage(handle22, WM_CAP_SET_PREVIEWRATE, 1, 0);
  sendMessage(handle22, WM_CAP_SET_OVERLAY, 1, 0);
  SendMessage(handle22, wm_cap_set_preview, 1, 0);
  Application.ProcessMessages;
   SendMessage(handle22, WM_CAP_DRIVER_DISCONNECT, 0, 0);

end;




initialization
  {$I unit1.lrs}

end.
Nun möchte ich aber z.B. das bild Aufzeichen auf befehl in einem definierbaren videoformat (wenn möglich)
Was ich auch habe, ist ein Code liste, die ich aber net verwenden kann weil ich net weis wie (sendmassage is klar aber wie gehts weiter) und ich muss immer Das WM_CAP_START in WM_User umbennen sonst geht es net (habe ich vergesen eine Unit einzubinden?) Oder gibt es eine Fertige video Unit?

Ich bitte um eure Hilfe!
Angehängte Dateien
Dateityp: txt cam.txt (12,8 KB, 30x aufgerufen)
Gruß
MiniMax

Geändert von mkinzler (28. Jul 2010 um 12:34 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat