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

📄 hikserver32.pas

📁 视频采集卡sdk-2
💻 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 + -