📄 hikserver32.pas
字号:
{*******************************************************}
{ }
{ 海康威视(DS4XXXHC) SDK-2 集成开发包 }
{ 服务端 }
{ 版权所有 (C) 2007 EMAIL:366733082@163.com }
{ }
{*******************************************************}
{
更新日期:2007年8月13日
}
unit HikServer32;
interface
uses
Windows, SysUtils, MMSystem, Classes;
type
//回调(通道号;回调号;返回字符)
TCallBackFunc = procedure(Channels: Byte; War_Style: Byte; ReturnStr: string = ''); stdcall;
//连接类型(0普通宽带,40窄带不支持声音,30QCIF及以下图像使用窄带/宽带,不进行自动调节,支持声音)
TConnectType = (NORMAL = 50, DIALING = 40, SMALLPIC = 30);
//设备类型(主音量,话筒音量,波形输出,综合)
TDeviceName = (Master, Microphone, WaveOut, Synth);
PictureFormat_t = LongWord;
PFRAMES_STATISTICS = ^FRAMES_STATISTICS;
FRAMES_STATISTICS = record
VideoFrames: ULong; //视频帧
AudioFrames: ULong; //音频帧
FramesLost: ULong; //丢帧
QueueOverflow: ULong; //队列溢出
CurBps: ULong; //当前比特率
end;
PVERSION_INFO = ^VERSION_INFO;
VERSION_INFO = record
DspVersion: ULong; //DSP版本号
DspBuildNum: ULong; //创建号
DriverVersion: ULong; //驱动版本号
DriverBuildNum: ULong; //驱动创建号
SDKVersion: ULong; //SDK版本号
SDKBuildNum: ULong; //SDK创建号
end;
TBoard_Info = record
boardType: PChar; //型号
boardSN: string[12]; //序列号
BoardCount: Byte; //系统中板卡的个数。包括 HC、MD卡
TotalChannels: Byte; //编码通道总数
DspCount: Byte; //系统中DSP个数
DSPs: Byte; //视频处理器数
EncodeChannelCount: Byte; //编码通道个数
DecodeChannelCount: Byte; //解码通道个数
DisplayChannelCount: Byte; //显示通道(视频输出)个数
SDKVersion: PVERSION_INFO; //当前使用的 SDK 版本信息
end;
TSdkState = record
Board_IsLoad: Boolean; //是否加载采集卡
Server_IsLoad: Boolean; //是否加载服务
Video_IsSCROUT: Boolean; //是否启动屏幕输出
Video_IsPreview: Boolean; //是否启动预览
Video_IsWar: Boolean; //是否启动视频丢失报警
Video_IsOSD: Boolean; //是否显示OSD
Video_IsLOGO: Boolean; //是否显示LOGO
Video_IsCapture: Boolean; //是否启动录像
Video_IsMask: Boolean; //是否启动屏幕遮挡
Video_IsMotion: Boolean; //是否启动移动侦测
Audio_IsPreview: Boolean; //是否声音监听
Audio_IsWar: Boolean; //是否启动音频丢失报警
end;
const
HikRunSDK = 'HikServer32.dll'; //SDK-2链接库文件名,请保持与文件实名同步修改
var
CallBackFunc : TCallBackFunc;
Board_Info : TBoard_Info;
FRAMES_STATISTIC : PFRAMES_STATISTICS;
//获取错误信息(错误值)
function Get_SDK_Err(Err_Code: Integer): PChar; stdcall; external HikRunSDK;
//回调函数接口
procedure Set_CallBack_Func(Func: TCallBackFunc); stdcall; stdcall; external HikRunSDK;
//创建线程(线程类型:4-20系统预定义类型,>20为用户自定义类型,线程周期:分钟)
procedure Start_Process(ThreadStyle: Byte; NumCycles: Word; Channels_Index: Byte = 1); stdcall; external HikRunSDK;
//板卡初始化(通道被除数,如8通道板卡,DSP_Div=2实际有效的只有1357四个通道,默认全部通道有效)
function Load_Board(DSP_Div: Byte = 1): Integer; stdcall; external HikRunSDK;
//卸载板卡
function UnLoad_Board(): Integer; stdcall; external HikRunSDK;
//获取板卡序列号等信息(通道号-决定板卡序列号的不同)
function Get_Board_Info(Channel_Index: Byte = 1): TBoard_Info; stdcall; external HikRunSDK;
//初始化网络服务(通道数据类型:宽带NORMAL,窄带DIALING<不支持声音>,窄带/宽带SMALLPIC<支持声音>,服务端的网络端口号和客户端的网络端口号)
function Load_Net_Server(Data_Type: TConnectType = NORMAL; Port_Server: Integer = 5050; Port_Client: Integer = 6050): Integer; stdcall; external HikRunSDK;
//停止网络服务
function UnLoad_Net_Server(): Boolean; stdcall; external HikRunSDK;
//启动预览(通道号,预览句柄,预览区域,是否设置预览用 Overlay 方式(MD卡兼容))
function Start_Video_Preview(Channels_Index: Byte; Preview_Handle: THandle; Preview_Rect: TRect; IsOverlayMode: Boolean = False): Integer; stdcall; external HikRunSDK;
//停止预览(通道号)
function Stop_Video_Preview(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//启动录像(通道号,保存录像文件名,自动停止录像时间:优先权低,自动录像大小:优先权高)
function Start_Video_Capture(Channels_Index: Byte; Filename: WideString = ''; StopMinute: Word = 0; AutoSize: Word = 0): Integer; stdcall; external HikRunSDK;
//停止录像(通道号)
function Stop_Video_Capture(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//启动声音监听(通道号)
function Start_Audio_Preview(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//停止声音监听(通道号,是否停止所有通道声音)
function Stop_Audio_Preview(Channels_Index: Byte; Is_StopAll: Boolean = False): Integer; stdcall; external HikRunSDK;
//视频截图(通道号,保存截图文件名,是否JPEG格式,JPEG 图片质量:1 到 100,1 最差,100 最好)
function Start_Image_Capture(Channels_Index: Byte; Filename: string = ''; IsJpeg: Boolean = False; JpegQuality: Byte = 100): Integer; stdcall; external HikRunSDK;
//显示OSD(通道号,第一行座标,内容,第二行座标,内容,是否自动进行颜色翻转,OSD显示亮度:255 最亮0 最暗,是否显示时间)
function Start_Video_OSD(Channels_Index: Byte; F_x, F_y: Integer; F_Text: PChar; T_x, T_y: Integer; T_Text: PChar; IsColorReversal: Boolean = True; Brightness: Byte = 255; IsDataTime: Boolean = False): Integer; stdcall; external HikRunSDK;
//隐藏OSD(通道号)
function Stop_Video_OSD(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//显示LOGO(通道号,座标X,座标Y,LOGO图片文件,是否半透明处理,透明色值(红绿蓝))
function Start_Video_Logo(Channels_Index: Byte; Logo_x, Logo_y: Integer; Filename: string; IsTranslucent: Boolean = False; Color_R: Byte = 255; Color_G: Byte = 255; Color_B: Byte = 255): Integer; stdcall; external HikRunSDK;
//隐藏LOGO(通道号)
function Stop_Video_Logo(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//获取视频参数(通道号,亮度,对比度,饱和度,色度)
function Get_Video_Para(Channels_Index: Byte; var P_Ld, P_Dbd, P_Bhd, P_Sd: Byte): Integer; stdcall; external HikRunSDK;
//设置视频参数(通道号,亮度,对比度,饱和度,色度)
function Set_Video_Para(Channels_Index: Byte; P_Ld, P_Dbd, P_Bhd, P_Sd: Byte): Integer; stdcall; external HikRunSDK;
//快速黑白、彩色图像切换(通道号,是否黑白)
function Set_Video_NoColor(Channels_Index: Byte; IsNoColor: Boolean = True): Integer; stdcall; external HikRunSDK;
//复位视频图像参数(通道号)
function Reset_Video_Para(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//黑屏 (通道号)
function Set_Screen_Black(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//白屏 (通道号)
function Set_Screen_White(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//改变屏幕分辨率 (XY值,刷新率:默认60HZ)
function Set_Screen_Para(X, Y: Word; Frequency: Byte = 60): Boolean; stdcall; external HikRunSDK;
//调用全屏窗口(通道号,是否自动巡回显示各通道监控画面,默认不自动切换,值=0)
function Start_Video_FullScreen(Channels_Index: Byte; AutoCircuit: Byte = 0): Integer; stdcall; external HikRunSDK;
//设置编码分辨率格式(通道号,编码图象大小:4CIF、2CIF、DCIF、CIF 、QCIF)
{设置主通道的编码格式,编码分辨率可以在录像的时候动态更改,而不必停止录像;}
function Set_EncoderPicture_Format(Channels_Index: Byte; PictureFormat: PictureFormat_t): Integer; stdcall; external HikRunSDK;
//获取帧统计信息(通道号,帧统计信息)
function Get_Frames_Statistics(Channels_Index: Byte; var frame_Statistic: PFRAMES_STATISTICS): Integer; stdcall; external HikRunSDK;
//当系统按下 CTRL+ALT+DEL 时系统的 OVERLAY 表面会被强制关闭,调用该函数时可以恢复 OVERLAY表面
function Restore_Overlay(): Integer; stdcall; external HikRunSDK;
//设置看门狗(通道号,是否打开狗):可以实现对上层软件和系统中所有压缩板卡的运行状态监控
function Set_WatchDog(Channels_Index: Byte; IsWatch: Boolean = False): Integer; stdcall; external HikRunSDK;
//设置屏幕遮挡(通道号,左,上,右,下)
function Start_Video_Mask(Channels_Index: Byte; T_Left, T_Top, T_Right, T_Bottom: Integer): Integer; stdcall; external HikRunSDK;
//停止屏幕遮挡(通道号)
function Stop_Video_Mask(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//设置移动侦测(通道号,左,上,右,下,移动侦测灵敏度默认值为2,是否录像,警前帧数,录像文件名)
function Start_Motion_Detection(Channels_Index: Byte; T_Left: Integer = 0; T_Top: Integer = 0; T_Right: Integer = 703; T_Bottom: Integer = 575; DetectPrec: Byte = 2; IsAlarmFile: Boolean = False; framesBeforeAlarm: ULong = 100; AlarmFilename: string = 'AlarmFile'): Integer; stdcall; external HikRunSDK;
//停止移动侦测(通道号)
function Stop_Motion_Detection(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//启动音频丢失报警:多线程方式
function Start_Audio_Warnning(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//停止音频丢失报警 (通道号)
function Stop_Audio_Warnning(Channels_Index: Byte = 0): Integer; stdcall; external HikRunSDK;
//启动视频丢失报警:多线程方式
function Start_Video_Warnning(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//停止视频丢失报警 (通道号)
function Stop_Video_Warnning(Channels_Index: Byte = 0): Integer; stdcall; external HikRunSDK;
//计算音频丢失报警:单次调用
function Check_Audio_Warnning: Byte; stdcall; external HikRunSDK;
//计算视频丢失报警:单次调用
function Check_Video_Warnning: Byte; stdcall; external HikRunSDK;
//监视视频录像文件大小:单次调用
function Check_Video_Size: Byte; stdcall; external HikRunSDK;
//获取音视频报警状态(通道号,返回方式:音频或视频)
function Get_AV_State(Channel_Index: Byte = 1; IsAudio: Boolean = True): Boolean; stdcall; external HikRunSDK;
//获取报警线程运行状态:为真表示线程正在运行
function Get_Warnning_State: Boolean; stdcall; external HikRunSDK;
//检测报警线程状态(为真是表明线程并未终止)
function Check_Warnning_State: Boolean; stdcall; external HikRunSDK;
//开始屏幕输出(输出内容,输出左上角座标位置,是否透明输出,输出字体颜色RGB,是否输出时间)
function Start_Screen_Draw(Channels_Index: Byte; I_Text: string; I_Left: Integer = 0; I_Top: Integer = 0; I_IsTransparence: Boolean = True; I_R: Byte = 255; I_G: Byte = 255; I_B: Byte = 255; I_IsDateTime: Boolean = False): Integer; stdcall; external HikRunSDK;
//停止屏幕输出(通道号)
function Stop_Screen_Draw(Channels_Index: Byte): Integer; stdcall; external HikRunSDK;
//获取指定通道工作状态(通道号)
function Get_SDK_State(Channel_Index: Byte): TSdkState; stdcall; external HikRunSDK;
//是否加载采集卡
function Get_Board_State: Boolean; stdcall; external HikRunSDK;
//是否加载服务
function Get_Server_State: Boolean; stdcall; external HikRunSDK;
//获取Master音量
function Get_Volume_Master(): Word; stdcall; external HikRunSDK;
//设置Master音量
procedure Set_Volume_Master(Value: Word); stdcall; external HikRunSDK;
//获取WaveOut音量
function Get_Volume_WaveOut(): Word; stdcall; external HikRunSDK;
//设置WaveOut音量
procedure Set_Volume_WaveOut(Value: Word); stdcall; external HikRunSDK;
//获取Synth音量
function Get_Volume_Synth(): Word; stdcall; external HikRunSDK;
//设置Synth音量
procedure Set_Volume_Synth(Value: Word); stdcall; external HikRunSDK;
//静音自动切换
procedure Set_Volume_Mute; stdcall; external HikRunSDK;
//系统校时
procedure Set_Winclock(Datetime: TDateTime); stdcall; external HikRunSDK;
//获取本SDK版本信息
function Get_SDK_Version(): PChar; stdcall; external HikRunSDK;
//获取机器码
function Get_UserID: PChar; stdcall; external HikRunSDK;
//获取注册状态
function Get_SDK_Reg: Boolean; stdcall; external HikRunSDK;
//发送邮件(邮件服务器域名,用户名,密码,发送信箱,目的信息,主题,信件正文内容:字符串):布尔
function Send_Mail(TSmtp, TUser, TPass, TGetMail, TTOMail, TSubject, TMailText: string): Boolean; stdcall; external HikRunSDK;
//本地IP
function Get_LocalIP: PChar; stdcall; external HikRunSDK;
//获取控制协议列表
function Get_Pro_List(var List: TStringList): Boolean; stdcall; external HikRunSDK;
//云台控制接口函数(串口号,协议编号,云台地址,动作编号;是否停止:默认不停止):布尔
function Remot_Contrl(T_Com, T_Driv, T_Adr, T_Act: Byte; Is_Stop: Boolean = False): Boolean; stdcall; external HikRunSDK;
implementation
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -