1、声明必要的变量
hWndC : THandle;
CapturingAVI : bool;
2、定义消息
const WM_CAP_START = WM_USER;
const WM_CAP_STOP = WM_CAP_START + 68;
const WM_CAP_DRIVER_CONNECT = WM_CAP_START + 10;
const WM_CAP_DRIVER_DISCONNECT = WM_CAP_START + 11;
const WM_CAP_SAVEDIB = WM_CAP_START + 25;
const WM_CAP_GRAB_FRAME = WM_CAP_START + 60;
const WM_CAP_SEQUENCE = WM_CAP_START + 62;
const WM_CAP_FILE_SET_CAPTURE_FILEA = WM_CAP_START + 20;
const WM_CAP_SEQUENCE_NOFILE =WM_CAP_START+ 63 ;
const WM_CAP_SET_OVERLAY =WM_CAP_START+ 51 ;
const WM_CAP_SET_PREVIEW =WM_CAP_START+ 50 ;
const WM_CAP_SET_CALLBACK_VIDEOSTREAM = WM_CAP_START +6;
const WM_CAP_SET_CALLBACK_ERROR=WM_CAP_START +2;
const WM_CAP_SET_CALLBACK_STATUSA= WM_CAP_START +3;
const WM_CAP_SET_CALLBACK_FRAME= WM_CAP_START +5;
const WM_CAP_SET_SCALE=WM_CAP_START+ 53 ;
const WM_CAP_SET_PREVIEWRATE=WM_CAP_START+ 52 ;
3、声明函数
function capCreateCaptureWindowA(lpszWindowName : PCHAR;
dwStyle : longint;
x : integer;
y : integer;
nWidth : integer;
nHeight : integer;
ParentWin : HWND;
nId : integer): HWND;
STDCALL EXTERNAL 'AVICAP32.DLL';
4、FormCreate
CapturingAVI := false;
hWndC := 0;
SaveDialog1.Options :=
[ofHideReadOnly, ofNoChangeDir, ofPathMustExist]
5、开始显示OpenVideo
hWndC := capCreateCaptureWindowA('My Own Capture Window',
WS_CHILD or WS_VISIBLE ,
Panel1.Left,
Panel1.Top,
Panel1.Width,
Panel1.Height,
Form1.Handle,
0);
if hWndC <> 0 then
SendMessage(hWndC, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, 0);
SendMessage(hWndC, WM_CAP_SET_CALLBACK_ERROR, 0, 0);
SendMessage(hWndC, WM_CAP_SET_CALLBACK_STATUSA, 0, 0);
SendMessage(hWndC, WM_CAP_DRIVER_CONNECT, 0, 0);
SendMessage(hWndC, WM_CAP_SET_SCALE, 1, 0);
SendMessage(hWndC, WM_CAP_SET_PREVIEWRATE, 66, 0);
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
OpenVideo.Enabled :=false;
6、CloseVideo
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC := 0;
OpenVideo.Enabled :=true;
end;
7、SaveBMP
if hWndC <> 0 then begin
SaveDialog1.DefaultExt := 'bmp';
SaveDialog1.Filter := 'Bitmap files (*.bmp)|*.bmp';
if SaveDialog1.Execute then
SendMessage(hWndC,
WM_CAP_SAVEDIB,
0,
longint(pchar(SaveDialog1.FileName)));
end;
8、StartAVI
if hWndC <> 0 then begin
SaveDialog1.DefaultExt := 'avi';
SaveDialog1.Filter := 'AVI files (*.avi)|*.avi';
if SaveDialog1.Execute then begin
CapturingAVI := true;
SendMessage(hWndC,
WM_CAP_FILE_SET_CAPTURE_FILEA,
0,
Longint(pchar(SaveDialog1.FileName)));
SendMessage(hWndC, WM_CAP_SEQUENCE, 0, 0);
end;
end;
9、StopAVI
if hWndC <> 0 then begin
SendMessage(hWndC, WM_CAP_STOP, 0, 0);
CapturingAVI := false;
end;
10、FormClose
CloseVideo;
注意上面的前提是需要安装摄像头的驱动程序。
http://www.blogjava.net/badboyryan
分享到:
相关推荐
作者:万重。本源码介绍了如何在DELPHI下使用微软的AVICAP32.DLL文件,实现对摄像头的操控,发挥你的联盟才智,或许可实现实现一个视频聊天程序。
[DllImport("avicap32.dll")]//包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一个高级接口 public static extern IntPtr capCreateCaptureWindow(string lpszWindowName, int dwStyle, ...
c# 利用avicap32.dll摄像头截图
基于avicap32.dll调用摄像头录制视频 实现监控功能,ffmpeg进行压缩,完整可运行
C#摄像头 拍照程序 不是用 avicap32.dll 使用的是 第三方类库 可以选择 摄像头 可以正常使用
C#调用系统avicap32.dll避免绿屏摄像头代码,OpenCapture(Panel panel)打开摄像头方法,Stop()停止摄像头方法,截图方法PicCut()
avicap32.dll是Windows API应用程序接口相关模块,用于对摄像头和其它视频硬件进行AⅥ电影和视频的截取
一个打开关闭摄像头的类(avicap32.dll)
里面有抓拍图,录像,还有ROI区域设置等高级功能。在XP下完美运行。在WIN7下,高清的摄像头不行。普通的清的可以。应该是摄像头本身的驱动问题。用的是 aviCAP32.dll编程方法。DevComponents.DotNetBar2.dll是一个...
delphi avicap32.dll dll文件
使用 windows 的 avicap32.dll 库实现视频通讯的源代码
无驱摄像头黑屏问题解决办法,QQ中使用无驱动摄像头时,出现黑屏,无图像,轻松解决
avicap32.dll
C# 基于avicap32.dll下的视频采集,拍照,录像,是学习使用摄像头的好源码 。
在Delphi程序中操作摄像头.通过调用API函数完成打开、摄像、拍照等功能。
VB.NET要实现照相功能,有两种方法:一个是调用windows的API函数avicap32.dll实现照相功能,另一个就是采用第三方程序实现照相功能。
WINDOWS文件AVICAP.DLL
VB.NET摄像头捕获,使用XP下的avicap32.dll和user32.dll,代码精简,功能强大--- 为拍照按钮设置了快捷键F4 ...
AForge.Video.DirectShow.dll AForge.Video.DirectShow.dll AForge.Video.DirectShow.dll AForge.Video.DirectShow.dll AForge.Video.DirectShow.dll AForge.Video.DirectShow.dll AForge.Video.DirectShow.dll ...
使用Delphi进行摄像头捕捉的控件,使用avicap32.d