这样调的好像不能保存,要刷硬件的,就像手机刷ROM一样

解决方案 »

  1.   

    这是主要的代码
    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;
      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;
      

  2.   

    可以试试其他的程序连3个摄像头, 
    比如DXshow自带的demo 
    或者
    http://www.codeproject.com/Articles/10248/Motion-Detection-Algorithms如果这些程序没问题 说明硬件OK
      

  3.   

    你好,楼主,请问您的这个问题有解决么?我也碰到了与你相同的情况,也是自带摄像头没有问题,USB免驱动的摄像头会报这样的错误,如果您已经解决了,麻烦您告诉我该怎么解决好么,谢谢了