Я пытаюсь создать приложение для записи на рабочем столе. Когда я записываю полный экран, программа работает как положено, но в некоторых случаях, когда я выбираю конкретную область на рабочем столе для записи, я получаю ошибку по адресу: int result = AVIStreamSetFormat(psCompress, 0, ref bi, (Int32)bi.biSize);
Error in VideoStreamSetFormat: -2147205016
.
Я использую кодек Xvid MPEG-4 для создания видео в формате AVI. Я думаю, что проблема может заключаться в том, что кодек Xvid MPEG-4 не поддерживает определенные размеры изображения (ширину и высоту). Я не уверен и застрял в этой проблеме, и я спрашиваю, может ли кто-нибудь помочь мне понять, почему это не работает.
private void SetFormat(IntPtr psCompress)
{
BITMAPINFOHEADER bi = new BITMAPINFOHEADER();
bi.biSize = (uint)Marshal.SizeOf(bi);
bi.biWidth = (Int32)_width;
bi.biHeight = (Int32)_height;
bi.biPlanes = 1;
bi.biBitCount = 24;
bi.biCompression = 0; // 0 = BI_RGB
bi.biSizeImage = _stride * _height;
int result = AVIStreamSetFormat(psCompress, 0, ref bi, (Int32)bi.biSize);
if (result != 0)
{
throw new Exception("Error in VideoStreamSetFormat: " + result.ToString());
}
}