【问题标题】:Toggle between cameras, sticks on VideoSourcePlayer.Start()在摄像机之间切换,坚持 VideoSourcePlayer.Start()
【发布时间】:2016-04-05 07:13:02
【问题描述】:

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

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

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

澄清

我初始化videoSource对象和播放器如下:

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,因为有些事情我想通过用户界面做,有些事情我想做,在某种状态下,每个相机的每一帧。

【问题讨论】:

    标签: .net video emgucv aforge


    【解决方案1】:

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

    将其中一个连接到自己的 USB 端口即可解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多