예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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();
        }