VB程序VB代码摄像头视频图像的监控截图录像改进Word文档格式.docx
《VB程序VB代码摄像头视频图像的监控截图录像改进Word文档格式.docx》由会员分享,可在线阅读,更多相关《VB程序VB代码摄像头视频图像的监控截图录像改进Word文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
![VB程序VB代码摄像头视频图像的监控截图录像改进Word文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/1/deca3a87-79e5-45e3-b507-17621c939f7d/deca3a87-79e5-45e3-b507-17621c939f7d1.gif)
Check1:
在属性窗口将Index属性设置为0,将Style属性设置为1
Picture1:
不必设置任何属性
Timer1:
程序调试时要注意:
终止程序要用运行中的Form1窗口关闭。
不要使用VB主窗口的菜单命令或VB工具栏上的关闭按钮,这样无法关闭打开的视频窗口,导致VB无响应。
如果VB无响应,只有用系统任务管理器才能终止VB进程,调试过程中所做的修改将丢失。
本人原创,转载请注明来源:
PublicctCapWinAsLong,ctRecAsBoolean,ctDirAsString,ctFAsString,ctAutoSizeAsBoolean
DimctRefreshAsBoolean,ctConnectAsBoolean,ctAutoHideAsBoolean,IsFillScreenAsBoolean
PrivateDeclareFunctionGetCursorPosLib&
quot;
user32&
(lpPointAsPointAPI)AsLong
PrivateTypePointAPI
XAsLong:
YAsLong
EndType
PrivateDeclareFunctionSetWindowPosLib&
(ByValhwndAsLong,ByValhWndInsertAfterAsLong,ByValXAsLong,ByValYAsLong,ByValcXAsLong,ByValcYAsLong,ByValwFlagsAsLong)AsLong
ConstHWND_Top=0
hWndInsertAfter参数:
Z序列的顶部
ConstHWND_TopMost=-1
最前
ConstHWND_NoTopMost=-2
不在最前
ConstHWND_Bottom=1
位于底层
ConstSWP_NoSize=&
amp;
H1
wFlags参数
ConstSWP_NoMove=&
H2
ConstSWP_NoZorder=&
H4
ConstSWP_NoActivate=&
H10
ConstSWP_ShowWindow=&
H40
ConstSWP_HideWindow=&
H80
PrivateDeclareFunctionSendMessageLib&
Alias&
SendMessageA&
(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong
PrivateDeclareFunctionSendMessageLongLib&
(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsLong)AsLong
PrivateDeclareFunctionPostMessageLib&
PostMessageA&
(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,ByVallParamAsLong)AsLong
ConstWM_Close=&
PrivateDeclareFunctioncapGetDriverDescriptionALib&
avicap32.dll&
(ByValwDriverAsInteger,ByVallpszNameAsString,ByValcbNameAsLong,ByVallpszVerAsString,ByValcbVerAsLong)AsBoolean
PrivateDeclareFunctioncapCreateCaptureWindowLib&
capCreateCaptureWindowW&
(ByVallpszWindowNameAsString,ByValdwStyleAsLong,ByValXAsLong,ByValYAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhwndParentAsLong,ByValnIDAsLong)AsLong
ConstWS_Child=&
H40000000
ConstWS_Visible=&
H10000000
ConstWS_Caption=&
HC00000
ConstWS_ThickFrame=&
H40000
ConstGET_Frame=1084
ConstWM_User=&
H400
用户消息开始号,偏移地址:
1024
ConstWM_CAP_GET_CAPSTREAMPTR=WM_User+1
ConstWM_CAP_SET_CALLBACK_ERROR=WM_User+2
当出错回调函数
ConstWM_CAP_SET_CALLBACK_STATUS=WM_User+3
当状态(status)改变的时回调函数
ConstWM_CAP_SET_CALLBACK_YIELD=WM_User+4
在流捕获期间的回调函数
ConstWM_CAP_SET_CALLBACK_FRAME=WM_User+5
帧预览回调函数
ConstWM_CAP_SET_CALLBACK_VIDEOSTREAM=WM_User+6'
在流捕获期间,当一个新的视频缓存区可用的时候就调用它
ConstWM_CAP_SET_CALLBACK_WAVESTREAM=WM_User+7
在流捕获期间,当一个新的音频缓存区可用的时候就调用它
ConstWM_CAP_GET_USER_DATA=WM_User+8'
获取:
数据关联到一个捕捉窗口
ConstWM_CAP_SET_USER_DATA=WM_User+9'
设置:
ConstWM_CAP_DLG_VideoFormat=WM_User+41
对话框:
视频格式
ConstWM_CAP_DLG_VideoSource=WM_User+42
视频源,枚举视频源,控制颜色、对比度、饱和度的改变。
需视频驱动程序支技
ConstWM_CAP_DLG_VideoDisplay=WM_User+43
视频显示?
控制视频捕捉过程中视频在显示器上的显示。
对捕捉数据无影响,但会影响数了信号表达式
ConstWM_CAP_DLG_VideoCompression=WM_User+46'
视频压缩
PrivateEnumenWinSet
en_Copy=-1
es_Show=0
es_Hide
es_Close
es_Move
es_Size
EndEnum
捕捉文件和缓存
ConstWM_Cap_File_Set_File=WM_User+20'
设置当前的捕捉文件
ConstWM_Cap_File_Get_File=WM_User+21'
得到当前的捕捉文件
ConstWM_CAP_FILE_ALLOCATE=WM_User+22'
为捕捉文件预分配空间,从而可以减少被漏掉的帧
ConstWM_CAP_FILE_SaveAs=WM_User+23'
将捕捉文件保存为另一个用户指定的文件。
这个消息不会改变捕捉文件的名字和内容,
由于捕捉文件保留它最初的文件名,因此必须指定个新的文件的文件名来保存
ConstWM_CAP_FILE_SET_INFOCHUNK=WM_User+24'
可以把信息块例如文本或者自定义数据插入avi文件。
同样用这个消息也可以清除avi文件中的信息块
ConstWM_CAP_FILE_SaveDIB=WM_User+25'
把从帧缓存中复制出图像存为设备无关位图书馆(DIB),应用程序也可以使用这两个单帧捕捉消息来编辑帧序列,
或者创建一个慢速摄影序列
ConstWM_CAP_Edit_Copy=WM_User+30'
1054:
把缓存中图像复制到剪贴板中
ConstWM_CAP_SET_AUDIOFORMAT=WM_User+35'
设置音频格式。
设置时传入一个WAVEFORMAT、WAVEFORMATEX、或PCMWAVEOFMAT结构的指针
ConstWM_CAP_GET_AUDIOFORMAT=WM_User+36'
来得到音频数据的格式和该格式结构体的大小。
默认的捕捉音频格式是mono、8-bit和11kHZPCM
ConstWM_CAP_Get_VideoFormat=WM_User+44'
给捕捉窗口来得到视频格式的结构和该结构的大小。
ConstWM_CAP_SET_VideoFormat=WM_User+45'
用来设置视频格式
ConstWM_CAP_SET_PreView=WM_User+50'
发送给捕捉窗口来使预览模式有效或者失效
ConstWM_CAP_SET_Overlay=WM_User+51'
使窗口处于叠加模式。
使叠加模式有效也会自动地使预览模式失效
ConstWM_CAP_SET_PreViewRate=WM_User+52'
发送给捕捉窗口来设置在预览模式下帧的显示频率
ConstWM_CAP_SET_Scale=WM_User+53'
来使预览模式的缩放有效或者无效
ConstWM_CAP_SET_SCROLL=WM_User+55'
如果是在预览模式或者叠加模式,还可以通过本消息发送给窗口,
在窗口里的用户区域设置视频帧的滚动条的位置
PrivateTypeBitMapInfoHeader'
tagBitMapInfoHeaderStructure
biSizeAsLong
biWidthAsLong
biHeightAsLong
LONGDWORD
biPlanesAsInteger
WORD
biBitCountAsInteger
biCompressionAsLong
biSizeImageAsLong
biXPelsPerMeterAsLong
biYPelsPerMeterAsLong
biClrUsedAsLong
biClrImportantAsLong
PrivateTypeBitMapInfo
bmiHeaderAsBitMapInfoHeader'
bmiColorsAsByte
RGBQUAD
基本视频捕获消息--------------------------------------
ConstWM_CAP_Connect=WM_User+10
连接一个视频驱动,成功返回真
(1)。
连接驱动后,不一定就能显示视频,还要保证摄像头硬件连接良好、未被其他程序使用。
ConstWM_CAP_DisConnect=WM_User+11'
断开视频窗口与驱动的连接
wParam:
视频设备序号,从0到9
ConstWM_CAP_Sequence=WM_User+62'
开始录像
ConstWM_CAP_Stop=WM_User+68
终止视频捕获
ConstWM_CAP_Abort=WM_User+69
暂停录像捕获?
,成功返回真
ConstWM_CAP_Set_Sequence_Setup=WM_User+64
ConstWM_CAP_Get_Sequence_Setup=WM_User+65
录像参数设置和获取
DimnParmsAsCaptureParms
SendMessagectCapWin,WM_CAP_Get_Sequence_Setup,Len(nParms),nParms'
获取参数的设置
nParms.fAbortLeftMouse=False'
关闭:
单击鼠标停止录像的功能。
SendMessagectCapWin,WM_CAP_Set_Sequence_Setup,Len(nParms),nParms'
重新设置参数
PrivateTypeCaptureParms'
dwRequestMicroSecPerFrameAsLong
DWORD
fMakeUserHitOKToCaptureAsBoolean'
开始录像时,是否显示确认对话框,默认为假
wPercentDropForErrorAsLong'
每毫秒捕捉帧率,默认66667,即每秒15帧
fYieldAsBoolean
BOOL:
如果为TRUE,将产生一个后台线程来进行视频捕捉
dwIndexSizeAsLong
DWORD:
视频文件最大的索引入口数
wChunkGranularityAsLong
UINT:
以字节为单位表示AVI文件的大小
fUsingDOSMemoryAsBoolean
未使用
wNumVideoRequestedAsLong
分配视频缓冲区的最大数量
fCaptureAudioAsBoolean
是否捕获音频流,默认值由具体的硬件设置
wNumAudioRequestedAsLong
分配的音频缓冲区的最大数量
vKeyAbortAsLong
结束录像的按键,默认为VK_ESCAPE(Esc键)
fAbortLeftMouseAsBoolean
单击鼠标左键停止录像,默认为真
fAbortRightMouseAsBoolean
单击鼠标右键停止录像,默认为假
fLimitEnabledAsBoolean
是否开启捕获时间限制,默认为真
wTimeLimitAsLong
捕获时间限制(秒),fLimitEnabled为真时有效
fMCIControlAsBoolean
为TRUE,控制MCI(媒体设备接口)兼容的视频源
fStepMCIDeviceAsBoolean
BOOL
dwMCIStartTimeAsLong
以毫秒为单位标识MCI设备视频捕捉序列的起始位置,如果fMCIControl成员为FALSE,该成员被忽略
dwMCIStopTimeAsLong
以毫秒为单位标识MCI设备视频捕捉序列的停止位置,如果fMCIControl成员为FALSE,该成员被忽略
fStepCaptureAt2xAsBoolean
为TRUE,捕捉的视频帧使用两个分辨率
wStepCaptureAverageFramesAsLong'
:
在捕捉时每帧图像使用的时间大小
dwAudioBufferSizeAsLong
音频缓冲大小,默认0
fDisableWriteCacheAsBoolean'
Win32系统未使用
AVStreamMasterAsLong
确定在写入AVI文件时,音频流是否控制时钟
视频窗口消息--------------------------------------
(_
ByValwDriverAsInteger,ByVallpszNameAsString,ByValcbNameAsLong,ByVallpszVerAsString,ByValcbVerAsLong)AsBoolean
可利用此API获取所有驱动程序名称和版本信息。
例子:
DimSAsLong
DimlpszNameAsString*128
DimlpszVerAsString*128
Do
IfNotcapGetDriverDescriptionA(S,lpszName,128,lpszVer,128)ThenExitDo'
获得驱动程序名称和版本信息
S=S+1
Loop
ConstWM_CAP_Get_Status=WM_User+54'
获取捕捉窗口的当前状态
PrivateTypeCapStatus'
■■?
uiImageWidthAsLong
图像宽度,像素
uiImageHeightAsLong
图像高度,像素
fLiveWindowAsBoolean
视频显示是否使用预览
fOverlayWindowAsBoolean
视频显示是否使用硬件
fScaleAsBoolean
图像是否随窗口大小自动缩放
ptScrollAsPointAPI
POINT?
fUsingDefaultPaletteAsBoolean'
是否使用默认调色板
fAudioHardwareAsBoolean
是否安装了音频波形硬件
fCapFileExistsAsBoolean
是否生成了正确的捕获文件
dwCurrentVideoFrameAsLong
dwCurrentVideoFramesDroppedAsLong
dwCurrentWaveSamplesAsLong
dwCurrentTimeElapsedMSAsLong
视频流已录像时间(毫秒)
hPalCurrentAsLong
HPALETTE当前调色板句柄
fCapturingNowAsBoolean
是否正在进行捕获
dwReturnAsLong
错误返回值,根据这个数值可以调用一个错误回调函数
wNumVideoAllocatedAsLong
视频缓冲
wNum