Skip to main content

How to start capture without stopping preview (separate capture) in a console application?

Products: Video Capture SDK .Net

Sample code

C# sample code that demonstrates usage:

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"));
}

Required redists


Visit our GitHub page to get more code samples.