本人通过c#调用了avicap32.dll实现对摄像头的控制,包括了在窗体中显示实时图像,截图,录像等功能。但是遇到几个问题
1.实时显示图像时,图像时清晰的,但是进行录像时,实时显示的图像变成很多噪点,奇怪的是得到的录像视频文件中图像时清晰的。
2.录制的视频文件过大,需要进行压缩,想调用xvidcore.dll中的函数进行压缩,可是提示无法找到函数入口点。dll的函数说明是BITMAPINFO infodes; AviCreateFile("d:\aaa.avi",&infodes);
//BitmapInfo 位图信息
[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFO
{
public BITMAPINFOHEADER bmiHeader;
public int bmiColors;
}
public struct BITMAPINFOHEADER
{
public int biSize;
public int biWidth;
public int biHeight;
public short biPlanes;
public short biBitCount;
public int biCompression;
public int biSizeImage;
public int biXPelsPerMeter;
public int biYPelsPerMeter;
public int biClrUsed;
public int biClrImportant;
}
BITMAPINFO bit;
[DllImport("xvidcore.dll")]
public static extern bool AviCreateFile(string path, ref BITMAPINFO lParam);
AviCreateFile("d://" + System.DateTime.Now.ToString("yyyyMMddHHmmss") + ".avi", ref bit);