У меня есть система с двумя камерами. У меня есть два объекта VideoSource, один из которых отображается в элементе управления VideoSourcePlayer. Я хочу, чтобы переключаться между ними, используя следующий код:Переключение между камерами, палочками на VideoSourcePlayer.Start()
videoSourcePlayer.SignalToStop
videoSourcePlayer.WaitForStop();
if (videoSourcePlayer.VideoSource == videoSource1)
{
videoSourcePlayer.VideoSource = videoSource2;
}
else
{
videoSourcePlayer.VideoSource = videoSource1;
}
videoSourcePlayer.Start();
Когда я сначала нажать на кнопку переключения, я получаю «Connecting ...» сообщение в элементе управления videoSourcePlayer. Этого не произошло, когда я вызвал videoSourcePlayer.Stop(), который просто выбросил исключение, а затем продолжил. После переключения снова проблема исчезает. Другими словами, я могу без проблем переключаться между двумя камерами. Может ли кто-нибудь объяснить это и рассказать мне, как избежать проблемы?
Разъяснение
Я инициализировать объекты видеоисточника и игрок следующим образом:
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();
У меня есть три newFrameHandlers, потому что есть некоторые вещи, которые я хочу сделать через пользовательский интерфейс, а некоторые, что я хотите сделать в определенном состоянии для каждого кадра с каждой камеры.