有一张H.264的视频压缩卡,
开始录象函数StartVideoCapture(ChannelHandle[i]);ChannelHandle[i]为通道句柄
停止录象函数StopVideoCapture(ChannelHandle[i]);ChannelHandle[i]为通道句柄
正确调用时返回均为0,
请问怎么把录的内容保存为视频文件。
开始录象函数StartVideoCapture(ChannelHandle[i]);ChannelHandle[i]为通道句柄
停止录象函数StopVideoCapture(ChannelHandle[i]);ChannelHandle[i]为通道句柄
正确调用时返回均为0,
请问怎么把录的内容保存为视频文件。
解决方案 »
- 求一個手寫Tadoquery連接dbgrid的代碼___新手求助
- 我要生成0-23的5个随机数,5个数字不能相同,算法如何写,谢谢!
- Flash的使用?
- 怎么使TChart柱形的间隔变小些?
- IndyTCPServer的问题,在线等,急急急!!!
- 一个关于IE的问题,各位跟过的帮我看看..
- 伤心....刻苦学习中......
- 如何删除文本中的空行?
- delphi7里怎无法ctrl+z的???
- 一个很笨的问题
- 关于配置信息保存的问题,有没有更好的办法?
- 求助!!!!为何这里提示[Error] Unit1.pas(100): Undeclared identifier: 'Params'呢?急!谢谢!
procedure TALVideoForm.OpenVideoClick(Sender: TObject);
begin
hWndC := capCreateCaptureWindowA(
'My Own Capture Window',
WS_CHILD or WS_VISIBLE ,
Panel6.Left+Image1.Left,
Panel6.Top+Image1.Top,
Image1.Width,
Image1.Height,
ALVideoForm.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;
CloseVideo.Enabled :=True;
SaveBMP.Enabled :=True;
StartAVI.Enabled :=True;
end;
//开始录象并保存
procedure TALVideoForm.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;
....
private
hWndC : THandle;
CapturingAVI : bool;
....
implementationconst 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 : integer;
y : integer;
nWidth : integer;
nHeight : integer;
ParentWin : HWND;
nId : integer): HWND;
STDCALL EXTERNAL 'AVICAP32.DLL';