Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.12.24;
Скачать: CL | DM;

Вниз

Захват видеоизображения   Найти похожие ветки 

 
suharew   (2006-05-05 00:10) [0]

Добрый день. Нашел в нете нижеследующий кусок кода, который захватывает изображение с устройства и выводт его на форму, Все вроде работает нормально. В данном случае у меня захват идет с ТВ тюнера, А если у меня несколько устройств. Например Тв тюнер,Веб камера, Плата видеомондажа Pinnacle Dc10, как мне переключаться между этими устройствами?? Подскажите  пожалуста.


const
WM_CAP_START                  = WM_USER;
WM_CAP_STOP                   = WM_CAP_START + 68;
WM_CAP_DRIVER_CONNECT         = WM_CAP_START + 10;
WM_CAP_DRIVER_DISCONNECT      = WM_CAP_START + 11;
WM_CAP_GRAB_FRAME             = WM_CAP_START + 60;
WM_CAP_EDIT_COPY              = WM_CAP_START + 30;
WM_CAP_DLG_VIDEOSOURCE          = (WM_CAP_START+  42);

function capCreateCaptureWindowA(lpszWindowName : PCHAR;
                               dwStyle : longint;
                               x : integer;
                               y : integer;
                               nWidth : integer;
                               nHeight : integer;
                               ParentWin  : HWND;
                               nId : integer): HWND;
                               STDCALL EXTERNAL "AVICAP32.DLL";

procedure TForm1.BClick(Sender: TObject);
begin
if B.Caption = "Start" then
begin
  hWndC := capCreateCaptureWindowA("My Own Capture Window",
                                   WS_CHILD or WS_VISIBLE ,
                                   0,
                                   0,
                                   352,
                                   288,
                                   Form1.Handle,
                                   0);
  if hWndC <> 0 then
  begin
    SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
    B.Caption := "Stop";
    Timer1.Enabled := True;
  end;
end else
begin
  B.Caption := "Start";
  Timer1.Enabled := False;
  if hWndC <> 0 then
  begin
    SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
    hWndC := 0;
  end;
end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var s : string;
begin
if (hWndC <> 0) then
 begin
  SendMessage(hWndC, WM_CAP_GRAB_FRAME, 0, 0);
end;
end;



 
medved_68 ©   (2006-05-05 16:29) [1]

Попробуй так

procedure TVideoForm.FormCreate(Sender: TObject);
var
 i: integer;
 Device: TMenuItem;
begin
 SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
 if SysDev.CountFilters > 0 then
   for i := 0 to SysDev.CountFilters - 1 do
   begin
     Device := TMenuItem.Create(Devices);
     Device.Caption := SysDev.Filters[i].FriendlyName;
     Device.Tag := i;
     Device.OnClick := OnSelectDevice;
     Devices.Add(Device);
   end;
end;

Кстати пример из DSPak поставь его у себя и плюнь на VMF


 
suharew   (2006-05-05 19:45) [2]

Да, DSPACK лучше , уже поставил теперь разбираюсь.



Страницы: 1 вся ветка

Текущий архив: 2006.12.24;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.041 c
11-1141994068
avs
2006-03-10 15:34
2006.12.24
Kol 2.34


2-1165163247
Михаил_2006
2006-12-03 19:27
2006.12.24
Многозвенная БД в Turbo Delphi. Как?


11-1142320949
Barloggg
2006-03-14 10:22
2006.12.24
А запись Pcx есть?


1-1163257920
gdaujk
2006-11-11 18:12
2006.12.24
Смена текста одного из контролов Open Dialog Box...


2-1165120198
Tru
2006-12-03 07:29
2006.12.24
Компонент TDBLookupListBox