public static void CaptureScreen(int?index = null) { lock (_lock) { VideoSource?.SignalToStop(); ScreenIndex = index ?? ScreenIndex + 1; CameraIndex = -1; if (ScreenIndex >= Screen.AllScreens.Length) { ScreenIndex = 0; } VideoSource = new ScreenCaptureStream(Screen.AllScreens[ScreenIndex].Bounds); VideoSource.NewFrame += NewFrameHandler; VideoSource.Start(); VideoSourceChanged?.Invoke(); } }
public static void CaptureCamera(int?index = null) { lock (_lock) { VideoSource?.SignalToStop(); CameraIndex = index ?? CameraIndex + 1; ScreenIndex = -1; var videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); if (CameraIndex >= videoDevices.Count) { CameraIndex = 0; } VideoSource = new VideoCaptureDevice(videoDevices[CameraIndex].MonikerString); VideoSource.NewFrame += NewFrameHandler; VideoSource.Start(); VideoSourceChanged?.Invoke(); } }