在摄像机之间切换,粘贴在VideoSourcePlayer.Start()上

时间:2016-04-05 07:13:02

标签: .net video emgucv aforge

我有一个带两个摄像头的系统。我有两个VideoSource对象,其中一个显示在VideoSourcePlayer控件中。我想使用以下代码在它们之间交替:

videoSourcePlayer.SignalToStop
videoSourcePlayer.WaitForStop();
if (videoSourcePlayer.VideoSource == videoSource1)
{
     videoSourcePlayer.VideoSource = videoSource2;
}
else
{
     videoSourcePlayer.VideoSource = videoSource1;
}
videoSourcePlayer.Start();

当我第一次按下切换按钮时,我在videoSourcePlayer控件中收到“连接...”消息。当我调用videoSourcePlayer.Stop()时,这并没有发生,它只是抛出异常然后继续。再次切换后,问题就消失了。换句话说,我可以毫无问题地在两台摄像机之间切换。 谁能解释一下,告诉我如何避免这个问题?

澄清

我按如下方式初始化videoSource对象和Player:

videoSource1 = new VideoCaptureDevice(videoDevices[iiiVideoIndex].MonikerString);
...
videoSource1.NewFrame += iiiFrameHandler.SaveFrame;
videoSourcePlayer.VideoSource = videoSource1;
videoSourcePlayer.NewFrame += PlayerNewFrame;
...
videoSource1.Start();
...
System.Threading.Thread.Sleep(500);
videoSource2 = new VideoCaptureDevice(videoDevices[jjjVideoIndex].MonikerString);
...
videoSource2.NewFrame += jjjFrameHandler.SaveFrame;
videoSource2.Start();

我有三个newFrameHandler,因为我想通过用户界面做一些事情,有些事情我想在某个状态下为每个摄像机的每一帧做。

1 个答案:

答案 0 :(得分:0)

这通常有效。问题是两台摄像机都通过外部USB集线器连接。该软件可以识别两个摄像头,但一次只能连接一个。

将其中一个连接到自己的USB端口会使问题消失。