利用Aforge.Net 调用多个摄像头的一个简单问题
查看了Aforge 提供的例子(TwoCamerasTest)同时调用两个摄像头,OK,成功了!但是,小弟试试在电脑里面插入了四个摄像头加起手提自带的一个共有五个摄像头,,对原来的Aforge 进行扩展,OK,五个摄像头也可以同时调用。
但是,当我在自己项目里 用同样 的方法同时调用五个摄像头时,即只有一个摄像头可以调用的。
当我调用了ID==1 的摄像头时(这个成功显示画面),其他四个,只显示Connecting 并没有显示的画面,
当我调用ID==2 的摄像头时(这个成功显示画面), 其他四个,只显示Connecting 并没有显示的画面,
ID==3.....等都是这样的效果!
请问高手们。这是什么原因呢?
代码如下:
/// <summary>
/// 开启摄像头
/// </summary>
/// <param name="cb">要查看摄像头设备是否可用</param>
/// <param name="video">要调用摄像头的ID号</param>
/// <returns></returns>
private bool StartCamera(ComboBox cb,int videoID)
{
//判断摄像头可用
if (cb.Enabled == true)
{
switch (videoID)
{
case 1:
VideoCaptureDevice videoSource1 = new VideoCaptureDevice(videoDevices[this.comboBoxEx1.SelectedIndex].MonikerString);
videoSource1.DesiredFrameRate = 10;
videoSourcePlayer1.VideoSource = videoSource1;
videoSourcePlayer1.Start();
break;
case 2:
System.Threading.Thread.Sleep(500);
VideoCaptureDevice videoSource2 = new VideoCaptureDevice(videoDevices[this.comboBoxEx2.SelectedIndex].MonikerString);
videoSource2.DesiredFrameRate = 10;
videoSourcePlayer2.VideoSource = videoSource2;
videoSourcePlayer2.Start();
break;
case 3:
System.Threading.Thread.Sleep(500);
VideoCaptureDevice videoSource3 = new VideoCaptureDevice(videoDevices[this.comboBoxEx3.SelectedIndex].MonikerString);
videoSource3.DesiredFrameRate = 10;
videoSourcePlayer3.VideoSource = videoSource3;
videoSourcePlayer3.Start();
break;
case 4:
System.Threading.Thread.Sleep(500);
VideoCaptureDevice videoSource4 = new VideoCaptureDevice(videoDevices[this.comboBoxEx4.SelectedIndex].MonikerString);
videoSource4.DesiredFrameRate = 10;
videoSourcePlayer4.VideoSource = videoSource4;
videoSourcePlayer4.Start();
break;
case 5:
System.Threading.Thread.Sleep(500);
VideoCaptureDevice videoSource6 = new VideoCaptureDevice(videoDevices[this.comboBoxEx5.SelectedIndex].MonikerString);
videoSource6.DesiredFrameRate = 10;
videoSourcePlayer6.VideoSource = videoSource6;
videoSourcePlayer6.Start();
break;
}
return true;
}
else
{
this.BalloonTipShow("", cb, "提示", "请检查摄像设备是否可用", 2);
return false;
}
}