public bool Start(int DeviceNo) { try { FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); MonikerString = videoDevices[DeviceNo].MonikerString; _videoSource = new VideoCaptureDevice(MonikerString); VideoSource = new MyAsyncVideoSource(_videoSource, true); //SetMaxResolution(); VideoSource.NewFrame += NewFrame; VideoSource.Start(); FrameNumber = 0; // measure range int min,max,step,def; CameraControlFlags ccflags; VideoProcAmpFlags vpflags; _videoSource.GetCameraPropertyRange(CameraControlProperty.Exposure, out min, out max, out step, out def, out ccflags); ExposureRange = String.Format("{0} to {1})", min, max, step); _videoSource.GetVideoPropertyRange(VideoProcAmpProperty.Brightness, out min, out max, out step, out def, out vpflags); BrightnessRange = String.Format("{0} to {1})", min, max, step); timer.Elapsed += delegate { FPSReceived = VideoSource.FramesReceived; FPSProcessed = VideoSource.FramesProcessed; }; timer.Start(); return VideoSource.IsRunning; } catch { return false; } }