`

Delphi利用windows自带的AVICAP32.DLL操作摄像头保存图片以及录像功能

阅读更多
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





坏男孩 2007-06-29 15:15 发表评论
分享到:
评论

相关推荐

    Delphi摄像头控制,基于AVICAP32.DLL.rar

    作者:万重。本源码介绍了如何在DELPHI下使用微软的AVICAP32.DLL文件,实现对摄像头的操控,发挥你的联盟才智,或许可实现实现一个视频聊天程序。

    C#调用avicap32.dll摄像头录制视频 ffmpeg压缩

    2. **avicap32.dll**:这是Windows操作系统自带的一个用于捕捉视频的动态链接库。它提供了访问摄像头和捕获视频帧的能力。在C#中,可以使用P/Invoke(Platform Invoke)技术来调用这个DLL中的函数,实现对摄像头的...

    C#摄像头程序例子非使用avicap32.dll

    `avicap32.dll`是早期Windows系统中用于摄像头操作的一个组件,但它并不支持所有的现代功能,如高清视频捕获、硬件加速等。此外,它与旧版Windows兼容良好,但在新版本中可能存在兼容性问题,或者在跨平台应用中不...

    c# avicap32.dll 摄像头截图

    本主题将深入探讨如何利用C#结合avicap32.dll库实现摄像头截图功能。avicap32.dll是Windows操作系统内的一部分,它提供了对视频捕捉设备(如摄像头)的基本访问和支持。这个功能对于开发涉及图像处理、视频录制或...

    通过avicap32.dll操作视频的类(C#)

    [DllImport("avicap32.dll")]//包含了执行视频捕获的函数,它给AVI文件I/O和视频、音频设备驱动程序提供一个高级接口 public static extern IntPtr capCreateCaptureWindow(string lpszWindowName, int dwStyle, ...

    vb.net2008_USB_CAM_AviCap32.dll.rar_For the Record_ROI_record we

    里面有抓拍图,录像,还有ROI区域设置等高级功能。在XP下完美运行。在WIN7下,高清的摄像头不行。普通的清的可以。应该是摄像头本身的驱动问题。用的是 aviCAP32.dll编程方法。DevComponents.DotNetBar2.dll是一个...

    delphi avicap32.dll dll文件

    标题中的"delphi avicap32.dll dll文件"指的是在Delphi编程环境中使用的动态链接库(DLL)文件,avicap32.dll。这个文件是Windows操作系统中用于视频捕获和处理的核心组件,通常用于开发涉及到摄像头或者视频输入...

    avicap32.dll

    **avicap32.dll** 是一个重要的动态链接库(DLL)文件,在Windows操作系统中发挥着核心功能。这个文件属于Windows API(应用程序接口)的一部分,它为开发者提供了与摄像头和其他视频捕获设备交互的能力,以便进行...

    一个打开关闭摄像头的类(avicap32.dll)

    本文将深入解析一个利用 `avicap32.dll` 动态链接库实现摄像头打开与关闭功能的类,并详细阐述其工作原理和关键API调用。 #### avicap32.dll简介 `avicap32.dll` 是Microsoft提供的动态链接库,用于Windows平台上...

    使用avicap32.dll实现的视频通讯

    本文将详细讲解如何利用Windows系统自带的avicap32.dll库来实现视频通讯功能。 avicap32.dll是Windows操作系统提供的一款核心组件,主要用于支持视频捕获和处理。它为开发者提供了丰富的API接口,可以方便地进行...

    C#调用系统avicap32.dll避免绿屏摄像头类

    C#调用系统avicap32.dll避免绿屏摄像头代码,OpenCapture(Panel panel)打开摄像头方法,Stop()停止摄像头方法,截图方法PicCut()

    C#调用AForge、avicap32、platedsp方式打开摄像头

    本篇文章将详细介绍如何在C#环境中,利用AForge.NET框架、avicap32.dll以及platedsp.dll来调用和操作摄像头。 首先,让我们从AForge.NET开始。AForge.NET是一个开源的.NET框架,专门用于计算机视觉和图像处理。它...

    VB.NET调用avicap32.dll实现照相功能

    1. avicap32.dll的使用:avicap32.dll是一个Windows API函数库,提供了捕获视频和图片的功能。VB.NET语言可以通过调用该库的函数来实现照相功能。 2. 照相功能的实现:VB.NET语言可以通过调用avicap32.dll实现照相...

    C# 基于avicap32.dll下的视频采集

    avicap32.dll是Windows操作系统自带的一个动态链接库,它提供了对视频捕捉设备(如内置或外接摄像头)的访问接口。 首先,我们要了解avicap32.dll的作用。这个库是Microsoft为开发者提供的一个API,用于视频捕获和...

    无驱摄像头黑屏问题解决办法

    5. **操作系统问题**:系统更新或错误可能导致摄像头功能受到影响。 针对以上问题,我们可以采取以下步骤来解决无驱摄像头黑屏问题: 1. **检查硬件**:确保摄像头已正确插入并牢固固定,检查电源是否充足。如果...

    avicap.dll常用函数详解

    **avicap.dll是Windows操作系统中的一个动态链接库(DLL)文件,主要负责视频捕捉和处理功能。对于从事视频采集或多媒体应用开发的程序员来说,理解并掌握avicap.dll的常用函数至关重要。以下是对avicap.dll中一些...

    SXT.rar_DELPHI 摄像头_avicap32

    avicap32.dll是Windows操作系统自带的一个核心组件,它为开发者提供了访问摄像头硬件的能力。通过这个库,我们可以实现各种功能,如预览视频、录制视频、抓取静态图像等。在Delphi中,我们可以创建一个自定义控件...

    C#读取摄像头采集图片avicap

    首先,我们需要在C#项目中引用avicap.dll,这通常可以通过以下步骤完成: 1. 将avicap32.dll文件复制到项目目录。 2. 右键点击项目,选择“添加引用”。 3. 在“浏览”选项卡中找到并添加avicap32.dll。 接下来,...

    avicap32.dll.mui

    avicap32.dll

    C# 摄像头 照相 avicap32 User32

    avicap32.dll是Windows系统自带的一个用于视频捕获的API库,它提供了与硬件设备交互的能力,包括摄像头的打开、关闭、预览以及捕获静态图像等操作。而User32.dll则是Windows API的核心部分,主要用于窗口管理和用户...

Global site tag (gtag.js) - Google Analytics