Может быть, кто-то может помочь со следующей проблемой.Мне нужно написать просмотрщик для камер Basler Usb, который сможет записывать видео в avi-файл с использованием выбранного кодека.Я использую пилон SDK для создания приложения.И я столкнулся со следующей проблемой - объект AviWriter, предоставляемый библиотеками pylon, не записывает фреймы в avi-файл так же эффективно, как это делает стандартный просмотрщик pylon.Для тестирования я выбрал следующий пример кода, который был снабжен pylon SDK:
internal static void Main()
{
int exitCode = 0;
int counter = 0;
try
{
using (Camera camera = new Camera())
{
camera.Open();
camera.Parameters[PLCameraInstance.MaxNumBuffer].SetValue(1000);
using (AviVideoWriter writer = new AviVideoWriter())
{
byte[] ar = { };
writer.Create("test.avi", 35, PixelType.BGR8packed, 1280, 960, ImageOrientation.BottomUp, "msvc", 100, 0, 1, ref ar, true, (IntPtr)null);
camera.StreamGrabber.Start(1000); //1000 frames are to be grabbed
Console.WriteLine("Please wait. Images are being grabbed.");
while (camera.StreamGrabber.IsGrabbing)
{
IGrabResult grabResult = camera.StreamGrabber.RetrieveResult(5000, TimeoutHandling.ThrowException);
if (grabResult.GrabSucceeded)
{
++counter;
writer.Write(grabResult);
Console.WriteLine("------->images written" + counter);
Console.WriteLine("------->empty buffers" + camera.Parameters[PLCameraInstance.NumEmptyBuffers].GetValue()); //how many empty buffers left
grabResult.Dispose();
}
else
{
Console.WriteLine("Error: {0} {1}", grabResult.ErrorCode, grabResult.ErrorDescription);
}
}
camera.StreamGrabber.Stop();
writer.Close();
}
camera.Close();
}
}
catch (Exception e)
{
Console.Error.WriteLine("Exception: {0}", e.Message);
exitCode = 1;
}
finally
{
Console.Error.WriteLine("\nPress enter to exit.");
Console.ReadLine();
}
Environment.Exit(exitCode);
}
Проблема заключается в следующем.При прочих равных условиях (кодек, разрешение) стандартное приложение pylon записывает кадры в avi-файл в 1,5-2 раза эффективнее, чем AviWriter в образце.Я имею в виду, что в случае стандартного приложения pylon камера может писать без заполнения буфера вообще. Буфер камеры в примере будет заполнен довольно быстро.Мой вопрос: есть ли способы ускорить добавление кадров в файл avi с помощью объекта AviWriter из pylon SDK?Может, кто-то сталкивался с этой проблемой и решил ее как-нибудь?Кстати, я также протестировал пример кода C ++, и проблема остается.