📄 hikserver32.pas
字号:
{*******************************************************}
{ }
{ 海康威视(DS4XXXHC) SDK-2 集成开发包 }
{ 服务端 Ver 9.0 }
{ 版权所有 (C) 2007 EMAIL:366733082@163.com }
{ }
{*******************************************************}
unit HikServer32;
interface
uses
Windows, SysUtils, MMSystem, Classes, Messages;
type
//工作状态回调(通道号;回调号;返回字符)
TCallBackFunc = procedure
(
Channels: Byte; //通道索引号
War_Style: Byte; //返回值索引
ReturnStr: string = '' //从SDK2返回的字符
); stdcall;
//网络连接类型
TConnectType =
(
NORMAL = 50, //普通宽带
DIALING = 40, //窄带不支持声音
SMALLPIC = 30 //QCIF及以下图像使用窄带/宽带,不进行自动调节,支持声音
);
//多媒体设备类型
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; //是否加载服务
end;
//通道工作状态
TChannelState = record
Video_IsSCROUT: Boolean; //是否启动屏幕输出
Video_IsPreview: Boolean; //是否启动预览
Video_IsWar: Boolean; //是否启动视频丢失报警
Video_IsPlaySound: Boolean; //是否启动视频丢失声音报警
Video_IsOSD: Boolean; //是否显示OSD
Video_IsLOGO: Boolean; //是否显示LOGO
Video_IsCapture: Boolean; //是否启动录像
Video_IsMask: Boolean; //是否启动屏幕遮挡
Video_IsMotion: Boolean; //是否启动移动侦测
Audio_IsPreview: Boolean; //是否声音监听
Audio_IsWar: Boolean; //是否启动音频丢失报警
Audio_IsPlaySound: Boolean; //是否启动音频丢失声音报警
Audio_MuteLimit: Byte; //音频丢失报警音场强度
Video_AutoSize: Word; //各通道录像文件自动分割尺寸
CaptureFilename: WideString; //各通道录像文件名
end;
//硬件信息
THardFlag = record
BiosInfo: PChar; //BIOS信息
BIOSName: PChar; //BIOS名称
BIOSCopyright: PChar; //BIOS版权
BIOSExtendedInfo: PChar; //BIOS扩展信息
BIOSDate: TDateTime; //BIOS日期
IDEDiskSerial: PChar; //IDE硬盘序列号
IDEDiskType: PChar; //IDE硬盘型号
IDEDiskVersion: PChar; //IDE硬盘硬件版本
IDEDiskTotalAddressableSectors: ULong; //扇区总数
IDEDiskSectorCapacity: ULong; //扇区容量
IDEDiskSectorsPerTrack: Word; //每扇区磁道数
IDEDiskCSerial: PChar; //C盘序列号
CPUSerial: PChar; //CPU序列号
CPUSpeed: PChar; //CPU频率
MACAddress: PChar; //网址地址
DisplayFrequency: Byte; //显示器当前刷新率
DisplayDevice: PChar; //显卡类型
TotalPhysMemory: DWORD; //物理内存总量
AvailPhysMemory: DWORD; //可用物理内存
TotalPageFileMemory: DWORD; //对换区总量
AvailPageFileMemory: DWORD; //可用的对换区
TotalVirtualMemory: DWORD; //虚拟内存总量
AvailVirtualMemory: DWORD; //可用虚拟内存
MemoryLoad: DWORD; //内存使用率
end;
//系统信息
TWindowsFlag = record
WindowsVersion: PChar; //Windows版本号
WindowsVersionEx: PChar; //Windows版本号(增强型)
WindowsName: PChar; //Windows操作系统名称
WindowsNameEx: PChar; //Windows操作系统名称(增强型,支持更多操作系统)
WindowsServicePackVersion: PChar; //Windows SP包版本号
OSIsWindows64: Boolean; //是否64位操作系统
Computername: PChar; //计算机名称
Username: PChar; //登录用户名
DomainName: PChar; //域名
RegisteredCompany: PChar; //注册单位
RegisteredOwner: PChar; //注册用户
ShellProcessName: PChar; //外壳程序名称
WindowsDirectory: PChar; //Windows 路径
SystemDirectory: PChar; //System32 路径
CommonFilesFolder: PChar; //Common 路径
CurrentFolder: PChar; //当前 路径
ProgramFilesFolder: PChar; //ProgramFiles 路径
DesktopFolder: PChar; //Desktop 路径
ProgramsFolder: PChar; //ProgramsFolder件夹
PersonalFolder: PChar; //PersonalFolder 路径
FavoritesFolder: PChar; //Favorites 路径
StartupFolder: PChar; //Startup 路径
RecentFolder: PChar; //Recent 路径
SendToFolder: PChar; //SendToFo 路径
StartmenuFolder: PChar; //Startmenu 路径
DesktopDirectoryFolder: PChar; //DesktopDirectory 路径
FontsFolder: PChar; //Fonts 路径
CommonStartupFolder: PChar; //CommonStartup 路径
CommonFavoritesFolder: PChar; //CommonFavorites 路径
TemplatesFolder: PChar; //Templates 路径
InternetCacheFolder: PChar; //InternetCache 路径
CookiesFolder: PChar; //Cookies 路径
HistoryFolder: PChar; //History 路径
end;
{
创建一个TCP服务的步骤:
初始化IOCP_Server_Init
打开IOCP_Server_Start
监听IOCP_ServerDataReceive
停止TCP服务:
IOCP_Server_Stop
IOCP_Server_DeInit
}
//数据接收事件,在接收到数据时触发
TTCPDataReceiveNotification = procedure
(
SocketHandle: Integer; //套接字句柄
Data: Pointer; //接收到的数据
NumberBytes: Integer; //数据的长度
FromIP: PChar; //源地址
Port: Word //源端口
); stdcall;
//启动TCP监听(打开端口)事件
TServerStartNotification = procedure
(
SocketHandle: Integer; //套接字句柄
LocalDotAddr: PChar; //IP地址
LocalPort: Word //本地端口
); stdcall;
//停止TCP监听(关闭端口)事件
TServerStopNotification = procedure
(
SocketHandle: Integer; //套接字句柄
LocalDotAddr: PChar; //IP地址
LocalPort: Word //本地端口
); stdcall;
const
WM_HikCOMMAND = WM_APP + $1001; //自定义消息
HikRunSDK = 'HikServer32.dll'; //SDK-2链接库文件名,请保持与文件实名同步修改
//采集卡分辨率(值越大分辨率越高,图像清晰度越好)
ENC_CIF_FORMAT : PictureFormat_t = 0;
ENC_QCIF_FORMAT : PictureFormat_t = 1;
ENC_2CIF_FORMAT : PictureFormat_t = 2;
ENC_4CIF_FORMAT : PictureFormat_t = 3;
ENC_QQCIF_FORMAT : PictureFormat_t = 4;
ENC_CIFQCIF_FORMAT: PictureFormat_t = 5;
ENC_CIFQQCIF_FORMAT: PictureFormat_t = 6;
ENC_DCIF_FORMAT : PictureFormat_t = 7;
StateString : array[0..59] of string =
('', '正在打开', '音频信号丢失', '视频信号丢失', '有物体移动', //0-4
'自动分割录像', '开始录像', '停止录像', '启动声音监听', '停止声音监听', //5-9
'启动视频预览', '停止视频预览', '启动录像', '停止录像', '启动视频报警', //10-14
'关闭视频报警', '启动音频报警', '停止音频报警', '启动移动侦测', '停止移动侦测', //15-19
'启动视频遮挡', '关闭视频遮挡', '开始屏幕输出', '停止屏幕输出', '启动视频LOGO', //20-24
'停止视频LOGO', '开始视频OSD', '停止视频OSD', '切换为黑白视频', '切换为彩色视频', //25-29
'切换为黑屏显示', '切换为白屏显示', '视频色彩复位', '启动全屏显示', '采集卡已经加载...', //30-34
'采集卡已经卸截...', '视频服务启动成功...', '视频服务已停止...', '静音', '音量恢复', //35-39
'云台控制命令发送', '系统出现未知错误', '录像文件大小', '配置端口号成功...', '连接服务端成功...', //40-44
'正在连接...', '开始接收图象...', '异常退出...', '接收完毕,退出...', '无法联系服务端...', //45-49
'服务端拒绝访问...', '无效...', '停止客户端连接...', '图像抓取成功...', '初始化服务端网络连接成功...', //50-54
'视频服务启动失败...', '退出全屏预览...', '', '', '' //55-59
);
var
CallBackFunc : TCallBackFunc; //回调
Board_Info : TBoard_Info; //采集卡信息
FRAMES_STATISTIC : PFRAMES_STATISTICS; //
{-------------------------------------------------------------------------------
过程名: Get_SDK_Err
功 能: 获取SDK调用错误信息
开 发: SelonSoft
日 期: 2007.07.01
参 数: Err_Code: Integer
返回值: PChar
备 注:
-------------------------------------------------------------------------------}
function Get_SDK_Err
(
Err_Code: Integer //SDK2 错误代码
): PChar; stdcall; external HikRunSDK;
{-------------------------------------------------------------------------------
过程名: Set_CallBack_Func
功 能: 回调函数接口
开 发: SelonSoft
日 期: 2007.07.01
参 数: Func: TCallBackFunc
返回值: 无
备 注:
-------------------------------------------------------------------------------}
procedure Set_CallBack_Func
(
Func: TCallBackFunc //call-back function
); stdcall; external HikRunSDK;
{-------------------------------------------------------------------------------
过程名: Start_Process
功 能: 创建内部工作线程
开 发: SelonSoft
日 期: 2007.07.01
参 数: ThreadStyle: Byte; NumCycles: Word; Channels_Index: Byte = 1
返回值: 无
备 注:
-------------------------------------------------------------------------------}
procedure Start_Process
(
ThreadStyle: Byte; //线程类型:4-20系统预定义类型,>20为用户自定义类型
NumCycles: Word; //线程周期:分钟
Channels_Index: Byte = 1 //通道索引号
); stdcall; external HikRunSDK;
{-------------------------------------------------------------------------------
过程名: Change_EncoderPicture_Parameter
功 能: 动态更改图像编码参数
开 发: SelonSoft
日 期: 2007.12.18
参 数: Channels_Index: Byte; PictureFormat: LongWord = 4; SubPictureFormat: LongWord = 4; StreamType: DWORD = 3; SubStreamType: DWORD = 3; IQuantVal: Byte = 12; BQuantVal: Byte = 12; PQuantVal: Byte = 15; KeyFrameIntervals: Word = 100; BFrames: Byte = 2; PFrames: Byte = 1; FFrames: Byte = 25
返回值: Integer
备 注:
-------------------------------------------------------------------------------}
function Change_EncoderPicture_Parameter
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -