【发布时间】: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,因为有些事情我想通过用户界面做,有些事情我想做,在某种状态下,每个相机的每一帧。
【问题讨论】: