我有一个带两个摄像头的系统。我有两个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,因为我想通过用户界面做一些事情,有些事情我想在某个状态下为每个摄像机的每一帧做。
答案 0 :(得分:0)
这通常有效。问题是两台摄像机都通过外部USB集线器连接。该软件可以识别两个摄像头,但一次只能连接一个。
将其中一个连接到自己的USB端口会使问题消失。