private void CaptureVideo_Frame(object sender, NewFrameEventArgs eventArgs) { var monitoringImage = MonitoringImages.FirstOrDefault(mi => mi.Url == ((MJPEGStream)sender).Source); if (monitoringImage != null) { try { BitmapImage bitmapImage; using (var bitmap = (Bitmap)eventArgs.Frame.Clone()) { bitmapImage = bitmap.ToBitmapImage(); if (monitoringImage.IsRecordSetupNeed) { monitoringImage.IsRecordSetupNeed = false; monitoringImage.VideoRecordingService.SetUpRecordingEngine(bitmap.Width, bitmap.Height, monitoringImage.CameraName); } if (monitoringImage.IsRecording) { monitoringImage.VideoRecordingService.StartVideoRecording(bitmap); } } bitmapImage.Freeze(); Dispatcher.CurrentDispatcher.Invoke(() => monitoringImage.Image = bitmapImage); } catch (Exception ex) { MessageBox.Show("Oppps, video stream have fallen down.", "Exception", MessageBoxButton.OK, MessageBoxImage.Error); } } }
private void StartLastAddedCamera() { _videoSource = new MJPEGStream(IpCameraUrls.Last().ImageSourcePath); var image = MonitoringImages.FirstOrDefault(mi => mi.Url == IpCameraUrls.Last().ImageSourcePath); image.VideoSource = _videoSource; _videoSource.NewFrame += CaptureVideo_Frame; _videoSource.Start(); }