📄 unit5.~pas
字号:
unit Unit5;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit2, VFW, Unit1, IniFiles;
type
TForm4 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
a1,a2,a3,a4 : DWORD;
a5 : POINTER;
avisi : TAVICOMPRESSOPTIONS;
procedure StarAVi(FileName:String);
procedure EndAVI();
procedure ChooseAVI();
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
procedure TForm4.StarAVi(FileName:String);
Var info: TMV_IMAGEINFO;
i : UINT;
bOpen : boolean;
val :integer;
begin
if Form1.bCompress = FALSE then begin
MV_AVIFileInit(541215044, 25);
MV_SetDeviceParameter( Form1.m_hDev[Form1.m_Current], SET_GARBIMAGEINFO, DWORD(@info) ); // 得到当前的图像的信息
Form1.m_pImageInfo := AllocMem(sizeof( BITMAPINFO ) +(256 * sizeof( RGBQUAD )) );
if Form1.m_pImageInfo = NIL Then
Exit ;
Form1.m_pImageInfo.bmiHeader.biSize := sizeof( BITMAPINFOHEADER );
Form1.m_pImageInfo.bmiHeader.biWidth := info.Width;
Form1.m_pImageInfo.bmiHeader.biHeight := info.Heigth;
Form1.m_pImageInfo.bmiHeader.biPlanes := 1;
Form1.m_pImageInfo.bmiHeader.biBitCount := info.nColor;
Form1.m_pImageInfo.bmiHeader.biCompression := BI_RGB;
Form1.m_pImageInfo.bmiHeader.biSizeImage := info.Length;
Form1.m_pImageInfo.bmiHeader.biXPelsPerMeter := 0;
Form1.m_pImageInfo.bmiHeader.biYPelsPerMeter := 0;
if info.nColor <=8 Then begin
Form1.m_pImageInfo.bmiHeader.biClrUsed := 256;
Form1.m_pImageInfo.bmiHeader.biClrImportant := 256;
end
else if info.nColor >8 Then begin
Form1.m_pImageInfo.bmiHeader.biClrUsed := 0;
Form1.m_pImageInfo.bmiHeader.biClrImportant := 0;
end;
if info.nColor = 8 Then begin
for i := 0 to 255 do
Form1.m_pImageInfo.bmiColors[i].rgbBlue := BYTE(i);
Form1.m_pImageInfo.bmiColors[i].rgbGreen := BYTE(i);
Form1.m_pImageInfo.bmiColors[i].rgbRed := BYTE(i);
Form1.m_pImageInfo.bmiColors[i].rgbReserved := 0;
end;
if Form1.IsSave = FALSE THEN begin
bOpen := MV_AVIFileOpen(0, pchar(FileName), Form1.m_pImageInfo, 1, true, @avisi);
a1 := avisi.fccHandler;
a2 := avisi.cbParms;
a3 := avisi.dwQuality;
a4 := avisi.dwBytesPerSecond;
a5 := avisi.lpParms;
Form1.IsSave := TRUE;
end
else if Form1.IsSave = TRUE then begin
// avisi.cbParms := a2;
avisi.fccHandler := a1;
// avisi.dwBytesPerSecond := a4;
// avisi.dwQuality := a3;
// avisi.lpParms := a5;
bOpen := MV_AVIFileOpen(0, pchar(FileName), Form1.m_pImageInfo, 1, false, @avisi);
end;
if bOpen = TRUE then begin
MV_SetDeviceParameter( Form1.m_hDev[Form1.m_Current], WORK_UPDOWN, 1 );
MV_SetDeviceParameter( Form1.m_hDev[Form1.m_Current], DISP_FLIP, 1 );
Form1.bCompress :=TRUE;
end
else if bOpen = FALSE then begin
MV_AVIFileFini();
Form1.bCompress :=FALSE;
end;
end;
end;
procedure TForm4.EndAVI();
begin
if Form1.bCompress = TRUE then begin
MV_SetDeviceParameter( Form1.m_hDev[Form1.m_Current], WORK_UPDOWN, 0 );
MV_SetDeviceParameter( Form1.m_hDev[Form1.m_Current], DISP_FLIP, 0 );
Sleep(100);
MV_AVIFileFini();
Form1.bCompress :=FALSE;
end;
end;
procedure TForm4.ChooseAVI();
var
info: TMV_IMAGEINFO;
i : UINT;
begin
MV_AVIFileInit(541215044, 25);
MV_SetDeviceParameter( Form1.m_hDev[Form1.m_Current], SET_GARBIMAGEINFO, DWORD(@info) ); // 得到当前的图像的信息
Form1.m_pImageInfo := AllocMem(sizeof( BITMAPINFO ) +(256 * sizeof( RGBQUAD )) );
if Form1.m_pImageInfo = NIL Then
Exit ;
Form1.m_pImageInfo.bmiHeader.biSize := sizeof( BITMAPINFOHEADER );
Form1.m_pImageInfo.bmiHeader.biWidth := info.Width;
Form1.m_pImageInfo.bmiHeader.biHeight := info.Heigth;
Form1.m_pImageInfo.bmiHeader.biPlanes := 1;
Form1.m_pImageInfo.bmiHeader.biBitCount := info.nColor;
Form1.m_pImageInfo.bmiHeader.biCompression := BI_RGB;
Form1.m_pImageInfo.bmiHeader.biSizeImage := info.Length;
Form1.m_pImageInfo.bmiHeader.biXPelsPerMeter := 0;
Form1.m_pImageInfo.bmiHeader.biYPelsPerMeter := 0;
if info.nColor <=8 Then begin
Form1.m_pImageInfo.bmiHeader.biClrUsed := 256;
Form1.m_pImageInfo.bmiHeader.biClrImportant := 256;
end
else if info.nColor >8 Then begin
Form1.m_pImageInfo.bmiHeader.biClrUsed := 0;
Form1.m_pImageInfo.bmiHeader.biClrImportant := 0;
end;
if info.nColor = 8 Then begin
for i := 0 to 255 do
Form1.m_pImageInfo.bmiColors[i].rgbBlue := BYTE(i);
Form1.m_pImageInfo.bmiColors[i].rgbGreen := BYTE(i);
Form1.m_pImageInfo.bmiColors[i].rgbRed := BYTE(i);
Form1.m_pImageInfo.bmiColors[i].rgbReserved := 0;
end;
MV_AVIFileOpen(0, 'Capture.avi', Form1.m_pImageInfo, 1, true, @avisi);
Form1.faceini := TIniFile.Create('c:\mvavi.ini');
Form1.faceIni.WriteInteger('mvavi', 'fccHandler', avisi.fccHandler);
Form1.faceIni.WriteBool('mvavi', 'IsSave', TRUE);
MV_AVIFileFini();
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -