1

我正在尝试创建桌面录制应用程序。当我录制全屏时,程序会按预期工作,但在某些情况下,当我从桌面选择特定区域进行录制时,会出现以下错误: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());
        }
    }
4

2 回答 2

3

我发现了问题所在。从桌面上的选定区域截取屏幕截图时,我必须确保高度和宽度可被 2 整除。Xvid MPEG-4 编解码器似乎不接受任何图像大小。

于 2012-05-31T16:19:44.937 回答
0

我有同样的问题。就我而言,我将比例和速率设置为 0。请确保在调用该函数之前正确指定 avi 的速度。

于 2012-09-20T13:22:27.463 回答