1. 程式人生 > >C# 海康sdk

C# 海康sdk

以前用vc開發一個客戶端,現在公司需要做一個視訊點播系統。由於專案比較急用vc做,時間可能會不夠,所以選擇用c#來完成。這個點播系統主要包括客戶端和流媒體伺服器兩個部分。開始專案之前要重新寫海康的.h檔案,引用vc寫的dll。封裝.h檔案。

namespace HIK
{

    public delegate void fVoiceDataCallBack(int lVoiceComHandle, [MarshalAs(UnmanagedType.LPArray)]  byte[] pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser);

    public delegate void SerialDataCallBack(int lSerialHandle, [MarshalAs(UnmanagedType.LPArray)]  byte[] pRecvDataBuffer, uint dwBufSize, uint dwUser);

    public delegate void DrawFun(int lRealHandle, System.Drawing.Graphics hDc, uint dwUser);

    public delegate void RealDataCallBack(int lRealHandle, uint dwDataType, [MarshalAs(UnmanagedType.LPArray, SizeConst = 11520)] byte[] pBuffer, uint dwBufSize, uint dwUser);

    public delegate void PlayDataCallBack(int lPlayHandle, uint dwDataType, [MarshalAs(UnmanagedType.LPArray)]  byte[] pBuffer, uint dwBufSize, uint dwUser);

    public struct NET_DVR_DEVICEINFO
    {
        // [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] 

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
        public byte[] sSerialNumber;//[SERIALNO_LEN];  //序列號
        public byte byAlarmInPortNum;  //DVR報警輸入個數
        public byte byAlarmOutPortNum;  //DVR報警輸出個數
        public byte byDiskNum;    //DVR 硬碟個數
        public byte byDVRType;    //DVR型別,
        public byte byChanNum;    //DVR 通道個數
        public byte byStartChan;   //起始通道號,例如DVS-1,DVR - 1
    }


    public struct NET_DVR_DISKSTATE
    {
        public uint dwVolume;//硬碟的容量
        public uint dwFreeSpace;//硬碟的剩餘空間
        public uint dwHardDiskStatic; //硬碟的狀態,休眠,活動,不正常等
    }


    public struct NET_DVR_TIME
    {
        public uint dwYear;  //年
        public uint dwMonth;  //月
        public uint dwDay;  //日
        public uint dwHour;  //時
        public uint dwMinute;  //分
        public uint dwSecond;  //秒
    }

    public struct NET_DVR_FIND_DATA
    {
        [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 100)]
        public string sFileName;//檔名
        public NET_DVR_TIME struStartTime;//檔案的開始時間
        public NET_DVR_TIME struStopTime;//檔案的結束時間
        public uint dwFileSize;//檔案的大小
    }


    public struct NET_DVR_CHANNELSTATE
    {
        public byte byRecordStatic; //通道是否在錄影,0-不錄影,1-錄影
        public byte bySignalStatic; //連線的訊號狀態,0-正常,1-訊號丟失
        public byte byHardwareStatic;//通道硬體狀態,0-正常,1-異常,例如DSP死掉
        public char reservedData;
        public uint dwBitRate;//實際位元速率
        public uint dwLinkNum;//客戶端連線的個數
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]  //MAX_LINK
        public uint[] dwClientIP;//客戶端的IP地址
    }

    public struct NET_DVR_WORKSTATE
    {

        public uint dwDeviceStatic;  //裝置的狀態,0-正常,1-CPU佔用率太高,超過85%,2-硬體錯誤,例如串列埠死掉

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_DVR_DISKSTATE[] struHardDiskStatic; //MAX_DISKNUM

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public NET_DVR_CHANNELSTATE[] struChanStatic;//通道的狀態MAX_CHANNUM

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public byte[] byAlarmInStatic; //報警埠的狀態,0-沒有報警,1-有報警MAX_ALARMIN

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] byAlarmOutStatic; //報警輸出埠的狀態,0-沒有輸出,1-有報警輸出MAX_ALARMOUT
        public uint dwLocalDisplay;//本地顯示狀態,0-正常,1-不正常
    }

    public struct NET_DVR_ETHERNET
    {
        public string sDVRIP;          //DVR IP地址
        public string sDVRIPMask;      // DVR IP地址掩碼
        public uint dwNetInterface;   //網路介面 1-10MBase-T 2-10MBase-T全雙工 3-100MBase-TX 4-100M全雙工 5-10M/100M自適應
        public ushort wDVRPort;  //埠號
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]
        public byte[] byMACAddr;  //伺服器的實體地址MACADDR_LEN
    }


    public struct NET_DVR_NETCFG
    {
        public uint dwSize;

        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]
        public NET_DVR_ETHERNET[] struEtherNet;  /* 乙太網口 */
        public string sManageHostIP;  //遠端管理主機地址
        public short wManageHostPort; //遠端管理主機埠號
        public string sDNSIP;            //DNS伺服器地址 
        public string sMultiCastIP;     //多播組地址
        public string sGatewayIP;        //閘道器地址
        public string sNFSIP;   //NAS主機IP地址
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
        public byte[] sNFSDirectory;//NAS目錄PATHNAME_LEN
        public uint dwPPPOE;    //0-不啟用,1-啟用
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
        public byte[] sPPPoEUser; //PPPoE使用者名稱NAME_LEN
        //  [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
        public string sPPPoEPassword;// PPPoE密碼
        public string sPPPoEIP;   //PPPoE IP地址(只讀)
        public ushort wHttpPort;    //HTTP埠號
    }

    public struct NET_DVR_ALARMOUTSTATUS
    {
        [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
        public byte[] Output;//MAX_ALARMOUT
    }

    public struct NET_DVR_CLIENTINFO
    {
        public int lChannel;//通道號
        public int lLinkMode;//最高位(31)為0表示主碼流,為1表示子碼流,0-30位表示碼流連線方式: 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-音視訊分開(TCP)
        public System.IntPtr hPlayWnd;//播放視窗的控制代碼,為NULL表示不播放圖象
        public string sMultiCastIP;//多播組地址
    }

    /// <summary>
    /// 海康嵌入式
    /// </summary>
    public sealed class Hik_HCNetSDK
    {
        #region 常量定義
        public const int NET_DVR_NOERROR = 0; //沒有錯誤
        public const int NET_DVR_PASSWORD_ERROR = 1;  //使用者名稱密碼錯誤
        public const int NET_DVR_NOENOUGHPRI = 2;  //許可權不足
        public const int NET_DVR_NOINIT = 3; //沒有初始化
        public const int NET_DVR_CHANNEL_ERROR = 4;  //通道號錯誤
        public const int NET_DVR_OVER_MAXLINK = 5; //連線到DVR的客戶端個數超過最大
        public const int NET_DVR_VERSIONNOMATCH = 6; //版本不匹配
        public const int NET_DVR_NETWORK_FAIL_CONNECT = 7;//連線伺服器失敗
        public const int NET_DVR_NETWORK_SEND_ERROR = 8; //向伺服器傳送失敗
        public const int NET_DVR_NETWORK_RECV_ERROR = 9;//從伺服器接收資料失敗
        public const int NET_DVR_NETWORK_RECV_TIMEOUT = 10; //從伺服器接收資料超時
        public const int NET_DVR_NETWORK_ERRORDATA = 11; //傳送的資料有誤
        public const int NET_DVR_ORDER_ERROR = 12;//呼叫次序錯誤
        public const int NET_DVR_OPERNOPERMIT = 13; //無此許可權
        public const int NET_DVR_COMMANDTIMEOUT = 14;//DVR命令執行超時
        public const int NET_DVR_ERRORSERIALPORT = 15;//串列埠號錯誤
        public const int NET_DVR_ERRORALARMPORT = 16; //報警埠錯誤
        public const int NET_DVR_PARAMETER_ERROR = 17; //引數錯誤
        public const int NET_DVR_CHAN_EXCEPTION = 18;//伺服器通道處於錯誤狀態
        public const int NET_DVR_NODISK = 19;//沒有硬碟
        public const int NET_DVR_ERRORDISKNUM = 20;//硬碟號錯誤
        public const int NET_DVR_DISK_FULL = 21; //伺服器硬碟滿
        public const int NET_DVR_DISK_ERROR = 22;//伺服器硬碟出錯
        public const int NET_DVR_NOSUPPORT = 23; //伺服器不支援
        public const int NET_DVR_BUSY = 24;//伺服器忙
        public const int NET_DVR_MODIFY_FAIL = 25; //伺服器修改不成功
        public const int NET_DVR_PASSWORD_FORMAT_ERROR = 26; //密碼輸入格式不正確
        public const int NET_DVR_DISK_FORMATING = 27; //硬碟正在格式化,不能啟動操作
        public const int NET_DVR_DVRNORESOURCE = 28; //DVR資源不足
        public const int NET_DVR_DVROPRATEFAILED = 29; //DVR操作失敗
        public const int NET_DVR_OPENHOSTSOUND_FAIL = 30; //開啟PC聲音失敗
        public const int NET_DVR_DVRVOICEOPENED = 31; //伺服器語音對講被佔用
        public const int NET_DVR_TIMEINPUTERROR = 32; //時間輸入不正確
        public const int NET_DVR_NOSPECFILE = 33; //回放時伺服器沒有指定的檔案
        public const int NET_DVR_CREATEFILE_ERROR = 34;//建立檔案出錯
        public const int NET_DVR_FILEOPENFAIL = 35; //開啟檔案出錯
        public const int NET_DVR_OPERNOTFINISH = 36; //上次的操作還沒有完成
        public const int NET_DVR_GETPLAYTIMEFAIL = 37; //獲取當前播放的時間出錯
        public const int NET_DVR_PLAYFAIL = 38; //播放出錯
        public const int NET_DVR_FILEFORMAT_ERROR = 39; //檔案格式不正確
        public const int NET_DVR_DIR_ERROR = 40; //路徑錯誤
        public const int NET_DVR_ALLOC_RESOUCE_ERROR = 41; //資源分配錯誤
        public const int NET_DVR_AUDIO_MODE_ERROR = 42; //音效卡模式錯誤
        public const int NET_DVR_NOENOUGH_BUF = 43;//緩衝區太小
        public const int NET_DVR_CREATESOCKET_ERROR = 44; //建立SOCKET出錯
        public const int NET_DVR_SETSOCKET_ERROR = 45; //設定SOCKET出錯
        public const int NET_DVR_MAX_NUM = 46;//個數達到最大
        public const int NET_DVR_USERNOTEXIST = 47; //使用者不存在
        public const int NET_DVR_WRITEFLASHERROR = 48;  //寫FLASH出錯
        public const int NET_DVR_UPGRADEFAIL = 49; //DVR升級失敗
        public const int NET_DVR_CARDHAVEINIT = 50; //解碼卡已經初始化過
        public const int NET_DVR_PLAYERFAILED = 51; //播放器中錯誤
        public const int NET_DVR_MAX_USERNUM = 52; //使用者數達到最大
        public const int NET_DVR_GETLOCALIPANDMACFAIL = 53; //獲得客戶端的IP地址或實體地址失敗
        public const int NET_DVR_NOENCODEING = 54;//該通道沒有編碼
        public const int NET_DVR_IPMISMATCH = 55; //IP地址不匹配
        public const int NET_DVR_MACMISMATCH = 56;//MAC地址不匹配
        public const int NET_DVR_UPGRADELANGMISMATCH = 57;//升級檔案語言不匹配
        public const int NET_DVR_DDRAWDEVICENOSUPPORT = 58;//本地顯示卡不支援


        //查詢檔案和日誌函式返回值
        public const int NET_DVR_FILE_SUCCESS = 1000; //獲得檔案資訊
        public const int NET_DVR_FILE_NOFIND = 1001;//沒有檔案
        public const int NET_DVR_ISFINDING = 1002;//正在查詢檔案
        public const int NET_DVR_NOMOREFILE = 1003; //查詢檔案時沒有更多的檔案
        public const int NET_DVR_FILE_EXCEPTION = 1004; //查詢檔案時異常

        //NET_DVR_IsSupport()返回值
        //1-9位分別表示以下資訊(位與是TRUE)表示支援;
        public const int NET_DVR_SUPPORT_DDRAW = 0x01;//支援DIRECTDRAW,如果不支援,則播放器不能工作;
        public const int NET_DVR_SUPPORT_BLT = 0x02;//顯示卡支援BLT操作,如果不支援,則播放器不能工作;
        public const int NET_DVR_SUPPORT_BLTFOURCC = 0x04;//顯示卡BLT支援顏色轉換,如果不支援,播放器會用軟體方法作RGB轉換;
        public const int NET_DVR_SUPPORT_BLTSHRINKX = 0x08;//顯示卡BLT支援X軸縮小;如果不支援,系統會用軟體方法轉換;
        public const int NET_DVR_SUPPORT_BLTSHRINKY = 0x10;//顯示卡BLT支援Y軸縮小;如果不支援,系統會用軟體方法轉換;
        public const int NET_DVR_SUPPORT_BLTSTRETCHX = 0x20;//顯示卡BLT支援X軸放大;如果不支援,系統會用軟體方法轉換;
        public const int NET_DVR_SUPPORT_BLTSTRETCHY = 0x40;//顯示卡BLT支援Y軸放大;如果不支援,系統會用軟體方法轉換;
        public const int NET_DVR_SUPPORT_SSE = 0x80;//CPU支援SSE指令,Intel Pentium3以上支援SSE指令;
        public const int NET_DVR_SUPPORT_MMX = 0x100;//CPU支援MMX指令集,Intel Pentium3以上支援SSE指令;

        public const int SET_PRESET = 8;// 設定預置點
        public const int CLE_PRESET = 9; // 清除預置點
        public const int GOTO_PRESET = 39;// 轉到預置點

        public const int LIGHT_PWRON = 2; /* 接通燈光電源 */
        public const int WIPER_PWRON = 3; /* 接通雨刷開關 */
        public const int FAN_PWRON = 4;/* 接通風扇開關 */
        public const int HEATER_PWRON = 5;/* 接通加熱器開關 */
        public const int AUX_PWRON = 6;/* 接通輔助裝置開關 */

        public const int ZOOM_IN = 11; /* 焦距以速度SS變大(倍率變大) */
        public const int ZOOM_OUT = 12;/* 焦距以速度SS變小(倍率變小) */
        public const int FOCUS_NEAR = 13; /* 焦點以速度SS前調 */
        public const int FOCUS_FAR = 14;/* 焦點以速度SS後調 */
        public const int IRIS_OPEN = 15; /* 光圈以速度SS擴大 */
        public const int IRIS_CLOSE = 16; /* 光圈以速度SS縮小 */
        public const int TILT_UP = 21;/* 雲臺以SS的速度上仰 */
        public const int TILT_DOWN = 22;/* 雲臺以SS的速度下俯 */
        public const int PAN_LEFT = 23;/* 雲臺以SS的速度左轉 */
        public const int PAN_RIGHT = 24; /* 雲臺以SS的速度右轉 */
        public const int PAN_AUTO = 29; /* 雲臺以SS的速度左右自動掃描 */

        public const int RUN_CRUISE = 36; /* 開始軌跡 */
        public const int RUN_SEQ = 37; /* 開始巡航 */
        public const int STOP_SEQ = 38;/* 停止巡航 */

        //顯示模式
        public enum DispMode { NORMALMODE = 0, OVERLAYMODE };
        //傳送模式
        public enum TransMode { PTOPTCPMODE, PTOPUDPMODE, MULTIMODE, RTPMODE, AUDIODETACH, NOUSEMODE };

        public const int NET_DVR_SYSHEAD = 1;//系統頭資料
        public const int NET_DVR_STREAMDATA = 2; //流資料

        //播放控制命令巨集定義 NET_DVR_PlayBackControl,NET_DVR_PlayControlLocDisplay,NET_DVR_DecPlayBackCtrl的巨集定義
        public const int NET_DVR_PLAYSTART = 1;//開始播放
        public const int NET_DVR_PLAYSTOP = 2;//停止播放
        public const int NET_DVR_PLAYPAUSE = 3;//暫停播放
        public const int NET_DVR_PLAYRESTART = 4;//恢復播放
        public const int NET_DVR_PLAYFAST = 5;//快放
        public const int NET_DVR_PLAYSLOW = 6;//慢放
        public const int NET_DVR_PLAYNORMAL = 7;//正常速度
        public const int NET_DVR_PLAYFRAME = 8;//單幀放
        public const int NET_DVR_PLAYSTARTAUDIO = 9;//開啟聲音
        public const int NET_DVR_PLAYSTOPAUDIO = 10;//關閉聲音
        public const int NET_DVR_PLAYAUDIOVOLUME = 11;//調節音量
        public const int NET_DVR_PLAYSETPOS = 12;//改變檔案回放的進度
        public const int NET_DVR_PLAYGETPOS = 13;//獲取檔案回放的進度
        public const int NET_DVR_PLAYGETTIME = 14;//獲取當前已經播放的時間
        public const int NET_DVR_PLAYGETFRAME = 15;//獲取當前已經播放的幀數
        public const int NET_DVR_GETTOTALFRAMES = 16;//獲取當前播放檔案總的幀數
        public const int NET_DVR_GETTOTALTIME = 17;//獲取當前播放檔案總的時間
        public const int NET_DVR_THROWBFRAME = 20;//丟B幀

        //NET_DVR_GetDVRConfig,NET_DVR_GetDVRConfig的命令定義
        public const int NET_DVR_GET_DEVICECFG = 100;  //獲取裝置引數
        public const int NET_DVR_SET_DEVICECFG = 101; //設定裝置引數
        public const int NET_DVR_GET_NETCFG = 102; //獲取網路引數
        public const int NET_DVR_SET_NETCFG = 103; //設定網路引數
        public const int NET_DVR_GET_PICCFG = 104; //獲取圖象引數
        public const int NET_DVR_SET_PICCFG = 105; //設定圖象引數
        public const int NET_DVR_GET_COMPRESSCFG = 106; //獲取壓縮引數
        public const int NET_DVR_SET_COMPRESSCFG = 107; //設定壓縮引數
        public const int NET_DVR_GET_COMPRESSCFG_EX = 204; //獲取壓縮引數(擴充套件)
        public const int NET_DVR_SET_COMPRESSCFG_EX = 205; //設定壓縮引數(擴充套件)
        public const int NET_DVR_GET_RECORDCFG = 108;//獲取錄影時間引數
        public const int NET_DVR_SET_RECORDCFG = 109; //設定錄影時間引數
        public const int NET_DVR_GET_DECODERCFG = 110; //獲取解碼器引數
        public const int NET_DVR_SET_DECODERCFG = 111; //設定解碼器引數
        public const int NET_DVR_GET_RS232CFG = 112; //獲取232串列埠引數
        public const int NET_DVR_SET_RS232CFG = 113;//設定232串列埠引數
        public const int NET_DVR_GET_ALARMINCFG = 114; //獲取報警輸入引數
        public const int NET_DVR_SET_ALARMINCFG = 115; //設定報警輸入引數
        public const int NET_DVR_GET_ALARMOUTCFG = 116; //獲取報警輸出引數
        public const int NET_DVR_SET_ALARMOUTCFG = 117; //設定報警輸出引數
        public const int NET_DVR_GET_TIMECFG = 118; //獲取DVR時間
        public const int NET_DVR_SET_TIMECFG = 119; //設定DVR時間
        public const int NET_DVR_GET_PREVIEWCFG = 120; //獲取預覽引數
        public const int NET_DVR_SET_PREVIEWCFG = 121; //設定預覽引數
        public const int NET_DVR_GET_VIDEOOUTCFG = 122; //獲取視訊輸出引數
        public const int NET_DVR_SET_VIDEOOUTCFG = 123; //設定視訊輸出引數
        public const int NET_DVR_GET_USERCFG = 124; //獲取使用者引數
        public const int NET_DVR_SET_USERCFG = 125; //設定使用者引數
        public const int NET_DVR_GET_EXCEPTIONCFG = 126; //獲取異常引數
        public const int NET_DVR_SET_EXCEPTIONCFG = 127;  //設定異常引數
        public const int NET_DVR_GET_SHOWSTRING = 130; //獲取疊加字元引數
        public const int NET_DVR_SET_SHOWSTRING = 131; //設定疊加字元引數
        public const int NET_DVR_GET_AUXOUTCFG = 140; //獲取輔助輸出設定
        public const int NET_DVR_SET_AUXOUTCFG = 141;  //設定輔助輸出設定
        //2006-04-13 -s系列雙輸出
        public const int NET_DVR_GET_PREVIEWCFG_AUX = 142; //獲取預覽引數
        public const int NET_DVR_SET_PREVIEWCFG_AUX = 143; //設定預覽引數
        public const int NET_DVR_GET_PICCFG_EX = 200; //獲取圖象引數(擴充套件)
        public const int NET_DVR_SET_PICCFG_EX = 201; //設定圖象引數(擴充套件)
        public const int NET_DVR_GET_USERCFG_EX = 202; //獲取使用者引數
        public const int NET_DVR_SET_USERCFG_EX = 203; //設定使用者引數

        //回撥函式型別
        public const int COMM_ALARM = 0x1100;//報警資訊
        public const int COMM_TRADEINFO = 0x1500;//ATMDVR主動上傳交易資訊

        //訊息方式
        //異常型別
        public const int EXCEPTION_AUDIOEXCHANGE = 0x8001;//語音對講異常
        public const int EXCEPTION_ALARM = 0x8002;//報警異常
        public const int EXCEPTION_PREVIEW = 0x8003; //網路預覽異常
        public const int EXCEPTION_SERIAL = 0x8004;//透明通道異常
        public const int EXCEPTION_RECONNECT = 0x8005;//預覽時重連

        public const int NAME_LEN = 32;
        public const int SERIALNO_LEN = 48;
        public const int MACADDR_LEN = 6;
        public const int MAX_ETHERNET = 2;
        public const int PATHNAME_LEN = 128;
        public const int PASSWD_LEN = 16;
        public const int MAX_CHANNUM = 16;
        public const int MAX_ALARMOUT = 4;
        public const int MAX_TIMESEGMENT = 4;
        public const int MAX_PRESET = 128;
        public const int MAX_DAYS = 7;
        public const int PHONENUMBER_LEN = 32;
        public const int MAX_DISKNUM = 16;
        public const int MAX_WINDOW = 16;
        public const int MAX_VGA = 1;
        public const int MAX_USERNUM = 16;
        public const int MAX_EXCEPTIONNUM = 16;
        public const int MAX_LINK = 6;
        public const int MAX_ALARMIN = 16;
        public const int MAX_VIDEOOUT = 2;
        public const int MAX_NAMELEN = 16; //DVR本地登陸名
        public const int MAX_RIGHT = 32;//許可權
        public const int CARDNUM_LEN = 20;
        public const int MAX_SHELTERNUM = 4;//遮擋區域數
        public const int MAX_DECPOOLNUM = 4;
        public const int MAX_DECNUM = 4;
        public const int MAX_TRANSPARENTNUM = 2;
        public const int MAX_STRINGNUM = 4;
        public const int MAX_AUXOUT = 4;

        /* 網路介面定義 */
        public const int NET_IF_10M_HALF = 1;    /* 10M ethernet */
        public const int NET_IF_10M_FULL = 2;
        public const int NET_IF_100M_HALF = 3;    /* 100M ethernet */
        public const int NET_IF_100M_FULL = 4;
        public const int NET_IF_AUTO = 5;

        //裝置型號(DVR型別)
        public const int DVR = 1;
        public const int ATMDVR = 2;
        public const int DVS = 3;
        public const int DEC = 4; /* 6001D */
        public const int ENC_DEC = 5; /* 6001F */
        public const int DVR_HC = 6;
        public const int DVR_HT = 7;
        public const int DVR_HF = 8;
        public const int DVR_HS = 9;
        public const int DVR_HTS = 10;
        public const int DVR_HB = 11;
        public const int DVR_HCS = 12;
        public const int DVS_A = 13;
        public const int DVR_HC_S = 14;
        public const int DVR_HT_S = 15;
        public const int DVR_HF_S = 16;
        public const int DVR_HS_S = 17;
        public const int ATMDVR_S = 18;
        public const int LOWCOST_DVR = 19;
        #endregion

        //  public static readonly  int  SERIALNO_LEN = 48;


        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_Init();

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_Cleanup();

        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_Login(string sDVRIP, ushort wDVRPort, string sUserName, string sPassword, ref  NET_DVR_DEVICEINFO lpDeviceInfo);

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_Logout(int lUserID);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetDVRMessage(uint nMessage, System.IntPtr hWnd);
        //public static extern bool NET_DVR_SetDVRMessCallBack(BOOL (CALLBACK *fMessCallBack)(int  lCommand,char *sDVRIP,char *pBuf,uint  dwBufLen));
        //public static extern bool NET_DVR_SetDVRMessCallBack_EX(BOOL (CALLBACK *fMessCallBack_EX)(int  lCommand,int  lUserID,char *pBuf,uint  dwBufLen));
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetConnectTime(uint dwWaitTime, uint dwTryTimes);
        [DllImport("HCNetSDK.dll")]
        public static extern uint NET_DVR_GetSDKVersion();
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_IsSupport();
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StartListen(string sLocalIP, ushort wLocalPort);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopListen();

        [DllImport("HCNetSDK.dll")]
        public static extern uint NET_DVR_GetLastError();
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetShowMode(uint dwShowType, System.Drawing.Color colorKey);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_GetDVRIPByResolveSvr(string sServerIP, ushort wServerPort, string sDVRName, ushort wDVRNameLen, string sDVRSerialNumber, ushort wDVRSerialLen, string sGetIP);
        //影象預覽
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_RealPlay(int lUserID, ref NET_DVR_CLIENTINFO lpClientInfo);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopRealPlay(int lRealHandle);
        //視訊引數是索引值 1-10
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ClientSetVideoEffect(int lRealHandle, uint dwBrightValue, uint dwContrastValue, uint dwSaturationValue, uint dwHueValue);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ClientGetVideoEffect(int lRealHandle, uint pBrightValue, uint pContrastValue, uint pSaturationValue, uint pHueValue);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_RigisterDrawFun(int lRealHandle, DrawFun x, uint dwUser);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetPlayerBufNumber(int lRealHandle, uint dwBufNum);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ThrowBFrame(int lRealHandle, uint dwNum);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetAudioMode(uint dwMode);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_OpenSound(int lRealHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_CloseSound();
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_OpenSoundShare(int lRealHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_CloseSoundShare(int lRealHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_Volume(int lRealHandle, ushort wVolume);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SaveRealData(int lRealHandle, string sFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopSaveRealData(int lRealHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetRealDataCallBack(int lRealHandle, RealDataCallBack x, uint dwUser);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_CapturePicture(int lRealHandle, string sPicFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_MakeKeyFrame(int lUserID, int lChannel);
        //雲臺控制
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZControl(int lRealHandle, uint dwPTZCommand, uint dwStop);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZControl_Other(int lUserID, int lChannel, uint dwPTZCommand, uint dwStop);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_TransPTZ(int lRealHandle, byte[] pPTZCodeBuf, uint dwBufSize);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_TransPTZ_Other(int lUserID, int lChannel, byte[] pPTZCodeBuf, uint dwBufSize);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZPreset(int lRealHandle, uint dwPTZPresetCmd, uint dwPresetIndex);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZPreset_Other(int lUserID, int lChannel, uint dwPTZPresetCmd, uint dwPresetIndex);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_TransPTZ_EX(int lRealHandle, byte[] pPTZCodeBuf, uint dwBufSize);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZControl_EX(int lRealHandle, uint dwPTZCommand, uint dwStop);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZPreset_EX(int lRealHandle, uint dwPTZPresetCmd, uint dwPresetIndex);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZCruise(int lRealHandle, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZCruise_Other(int lUserID, int lChannel, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZCruise_EX(int lRealHandle, uint dwPTZCruiseCmd, byte byCruiseRoute, byte byCruisePoint, ushort wInput);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZTrack(int lRealHandle, uint dwPTZTrackCmd);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZTrack_Other(int lUserID, int lChannel, uint dwPTZTrackCmd);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZTrack_EX(int lRealHandle, uint dwPTZTrackCmd);
        //帶速度的雲臺控制
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZControlWithSpeed(int lRealHandle, uint dwPTZCommand, uint dwStop, uint dwSpeed);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PTZControlWithSpeed_Other(int lUserID, int lChannel, uint dwPTZCommand, uint dwStop, uint dwSpeed);

        //檔案回放
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_FindFile(int lUserID, int lChannel, uint dwFileType, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_FindNextFile(int lFindHandle, ref NET_DVR_FIND_DATA lpFindData);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_FindClose(int lFindHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_PlayBackByName(int lUserID, string sPlayBackFileName, System.IntPtr hWnd);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_PlayBackByTime(int lUserID, int lChannel, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, System.IntPtr hWnd);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PlayBackControl(int lPlayHandle, uint dwControlCode, uint dwInValue, uint lpOutValue);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopPlayBack(int lPlayHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetPlayDataCallBack(int lPlayHandle, PlayDataCallBack x, uint dwUser);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PlayBackSaveData(int lPlayHandle, string sFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopPlayBackSave(int lPlayHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_GetPlayBackOsdTime(int lPlayHandle, ref NET_DVR_TIME lpOsdTime);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_PlayBackCaptureFile(int lPlayHandle, string sFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_GetFileByName(int lUserID, string sDVRFileName, string sSavedFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_GetFileByTime(int lUserID, int lChannel, ref NET_DVR_TIME lpStartTime, ref NET_DVR_TIME lpStopTime, string sSavedFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopGetFile(int lFileHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_GetDownloadPos(int lFileHandle);

        //恢復預設值
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_RestoreConfig(int lUserID);
        //儲存引數
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SaveConfig(int lUserID);
        //重啟
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_RebootDVR(int lUserID);
        //關閉DVR
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ShutDownDVR(int lUserID);
        //升級
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_Upgrade(int lUserID, string sFileName);
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_GetUpgradeState(int lUpgradeHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_CloseUpgradeHandle(int lUpgradeHandle);
        //遠端格式化硬碟
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_FormatDisk(int lUserID, int lDiskNumber);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_GetFormatProgress(int lFormatHandle, int pCurrentFormatDisk, int pCurrentDiskPos, int pFormatStatic);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_CloseFormatHandle(int lFormatHandle);
        //報警
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_SetupAlarmChan(int lUserID);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_CloseAlarmChan(int lAlarmHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_GetAlarmOut(int lUserID, ref NET_DVR_ALARMOUTSTATUS lpAlarmOutState);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetAlarmOut(int lUserID, int lAlarmOutPort, int lAlarmOutStatic);


        //語音對講
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_StartVoiceCom(int lUserID, fVoiceDataCallBack x, uint dwUser);

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SetVoiceComClientVolume(int lVoiceComHandle, ushort wVolume);

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopVoiceCom(int lVoiceComHandle);
        //語音廣播
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ClientAudioStart();

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ClientAudioStop();

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_AddDVR(int lUserID);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_DelDVR(int lUserID);
        //語音轉發
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StartVoiceCom_MR(int lUserID, fVoiceDataCallBack x, uint dwUser);

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_VoiceComSendData(int lVoiceComHandle, byte[] pSendBuf, uint dwBufSize);

        //透明通道設定
        [DllImport("HCNetSDK.dll")]
        public static extern int NET_DVR_SerialStart(int lUserID, int lSerialPort, SerialDataCallBack x, uint dwUser);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SerialSend(int lSerialHandle, int lChannel, byte[] pSendBuf, uint dwBufSize);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SerialStop(int lSerialHandle);
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_SendTo232Port(int lUserID, byte[] pSendBuf, uint dwBufSize);
        //遠端控制本地顯示
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_ClickKey(int lUserID, int lKeyIndex);

        //遠端控制手動錄影
        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StartDVRRecord(int lUserID, int lChannel, int lRecordType);

        [DllImport("HCNetSDK.dll")]
        public static extern bool NET_DVR_StopDVRRecord(int lUserID, int lChannel);
    }
}

相關推薦

C# sdk

以前用vc開發一個客戶端,現在公司需要做一個視訊點播系統。由於專案比較急用vc做,時間可能會不夠,所以選擇用c#來完成。這個點播系統主要包括客戶端和流媒體伺服器兩個部分。開始專案之前要重新寫海康的.h檔案,引用vc寫的dll。封裝.h檔案。 namespace HIK{   

使用c#封裝SDK出現無法加載 DLL“..inHCNetSDK.dll”: 找不到指定的模塊

com 信息 運行 bsp 發現 圖片 測試 無法 添加 最近在研究網絡攝像頭的二次開發,測試了一款海康威視的網絡攝像頭,程序調試的時候,出現如題的報錯。 調試隨機自帶的demo時,程序運行正常,但當把該程序引入到我自己的程序中時,就開始報錯。根據開發軟件包的提示,將調試所

C#:使用SDK解碼回撥函式DecCallbackFUN()

簡述   使用海康攝像頭採集影象時,需要在影象上新增圖示、文字等額外資料。可選擇使用海康SDK繪圖回撥函式疊加字元、影象等(請參考上一篇文章);也可使用海康SDK的解碼回撥函式,對視訊流資料進行解碼後處理。該方法流程為:呼叫視訊預覽函式NET_DVR_RealPlay_V40()時將第三個引數設定為實時資料

C#:使用SDK解碼回調函數DecCallbackFUN()

prev stc pad func erro static this ufs start 簡述   使用海康攝像頭采集圖像時,需要在圖像上添加圖標、文字等額外數據。可選擇使用海康SDK繪圖回調函數疊加字符、圖像等(請參考上一篇文章);也可使用海康SDK的

C#:使用SDK繪圖回調函數DrawFun()

efault 技術 對講 eal isp images als ets tpi 簡述 ??使用海康攝像頭采集圖像時,需要在圖像上添加圖標、文字等額外數據。可選擇使用SDK提供的NET_DVR_RigisterDrawFun()函數註冊繪圖回調函數,使用NET_DVR_Rea

sdk

package com.hikvision.artemis.sdk.util; import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Map; imp

威視攝像機的實時讀取篇二(SDK開發環境配置)

參考博主lonelyrains的文章,利用海康SDK+OpenCV,實現了海康攝像機影象實時讀取。篇二介紹海康SDK開發環境配置及相關注意事項。 海康SDK開發環境配置 海康SDK開發環境配置具體步驟類似篇一(http://blog.csdn.net/u011674213/artic

SDK學習一:環境搭建

1,在海康官網 SDK Windows x64下載的SD開發包,將其解壓後得到如下檔案 2,將\Demo示例\4- Java 開發示例\1-ClientDemo匯入到Eclipse中,得到如下檔案結構 3,開啟檔案HCNetSDKCom資料夾必須載入到工程.t

SDK人臉抓拍

1.呼叫dll //不使用demo中的jna.jar使用maven匯入最新jna //windows將HCNetSDK.dll重新命名hcnetsdk,為了和linux相容 //linux下的etc/ld.so.conf新增/××/××/HCNetSDKCom/,然後執行ldconfig HCN

SDK開發筆記(一)

開發環境: Ubuntu14.04 LTS。Qt4.8 SDK版本:CH_HCNetSDK_V5.2.7.3_build20170118_Linux64 1.      先將lib下所有so檔案拷貝到QtDemo/Linux64/lib,用Qtcreator開啟QtClie

SDK二次開發有感

最近在研究海康抓拍機的SDK,在vs2010上實現人臉抓拍圖片功能,起初覺得用SDK很快就能搞定,但是在建立一個工程後蝦米了,按照一切可以參考的資料新增庫等都還是會出現如下問題 1>HiKSdkGetPicture.obj : error LNK2019: 無法解析的

Python呼叫SDK實時顯示網路攝像頭

一. 準備工作 1.下載海康SDK 在海康SDK開發頁面根據自己需求下載相應的SDK版本,解壓之後主要用到標頭檔案和庫檔案兩部分。 2.安裝配置OpenCV 在OpenCV下載頁面下載相應的OpenCV版本Win pack檔案,注意OpenCV3目前只有VS2

使用golang對sdk進行業務開發

目錄 準備工作 開發環境資訊 改寫HCNetSDK.h標頭檔案 開發過程 基本資料型別轉換 業務開發 參考

相機sdk應用

問題:error C4996: 'sprintf': This function or variable may be unsafe. 解決方案:https://www.cnblogs.com/douzi2/p/3974959.html 原因是Visual C++ 200

威視網路攝像機 SDK二次開發(JAVA)(1-開發環境搭建)

硬體環境 相關的硬體環境準備:攝像機型號:DS-2CD2T25FD-I3,按照說明書搭建好硬體環境 SDK下載 開發工具:IDEA20173.3 , JDK: 9 官網SDK地址:http://www.hikvision.com/cn/download_61.html

Windows下VS2017威視相機SDK配置

環境變數MVS自動設定了,MVS安裝後,自動新增系統配置環境,無需手動新增,可以檢視環境變數,發現已經有啦: MVCAM_COMMON_RUNENV C:\Program Files (x86)\MVS\Development(路徑可以自定義安裝) 我們只需要把OpenCV加到環境變數裡 此

威視SDK—ClientDemo-NetBeansPro實現

首先使用Eclipse匯入專案,建議操作如下: 1.複製ClientDemo-NetBeansPro至自己的工作空間 2.使用eclipse建立新的java project,名稱、路徑與該專案一致(ClientDemo-NetBeansPro),這樣會自動匯入該專案 3

關於使用java呼叫威視的動態庫的詳細使用說明(即java呼叫威視SDK的方法)

網上著了好久好久,都是五花八門,而且都是照搬海康威視的官網CS架構的例子,換湯不換藥,最後通過自己的摸索,終於將BS架構中如何呼叫搞定,現具體說明如下: 第一步:在eclipse中新建web工程 第二部:匯入jna.jar包(我使用的是native.loadLibrary()這樣的方式

威視2018屆校園招聘Java/c++內推/網申面試題2017年

海康威視內推/網申面試題目更新版-17/9/17/////////////////////////////////////////////////////////////////////////////面試套題一、 晚上在實驗室突然接到來一個自杭州的電話,海康威視的電話面

【視訊開發】EasyIPCamera通過RTSP協議接入、大華等攝像機,摒棄私有SDK接入弊端

近期工作中需要開發一套視訊監控系統,實現WEB端、手機APP端預覽區域網內的道路監控攝像機,我負責一些後臺服務的開發工作。       由於之前專案中的程式都是採用私有協議、各攝像機廠商的SDK進行視訊監控系統開發,這種技術方案更適合C/S架構的系統,應用於此次專案存在