请教用摄像头摄取录象的程序(200分)

  • 主题发起人 主题发起人 xinyan2004
  • 开始时间 开始时间
X

xinyan2004

Unregistered / Unconfirmed
GUEST, unregistred user!
我在大富翁里搜索到很多有关的程序,可不知是不是vfw.pas与这些程序不匹配还是别的原因,调试都不成功.请问谁有完整的程序,包括vfw.pas,而且经调试可用的,
 
我刚刚做了一个会员卡系统,里面取会员卡的相片就用了这个功能,你到
http://www.2ccc.com上面去下,有源码和控件包,很简单的
 
呵呵,可与我联系,QQ87797301
 
to marco_hsu
没找到源码下载地址,谢谢
 
这段代码是可以用的:
unit Unit1;

interface

uses
Windows, Messages, Forms, Dialogs, ExtCtrls, StdCtrls, Controls, Classes;

type
TForm1 = class(TForm)
Panel1: TPanel;
SaveDialog1: TSaveDialog;
Panel2: TPanel;
OpenVideo: TButton;
CloseVideo: TButton;
SaveBMP: TButton;
StartAVI: TButton;
StopAVI: TButton;
procedure FormCreate(Sender: TObject);
procedure OpenVideoClick(Sender: TObject);
procedure CloseVideoClick(Sender: TObject);
procedure SaveBMPClick(Sender: TObject);
procedure StartAVIClick(Sender: TObject);
procedure StopAVIClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
hWndC: THandle;
CapturingAVI: Bool; //是否捕捉视频
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

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 ;
function capCreateCaptureWindowA(lpszWindowName: PCHAR; dwStyle: longint; x, y, nWidth, nHeight: integer; ParentWin: HWND; nId: integer): HWND;
STDCALL EXTERNAL 'AVICAP32.DLL';

procedure TForm1.FormCreate(Sender: TObject);
begin

hWndC := 0;
CapturingAVI := False;
SaveDialog1.Options := [ofHideReadOnly, ofNoChangeDir, ofPathMustExist]

end;

procedure TForm1.OpenVideoClick(Sender: TObject);
begin

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_SEQUENCE_NOFILE, 1, 0);
SendMessage(hWndC, WM_CAP_SET_OVERLAY, 1, 0);
SendMessage(hWndC, WM_CAP_SET_PREVIEW, 1, 0);
OpenVideo.Enabled := False;

end;

procedure TForm1.CloseVideoClick(Sender: TObject);
begin

if hWndC <> 0 then
begin

SendMessage(hWndC, WM_CAP_DRIVER_DISCONNECT, 0, 0);
hWndC := 0;
OpenVideo.Enabled := True;

end;

end;

procedure TForm1.SaveBMPClick(Sender: TObject);
begin

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;

end;

procedure TForm1.StartAVIClick(Sender: TObject);
begin

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;

end;

procedure TForm1.StopAVIClick(Sender: TObject);
begin

if hWndC <> 0 then
begin

SendMessage(hWndC, WM_CAP_STOP, 0, 0);
CapturingAVI := False;

end;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseVideoClick(Sender);
end;

end.
 
yongtai:谢谢你提供的代码,不过你的代码好象没有压缩部分,17秒的录象用500M.有时录了几秒就停了
 
17秒的录象用500M啊[:D]
 
压缩要单独使用压缩库。
比如XVID的。 XVID是开源代码。你可以去网上下载,编译成DLL使用
 
嘿嘿,借花献佛,留下email
 
xinyan2004@126.com
 
用TVIDEOGRABBER控件,可以压缩。

是要钱的控件,不过听说流传得有免费的:)
你找找,找到了共享一下。
 
看看我得迷你摄像机,qq:171833017,www.ysza.com
原创作品里,4 迷你摄像机 用摄像头拍摄大头贴的软件。对摄像头捕捉到的视频,进行录像、捕捉单幅图片。录像支持mpeg4格式压缩(无需每次设置压缩格式),支持录像为gif格式。支持录制正在播放的声音、麦克风。支持捕捉区域选择,支持像框。使用本软件,您可以拍出的可爱照片制作个人相册,给朋友做贺卡,可以制作动画,记录小宝宝的成长足迹
http://www.ysza.com/download/HsjCamera.exe
 
一生中最爱:我更想自己编程
 
想把视频中的每一帧保存成一个图片,如果保存在硬盘中太慢,现在想保存为jpg流,
stream:=TMemoryStream.Create;
ImageEnViewview.IO.SaveToStreamJpeg(stream);
stream.Position:=0;
fjpg:=TJPEGImage.Create();
fjpg.LoadFromStream(stream);
jpegarray:=fjpg;
i:=i+1;

但在读取的时候出现错误。。。。帮助看一下。。
 
关注,我也想要这个功能.希望局誉网内都能看的同时能录制......网上没下载到
 
迷你摄像机源代码对外出售,qq:171833017
 
哪位有源程序的话,能不能也发给我一份啊?
yfsz6@163.com,谢谢
 
一生中最爱:你的源码多少钱?
 
强烈推荐TVIDEOGRABBER控件,可以压缩,还可以广播,播放、、、
 
2000块,需要的联系我,全部源码,qq:171833017
 
后退
顶部