private async static void TestVideoCapture() { string outputFolder = @"c:\test"; VideoCaptureCore capture = new VideoCaptureCore(); capture.Video_CaptureDevice = new VideoCaptureSource(capture.Video_CaptureDevices[0].Name); capture.Video_CaptureDevice.Format_UseBest = true; capture.Audio_CaptureDevice = new AudioCaptureSource(capture.Audio_CaptureDevices[0].Name); capture.Audio_CaptureDevice.Format_UseBest = true; capture.Video_Renderer.VideoRenderer = VideoRendererMode.None; // Disable video renderer capture.Mode = VideoCaptureMode.VideoCapture; capture.Output_Format = new MP4Output(); capture.SeparateCapture_AutostartCapture = false; capture.SeparateCapture_Mode = SeparateCaptureMode.Normal; capture.SeparateCapture_Enabled = true; string fileName = Path.Combine(outputFolder, GetOutputFileName(DateTime.Now)); capture.Output_Filename = fileName; await capture.StartAsync(); Console.WriteLine("Started capture."); if (await capture.SeparateCapture_StartAsync(fileName)) { Console.WriteLine("Start capture to: {0}", fileName); while (true) { for (int i = 0; i < 50; ++i) { Application.DoEvents(); Thread.Sleep(100); } fileName = Path.Combine(outputFolder, GetOutputFileName(DateTime.Now)); if (await capture.SeparateCapture_ChangeFilenameOnTheFlyAsync(fileName)) { Console.WriteLine("Changed output file to: {0}", fileName); } else { Console.WriteLine("Failed changing output file."); } } } } private static string GetOutputFileName(DateTime now) { return string.Format("{0}.mp4", now.ToString("yyyy-MM-dd_HHmmss")); }