void StartRecord() { job = new ScreenCaptureJob(); System.Drawing.Size WorkingArea = SystemInformation.WorkingArea.Size; Rectangle captureRect = new Rectangle(0, 0, WorkingArea.Width, WorkingArea.Height); job.CaptureRectangle = captureRect; job.ShowFlashingBoundary = false; job.ShowCountdown = false; job.CaptureMouseCursor = false; job.OutputPath = @"C:\Users\Public\Videos"; job.ScreenCaptureVideoProfile.Quality = 95; var audioDevices = Microsoft.Expression.Encoder.Devices.EncoderDevices.FindDevices(Microsoft.Expression.Encoder.Devices.EncoderDeviceType.Audio); job.AddAudioDeviceSource(audioDevices.ElementAt(1)); Microsoft.Expression.Encoder.Profiles.ConstantBitrate b = new Microsoft.Expression.Encoder.Profiles.ConstantBitrate(135000); job.ScreenCaptureVideoProfile.Bitrate = b; job.ScreenCaptureVideoProfile.FrameRate = 25.0; job.Start(); }
private void InitializeScreenCaptureJob() { // ************************************************** System.Windows.Forms.Screen screen = System.Windows.Forms.Screen.AllScreens[0]; int width = (int)(screen.Bounds.Width * ScreenScalingFactor); int height = (int)(screen.Bounds.Height * ScreenScalingFactor); System.Drawing.Rectangle captureRectangle = new System.Drawing.Rectangle(x: 0, y: 0, width: width, height: height); // ************************************************** ScreenCaptureJob = new Microsoft.Expression.Encoder.ScreenCapture.ScreenCaptureJob(); // ************************************************** var audioDeviceSources = Microsoft.Expression.Encoder.Devices.EncoderDevices .FindDevices(Microsoft.Expression.Encoder.Devices.EncoderDeviceType.Audio); foreach (var currentAudioDeviceSource in audioDeviceSources) { string message = $"Name: { currentAudioDeviceSource.Name }\r\nCategory: { currentAudioDeviceSource.Category }\r\n Device Path: { currentAudioDeviceSource.DevicePath }"; //System.Windows.Forms.MessageBox.Show(message); if (string.Compare(currentAudioDeviceSource.Category.ToString(), "Capture", ignoreCase: true) == 0) { ScreenCaptureJob.AddAudioDeviceSource(source: currentAudioDeviceSource); } } // ************************************************** // Default Value: [false] ScreenCaptureJob.CaptureFollowCursor = false; // Default Value: [false] ScreenCaptureJob.CaptureLargeMouseCursor = false; // Default Value: [true] ScreenCaptureJob.CaptureLayeredWindow = true; // Default Value: [true] ScreenCaptureJob.CaptureMouseCursor = true; ScreenCaptureJob.CaptureRectangle = captureRectangle; System.TimeSpan maxDuration = new System.TimeSpan(hours: 2, minutes: 0, seconds: 0); // Default Value: [00:00:00] - Seconds //screenCaptureJob.Duration = maxDuration; ScreenCaptureJob.OutputError += ScreenCaptureJob_OutputError; //screenCaptureJob.OutputPath = ""; // Default: [""] string pathName = $"D:\\_TEMP\\CAPTURE_{ System.DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") }.mp4"; ScreenCaptureJob.OutputScreenCaptureFileName = pathName; // Default: [null] // Default Value: [192] Microsoft.Expression.Encoder.Profiles.Bitrate audioBitrate = new Microsoft.Expression.Encoder.Profiles.ConstantBitrate(bitrate: 192); // Default Value: [30000] Microsoft.Expression.Encoder.Profiles.Bitrate videoBitrate = new Microsoft.Expression.Encoder.Profiles.ConstantBitrate(bitrate: 30000); ScreenCaptureJob.ScreenCaptureAudioProfile.Bitrate = audioBitrate; // Default Value: [16] ScreenCaptureJob.ScreenCaptureAudioProfile.BitsPerSample = 16; // Default Value: [2] ScreenCaptureJob.ScreenCaptureAudioProfile.Channels = 2; // Default Value: [Wma] ScreenCaptureJob.ScreenCaptureAudioProfile.Codec = Microsoft.Expression.Encoder.Profiles.AudioCodec.Wma; bool isValid = ScreenCaptureJob.ScreenCaptureAudioProfile.IsValid; // Default: [48000] ScreenCaptureJob.ScreenCaptureAudioProfile.SamplesPerSecond = 48000; ScreenCaptureJob.ScreenCaptureCommandFinished += ScreenCaptureJob_ScreenCaptureCommandFinished; string pathNameTemp = ScreenCaptureJob.ScreenCaptureFileName; ScreenCaptureJob.ScreenCaptureFinished += ScreenCaptureJob_ScreenCaptureFinished; ScreenCaptureJob.ScreenCaptureStart += ScreenCaptureJob_ScreenCaptureStart; // Default Value: [] //screenCaptureJob.ScreenCaptureVideoProfile.AspectRatio = null; // Default Value: [true] ScreenCaptureJob.ScreenCaptureVideoProfile.AutoFit = true; ScreenCaptureJob.ScreenCaptureVideoProfile.Bitrate = videoBitrate; var currentVideoCodec = ScreenCaptureJob.ScreenCaptureVideoProfile.Codec; // Default Value: [false] ScreenCaptureJob.ScreenCaptureVideoProfile.Force16Pixels = true; // Default Value: [15] ScreenCaptureJob.ScreenCaptureVideoProfile.FrameRate = 15; // Default Value: [00:00:06] (Seconds) System.TimeSpan keyFrameDistance = new System.TimeSpan(hours: 0, minutes: 0, seconds: 6); ScreenCaptureJob.ScreenCaptureVideoProfile.KeyFrameDistance = keyFrameDistance; // Default Value: [0] ScreenCaptureJob.ScreenCaptureVideoProfile.NumberOfEncoderThreads = 0; // Default Value: [95] ScreenCaptureJob.ScreenCaptureVideoProfile.Quality = 95; // Default Value: [true] ScreenCaptureJob.ScreenCaptureVideoProfile.SeparateFilesPerStream = true; //System.Drawing.Size size = // new System.Drawing.Size(width: screen.Bounds.Width, height: screen.Bounds.Height); System.Drawing.Size size = new System.Drawing.Size(width: 320, height: 240); ScreenCaptureJob.ScreenCaptureVideoProfile.Size = size; // Default Value: [false] ScreenCaptureJob.ScreenCaptureVideoProfile.SmoothStreaming = false; // Default Value: [false] ScreenCaptureJob.ShowCountdown = true; // Default Value: [true] ScreenCaptureJob.ShowFlashingBoundary = false; //screenCaptureJob.VideoDeviceSource ScreenCaptureJob.WebcamError += ScreenCaptureJob_WebcamError; //ScreenCaptureJob.WebcamFileName //ScreenCaptureJob.WebcamVideoProfile }