Главная страница
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.051 c
15-1165325019
Pazitron_Brain
2006-12-05 16:23
2006.12.24
Матрица I


15-1165001984
Ne-Ld
2006-12-01 22:39
2006.12.24
Какие могут быть траблы при пересечении Белорусской границы?


11-1141978027
Andr-04
2006-03-10 11:07
2006.12.24
BMP в KOLOLERichEdit


15-1164916245
Kerk
2006-11-30 22:50
2006.12.24
Едем на футбол :))))


15-1164988335
AlexanderMS
2006-12-01 18:52
2006.12.24
Как "разрешить" скрипты в Power Point?