[解决办法] 试了几台电脑都这样?是不是电脑的摄像头驱动有问题?重装下试试 [解决办法] 您好,谢谢你的回复,我用的摄像头都是免驱的,就是必须在有自带摄像头的笔记本上才行,这个问题一直困扰着我,希望知道的人回复下哈 [解决办法] 这是主要的代码 procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin CapEnum := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory); CapEnum1 := TSysDevEnum.Create(CLSID_VideoInputDeviceCategory); for i := 0 to CapEnum.CountFilters - 1 do begin videoListBox.Items.Add(CapEnum.Filters[i].FriendlyName+inttostr(i)); video_1_ComboBox.Items.Add(CapEnum.Filters[i].FriendlyName+inttostr(i)); video_2_ComboBox.Items.Add(CapEnum1.Filters[i].FriendlyName+inttostr(i)); video_3_ComboBox.Items.Add(CapEnum.Filters[i].FriendlyName+inttostr(i));
end end;
procedure TForm1.video_1_ComboBoxChange(Sender: TObject); begin video1_FilterGraph.ClearGraph; video1_FilterGraph.Active := false; video1_Filter.BaseFilter.Moniker := CapEnum.GetMoniker(video_1_ComboBox.ItemIndex); video1_FilterGraph.Active := true; with video1_FilterGraph as ICaptureGraphBuilder2 do RenderStream(@PIN_CATEGORY_PREVIEW, nil, video1_Filter as IBaseFilter, nil, VideoWindow1 as IbaseFilter); try video1_FilterGraph.Play except showmessage('please select camera not used') end end;
procedure TForm1.video_2_ComboBoxChange(Sender: TObject); begin video2_FilterGraph.ClearGraph; video2_FilterGraph.Active := false; video2_Filter.BaseFilter.Moniker := CapEnum1.GetMoniker(video_2_ComboBox.ItemIndex); video2_FilterGraph.Active := true; with video2_FilterGraph as ICaptureGraphBuilder2 do RenderStream(@PIN_CATEGORY_PREVIEW, nil, video2_Filter as IBaseFilter, nil, VideoWindow2 as IbaseFilter); try video2_FilterGraph.Play except showmessage('please select camera not used') end end;
with video3_FilterGraph as ICaptureGraphBuilder2 do RenderStream(@PIN_CATEGORY_PREVIEW, nil, video3_Filter as IBaseFilter, nil, VideoWindow3 as IbaseFilter); try video3_FilterGraph.Play except showmessage('please select camera not used') end end; [解决办法] 可以试试其他的程序连3个摄像头, 比如DXshow自带的demo 或者 http://www.codeproject.com/Articles/10248/Motion-Detection-Algorithms