Вот код который ищет и запускает видео устройство и при этом отображает полученное изображение в объект, VideoWindow!
Код:
var
i: integer;
SysDev: TSysDevEnum;
begin
SysDev:= TSysDevEnum.Create(CLSID_VideoInputDeviceCategory);
if SysDev.CountFilters > 0 then
begin
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;
FilterGraph.ClearGraph;
FilterGraph.Active := false;
Filter.BaseFilter.Moniker := SysDev.GetMoniker(TMenuItem(Sender).tag);
FilterGraph.Active := true;
with FilterGraph as ICaptureGraphBuilder2 do
begin
RenderStream(@PIN_CATEGORY_PREVIEW, nil, Filter as IBaseFilter,
nil, VideoWindow as IbaseFilter);
end;
FilterGraph.Play;
end;
А, мне интересно как можно седлать тоже самое но за место, VideoWindow передовать данные в буфер, а? Кто знает???