⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hikserver32.pas

📁 DELPHI开发包
💻 PAS
📖 第 1 页 / 共 5 页
字号:
{*******************************************************}
{                                                       }
{       海康威视(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 + -