internal static void Main() { // The exit code of the sample application. int exitCode = 0; // Check if VideoWriter is supported and all required DLLs are available. if (!VideoWriter.IsSupported) { Console.WriteLine("VideoWriter is not supported at the moment. Please install the pylon Supplementary Package for MPEG-4 which is available on the Basler website."); // Return with error code 1. Environment.Exit(1); } try { // Create a camera object that selects the first camera device found. // More constructors are available for selecting a specific camera device. using (Camera camera = new Camera()) { // Open the connection to the camera device. camera.Open(); // Print the model name of the camera. Console.WriteLine("Using camera {0}.", camera.CameraInfo[CameraInfoKey.ModelName]); // Optional: Depending on your camera or computer, you may not be able to save // a video without losing frames. Therefore, we limit the resolution: camera.Parameters[PLCamera.Width].SetValue(640, IntegerValueCorrection.Nearest); camera.Parameters[PLCamera.Height].SetValue(480, IntegerValueCorrection.Nearest); camera.Parameters[PLCamera.PixelFormat].TrySetValue(PLCamera.PixelFormat.Mono8); // We also increase the number of memory buffers to be used while grabbing. camera.Parameters[PLCameraInstance.MaxNumBuffer].SetValue(20); // Create and open the VideoWriter. using (VideoWriter writer = new VideoWriter()) { // Set a quality of 90 for the video (value range is 1 to 100). writer.Parameters[PLVideoWriter.Quality].SetValue(90); // This will create a compressed video file. writer.Create(videoFilename, 25, camera); // Start grabbing. camera.StreamGrabber.Start(countOfImagesToGrab); Console.WriteLine("Please wait. Images are being grabbed."); while (camera.StreamGrabber.IsGrabbing) { // Wait for an image and then retrieve it. A timeout of 5000 ms is used. IGrabResult grabResult = camera.StreamGrabber.RetrieveResult(5000, TimeoutHandling.ThrowException); using (grabResult) { // Image grabbed successfully? if (grabResult.GrabSucceeded) { // Write the image to the video file. writer.Write(grabResult); } else { Console.WriteLine("Error: {0} {1}", grabResult.ErrorCode, grabResult.ErrorDescription); } } } // Stop grabbing. camera.StreamGrabber.Stop(); // Close the video file. writer.Close(); } // Close the connection to the camera device. camera.Close(); } } catch (Exception e) { // Error handling. Console.Error.WriteLine("Exception: {0}", e.Message); exitCode = 1; } finally { // Comment the following two lines to disable waiting on exit. Console.Error.WriteLine("\nPress enter to exit."); Console.ReadLine(); } Environment.Exit(exitCode); }