?? 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; //顯卡類型
AvailPhysMemory: DWORD; //可用物理內存
TotalPageFileMemory: DWORD; //對換區總量
AvailPageFileMemory: 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 + -