delphi+多USB摄像头->ERROR'连接到系统下的设备没有发挥作用'
delphi+多USB摄像头->ERROR'连接到系统上的设备没有发挥作用'
使用DSPACK
情况1:台式机/笔记本电脑没有自带摄像头:
在制作一个简易的监控软件时,发现当采用超过三个家用摄像头进行摄像时,会出现‘连接到系统上的设备没有发挥作用'的错误
情况1:笔记本电脑有自带摄像头:
不会出现该问题
希望知道的的人回复下,麻烦了。。。
分数就22分了。。。
------解决方案--------------------
把摄像头的分辨率调小点
------解决方案--------------------
谢谢您,我用另外一个程序把摄像头的分辨率调了,但还是不行,希望知道的人回复下
------解决方案--------------------
这样调的好像不能保存,要刷硬件的,就像手机刷ROM一样
------解决方案--------------------
试了几台电脑都这样?是不是电脑的摄像头驱动有问题?重装下试试
------解决方案--------------------
您好,谢谢你的回复,我用的摄像头都是免驱的,就是必须在有自带摄像头的笔记本上才行,这个问题一直困扰着我,希望知道的人回复下哈
------解决方案--------------------
这是主要的代码
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;
procedure TForm1.video_3_ComboBoxChange(Sender: TObject);
begin
video3_FilterGraph.ClearGraph;
video3_FilterGraph.Active := false;
video3_Filter.BaseFilter.Moniker := CapEnum.GetMoniker(video_3_ComboBox.ItemIndex);
video3_FilterGraph.Active := true;
使用DSPACK
情况1:台式机/笔记本电脑没有自带摄像头:
在制作一个简易的监控软件时,发现当采用超过三个家用摄像头进行摄像时,会出现‘连接到系统上的设备没有发挥作用'的错误
情况1:笔记本电脑有自带摄像头:
不会出现该问题
希望知道的的人回复下,麻烦了。。。
分数就22分了。。。
------解决方案--------------------
把摄像头的分辨率调小点
------解决方案--------------------
谢谢您,我用另外一个程序把摄像头的分辨率调了,但还是不行,希望知道的人回复下
------解决方案--------------------
这样调的好像不能保存,要刷硬件的,就像手机刷ROM一样
------解决方案--------------------
试了几台电脑都这样?是不是电脑的摄像头驱动有问题?重装下试试
------解决方案--------------------
您好,谢谢你的回复,我用的摄像头都是免驱的,就是必须在有自带摄像头的笔记本上才行,这个问题一直困扰着我,希望知道的人回复下哈
------解决方案--------------------
这是主要的代码
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;
procedure TForm1.video_3_ComboBoxChange(Sender: TObject);
begin
video3_FilterGraph.ClearGraph;
video3_FilterGraph.Active := false;
video3_Filter.BaseFilter.Moniker := CapEnum.GetMoniker(video_3_ComboBox.ItemIndex);
video3_FilterGraph.Active := true;