Exemple #1
0
        /// <summary>
        /// 抓图
        /// </summary>
        /// <param name="CH">通道</param>
        /// <param name="Quality">质量</param>
        /// <param name="Size">
        /// 0=CIF, 1=QCIF, 2=D1 3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA
        /// IPCAM专用{3=UXGA(1600x1200), 4=SVGA(800x600), 5=HD720p(1280x720),6=VGA(640x480) , 7=XVGA, 8=HD900p
        /// </param>
        /// <returns></returns>
        public Image CaptureJPG(int CH, ushort Quality = 2, ushort Size = 0xff)
        {
            bool             res = false;
            NET_DVR_JPEGPARA jpeginfo;

            jpeginfo.wPicQuality = Quality;
            jpeginfo.wPicSize    = Size;
            byte[] data = new byte[this.BufferSize];
            uint   ret  = 0;

            if (Environment.Is64BitProcess)
            {
                res = HCNetSDKia64.NET_DVR_CaptureJPEGPicture_NEW(this.lUserID, CH, ref jpeginfo, data, (uint)data.Length, out ret);
            }
            else
            {
                res = HCNetSDK.NET_DVR_CaptureJPEGPicture_NEW(this.lUserID, CH, jpeginfo, data, (uint)data.Length, out ret);
            }
            if (!res)
            {
                Error();
            }
            MemoryStream ms    = new MemoryStream(data);
            Image        image = System.Drawing.Image.FromStream(ms);

            ms.Close();
            ms.Dispose();
            ms = null;
            System.GC.Collect();
            return(image);
        }
Exemple #2
0
        public bool Connect(string DVRIPAddress, ushort DVRPortNumber, string DVRUserName, string DVRPassword)
        {
            NET_DVR_DEVICEINFO_V30 lpDeviceInfo;

            if (Environment.Is64BitProcess)
            {
                lUserID = HCNetSDKia64.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, out lpDeviceInfo);
            }
            else
            {
                lUserID = HCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, out lpDeviceInfo);
            }
            if (lUserID == -1)
            {
                Error();
            }
            if (lpDeviceInfo.byIPChanNum > 0)
            {
                this.Mode = DevType.NVR;
            }
            else
            {
                this.Mode = DevType.IPC;
                Channel   = lpDeviceInfo.byChanNum;
            }
            return(true);
        }
Exemple #3
0
 //转发音频数据
 public bool SendVoiceData(string fileName)
 {
     try
     {
         IntPtr pUser = new IntPtr(88);
         if (_voice_handle > 0)
         {
             StopTalk();
         }
         //if (_call_back == null) _call_back = new HCNetSDK.VoiceDataCallBack(OnVoiceData);
         _voice_handle = HCNetSDK.NET_DVR_StartVoiceCom_MR_V30(_user_id, VIOCE_CHANNEL, _call_back, pUser);
         if (!File.Exists(fileName))
         {
             return(false);
         }
         _wav_thread = new Thread(new ParameterizedThreadStart(SendWavFile));
         _wav_thread.Start(fileName);
         return(true);
     }
     catch (Exception ex)
     {
         WriteLog("转发音频数据失败:" + ex.Message);
         return(false);
     }
 }
Exemple #4
0
 public bool Open()
 {
     try
     {
         int ret = -1;
         if (!HCNetSDK.NET_DVR_Init())
         {
             return(false);
         }
         _user_id = HCNetSDK.NET_DVR_Login_V30(_ip, _port, _user_name, _password, out deviceInfo);
         if (_user_id < 0)
         {
             return(false);
         }
         _dec_handle = HCNetSDK.NET_DVR_InitG722Encoder();
         // 增加消息处理时间
         if (MessageReceived != null)
         {
             IntPtr pUser = new IntPtr();
             bool   bRet  = HCNetSDK.NET_DVR_SetDVRMessageCallBack_V30(MessageReceived, pUser);
             _alarm_handle = HCNetSDK.NET_DVR_SetupAlarmChan_V30(_user_id);
         }
         return(true);
     }
     catch (Exception ex)
     {
         WriteLog("硬盘录像机打开失败:" + ex.Message);
         return(false);
     }
 }
Exemple #5
0
 public bool Close()
 {
     try
     {
         //if (_call_back != null)
         //{
         //    _call_back = null;
         //}
         // 关闭音频
         CloseSound();
         // 视频
         StopAllRealPlay();
         // 释放音频解码
         HCNetSDK.NET_DVR_ReleaseG722Encoder(_dec_handle);
         // 关闭警告
         if (_alarm_handle > 0)
         {
             HCNetSDK.NET_DVR_CloseAlarmChan_V30(_alarm_handle);
         }
         if (!HCNetSDK.NET_DVR_Logout(_user_id))
         {
             return(false);
         }
         if (!HCNetSDK.NET_DVR_Cleanup())
         {
             return(false);
         }
         return(true);
     }
     catch (Exception ex)
     {
         WriteLog("硬盘录像机关闭失败:" + ex.Message);
         return(false);
     }
 }
Exemple #6
0
        public bool GetWavInfo(string strpath)
        {
            WavInfo    wavInfo = new WavInfo();
            FileInfo   fi      = new FileInfo(strpath);
            FileStream fs      = fi.OpenRead();

            if (fs.Length >= 44)
            {
                byte[] bInfo = new byte[44];
                fs.Read(bInfo, 0, 44);
                wavInfo.groupid  = Encoding.Default.GetString(bInfo, 0, 4);
                wavInfo.filesize = BitConverter.ToInt32(bInfo, 4);
                wavInfo.rifftype = Encoding.Default.GetString(bInfo, 8, 4);
                wavInfo.chunkid  = Encoding.Default.GetString(bInfo, 12, 4);
                if (wavInfo.groupid == "RIFF" && wavInfo.rifftype == "WAVE" && wavInfo.chunkid == "fmt ")
                {
                    wavInfo.chunksize        = BitConverter.ToInt32(bInfo, 16);
                    wavInfo.wformattag       = BitConverter.ToInt16(bInfo, 20);
                    wavInfo.wchannels        = BitConverter.ToUInt16(bInfo, 22);
                    wavInfo.dwsamplespersec  = BitConverter.ToUInt32(bInfo, 24);
                    wavInfo.dwavgbytespersec = BitConverter.ToUInt32(bInfo, 28);
                    wavInfo.wblockalign      = BitConverter.ToUInt16(bInfo, 32);
                    wavInfo.wbitspersample   = BitConverter.ToUInt16(bInfo, 34);
                    wavInfo.datachunkid      = Encoding.Default.GetString(bInfo, 36, 4);
                    wavInfo.datasize         = BitConverter.ToInt32(bInfo, 40);
                    // 读取音频数据
                    int    readBytes = 44, bufBytes = 0, buffSize = 0;
                    int    dataSize = (int)wavInfo.datasize;
                    byte[] fileBuf  = new byte[G722_WAVE_FRAME_SIZE];
                    _wav_buffer = new sbyte[G722_WAVE_FRAME_SIZE];
                    _dec_buffer = new sbyte[G722_VOICE_FRAME_SIZE];
                    //fs.Read(_buffer, 44, wavInfo.datasize);
                    while (readBytes < dataSize)
                    {
                        bufBytes = dataSize - readBytes;
                        if (bufBytes > G722_WAVE_FRAME_SIZE)
                        {
                            bufBytes = G722_WAVE_FRAME_SIZE;
                        }
                        buffSize = fs.Read(fileBuf, 0, bufBytes);
                        for (int i = 0; i < bufBytes; i++)
                        {
                            if (fileBuf[i] > 127)
                            {
                                _wav_buffer[i] = (sbyte)(fileBuf[i] - 256);
                            }
                            else
                            {
                                _wav_buffer[i] = (sbyte)fileBuf[i];
                            }
                        }
                        HCNetSDK.NET_DVR_EncodeG722Frame(_dec_handle, _wav_buffer, _dec_buffer);
                        readBytes += buffSize;
                    }

                    return(true);
                }
            }
            return(false);
        }
Exemple #7
0
        // 关闭声音采集
        public bool SDK_CloseSound()
        {
            bool ret = false;

            HCNetSDK.NET_DVR_CloseSound();
            return(ret);
        }
Exemple #8
0
        protected bool SDK_Cleanup()
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_Cleanup();
            return(ret);
        }
Exemple #9
0
        // 设置网络
        public bool SetConnectTime(uint waitTime, uint tryTimes)
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_SetConnectTime(waitTime, tryTimes);
            return(ret);
        }
Exemple #10
0
 // 云台控制
 public bool PTZControl(int channel, PtzCommand command, PtzStop stop, PtzSpeed speed)
 {
     return(HCNetSDK.NET_DVR_PTZControlWithSpeed(_real_handles[channel - 1]
                                                 , (uint)command
                                                 , (uint)stop
                                                 , (uint)speed));
 }
Exemple #11
0
 // 抓图
 public bool CapturePicture(uint channel, string fileName)
 {
     HCNetSDK.NET_DVR_JPEGPARA jpegPara = new HCNetSDK.NET_DVR_JPEGPARA();
     jpegPara.wPicQuality = 0;
     jpegPara.wPicSize    = 0;
     return(HCNetSDK.NET_DVR_CaptureJPEGPicture(_user_id, (int)channel, ref jpegPara, fileName));
 }
Exemple #12
0
        public bool SDK_Logout()
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_Logout(_user_id);
            return(ret);
        }
Exemple #13
0
        // 结束查找文件
        private bool FindClose()
        {
            bool ret = HCNetSDK.NET_DVR_FindClose_V30(_find_handle);

            _find_handle = -1;
            return(ret);
        }
Exemple #14
0
        public bool SDK_SetVolume(ushort vol)
        {
            bool ret = false;  //????

            ret = HCNetSDK.NET_DVR_Volume(_user_id, vol);
            return(ret);
        }
Exemple #15
0
        // 默认取第一个通道
        public bool OpenSound()
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_OpenSound(_real_handles[0]);
            ret = HCNetSDK.NET_DVR_Volume(_real_handles[0], 65535);// 设置最大声音
            return(ret);
        }
Exemple #16
0
        // 采集声音
        public bool SDK_OpenSound(int lRealHandle)
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_OpenSound(lRealHandle);
            HCNetSDK.NET_DVR_Volume(lRealHandle, 65535);// 设置最大声音
            return(ret);
        }
Exemple #17
0
 public bool Close()
 {
     HCNetSDK.NET_DVR_ReleaseG722Encoder(_dec_handle);
     if (!SDK_Logout())
     {
         return(false);
     }
     return(SDK_Cleanup());
 }
Exemple #18
0
 //视频控制
 public int SDK_RealPlay(int lChannel, int lLinkMode, IntPtr hPlayWnd)
 {
     lpClientInfo                = new NET_DVR_CLIENTINFO();
     lpClientInfo.lChannel       = lChannel;
     lpClientInfo.lLinkMode      = lLinkMode;
     lpClientInfo.hPlayWnd       = hPlayWnd;
     _real_handles[lChannel - 1] = HCNetSDK.NET_DVR_RealPlay_V30(_user_id, ref lpClientInfo, null, 1, false);
     return(_real_handles[lChannel - 1]);
 }
Exemple #19
0
 //-----------------------------新API-------------------------------
 #region <DVR 函数>
 // 登录DVR系统
 public bool Login()
 {
     _user_id = HCNetSDK.NET_DVR_Login_V30(_ip, _port, _user_name, _password, out deviceInfo);
     if (_user_id < 0)
     {
         return(false);
     }
     return(true);
 }
Exemple #20
0
        public bool SDK_StopRealPlay(int lRealHandle)
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
            // add
            HCNetSDK.NET_DVR_SetAudioMode(1);
            return(ret);
        }
Exemple #21
0
 /// <summary>
 /// 按文件名回放录像文件
 /// </summary>
 /// <param name="fileName"> 回放的文件名,长度不能超过100字节</param>
 /// <param name="hWnd">窗口句柄</param>
 /// <returns></returns>
 public bool PlayBackByName(string fileName, IntPtr hWnd)
 {
     _play_handle = HCNetSDK.NET_DVR_PlayBackByName(_user_id, fileName, hWnd);
     if (_play_handle < 0)
     {
         return(false);
     }
     return(true);
 }
Exemple #22
0
        public void SendWavFile(object strpath)
        {
            WavInfo    wavInfo = new WavInfo();
            FileInfo   fi      = new FileInfo((string)strpath);
            FileStream fs      = fi.OpenRead();
            bool       ret     = false;

            if (fs.Length >= 44)
            {
                byte[] bInfo = new byte[44];
                fs.Read(bInfo, 0, 44);
                wavInfo.groupid  = Encoding.Default.GetString(bInfo, 0, 4);
                wavInfo.filesize = BitConverter.ToInt32(bInfo, 4);
                wavInfo.rifftype = Encoding.Default.GetString(bInfo, 8, 4);
                wavInfo.chunkid  = Encoding.Default.GetString(bInfo, 12, 4);
                if (wavInfo.groupid == "RIFF" && wavInfo.rifftype == "WAVE" && wavInfo.chunkid == "fmt ")
                {
                    wavInfo.chunksize        = BitConverter.ToInt32(bInfo, 16);
                    wavInfo.wformattag       = BitConverter.ToInt16(bInfo, 20);
                    wavInfo.wchannels        = BitConverter.ToUInt16(bInfo, 22);
                    wavInfo.dwsamplespersec  = BitConverter.ToUInt32(bInfo, 24);
                    wavInfo.dwavgbytespersec = BitConverter.ToUInt32(bInfo, 28);
                    wavInfo.wblockalign      = BitConverter.ToUInt16(bInfo, 32);
                    wavInfo.wbitspersample   = BitConverter.ToUInt16(bInfo, 34);
                    wavInfo.datachunkid      = Encoding.Default.GetString(bInfo, 36, 4);
                    wavInfo.datasize         = BitConverter.ToInt32(bInfo, 40);
                    // 读取音频数据
                    int    readBytes = 0, bufBytes = 0, buffSize = 0;
                    int    dataSize    = (int)wavInfo.datasize;
                    byte[] fileBuf     = new byte[G722_WAVE_FRAME_SIZE];
                    byte[] _wav_buffer = new byte[G722_WAVE_FRAME_SIZE];
                    byte[] _dec_buffer = new byte[G722_VOICE_FRAME_SIZE];
                    //fs.Read(_buffer, 44, wavInfo.datasize);
                    while (readBytes < dataSize)
                    {
                        bufBytes = dataSize - readBytes;
                        if (bufBytes > G722_WAVE_FRAME_SIZE)
                        {
                            bufBytes = G722_WAVE_FRAME_SIZE;
                        }
                        buffSize = fs.Read(fileBuf, 0, bufBytes);
                        if (buffSize == 0)
                        {
                            break;
                        }
                        ret        = HCNetSDK.NET_DVR_EncodeG722Frame(_dec_handle, fileBuf, _dec_buffer);
                        ret        = HCNetSDK.NET_DVR_VoiceComSendData(_voice_handle, _dec_buffer, G722_VOICE_FRAME_SIZE);
                        readBytes += buffSize;
                        Thread.Sleep(40);
                    }
                    StopTalk();
                    //return true;
                }
            }
            // return false;
        }
Exemple #23
0
        // 初始化设备SDK
        public int SDK_Init()
        {
            bool ret = HCNetSDK.NET_DVR_Init();

            if (!ret)
            {
                return(-1);
            }
            return(0);
        }
Exemple #24
0
        // 释放SDK
        protected int SDK_Cleanup()
        {
            bool ret = HCNetSDK.NET_DVR_Cleanup();

            if (!ret)
            {
                return(-1);
            }
            return(0);
        }
Exemple #25
0
 /// <summary>
 /// 按键
 /// </summary>
 /// <param name="Key">
 ///    1-按钮1;       2-按钮2……9-按钮9;10-按钮0,
 ///    11-POWER     12-MENU    13-ENTER    14-"ESC"
 ///    15-"上"或者"云台上开始"      16-"下"或者"云台下开始"
 ///    17-"左"或者"云台左开始"      18-"右"或者"云台右开始"
 ///    19-"EDIT"或者"光圈+开始"   22-"PLAY"
 ///    23-"REC"                             24-"PAN"或者"光圈-开始"
 ///    25-"多画面"或者"聚焦-开始"  26-"输入法"或者"聚焦+开始"
 ///    27-"对讲"    28-"系统信息"     29-"快进"    30-"快退"
 ///    32-"云台上结束"     33-"云台下结束"       34-"云台左结束"
 ///    35-"云台右结束"     36-"光圈+结束"        37-"光圈-结束"
 ///    38-"聚焦+结束"      39-"聚焦-结束"         40-"变倍+开始"
 ///    41-"变倍+结束"       42-"变倍-开始"       43-"变倍-结束"
 ///    44-按钮11              45-按钮12            46-按钮13
 ///    47-按钮14              48-按钮15            49-按钮16
 /// </param>
 /// <returns></returns>
 public bool Panel(int Key)
 {
     if (Environment.Is64BitProcess)
     {
         return(HCNetSDKia64.NET_DVR_ClickKey(this.lUserID, Key));
     }
     else
     {
         return(HCNetSDK.NET_DVR_ClickKey(this.lUserID, Key));
     }
 }
Exemple #26
0
        public bool SDK_StopTalk()
        {
            bool ret = false;

            if (_talk_handle > -1)
            {
                ret = HCNetSDK.NET_DVR_StopVoiceCom(_talk_handle);
            }
            _talk_handle = -1;
            return(ret);
        }
Exemple #27
0
 /// <summary>
 /// 恢复设备本地面板控制
 /// </summary>
 public void UnLockPanel()
 {
     if (Environment.Is64BitProcess)
     {
         HCNetSDKia64.NET_DVR_UnLockPanel(this.lUserID);
     }
     else
     {
         HCNetSDK.NET_DVR_UnLockPanel(this.lUserID);
     }
 }
Exemple #28
0
        // 登出DVR系统
        public int SDK_Logout()
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_Logout(_user_id);
            if (!ret)
            {
                return(-1);
            }
            return(0);
        }
Exemple #29
0
        // 关闭视频
        public int SDK_StopRealPlay(int lRealHandle)
        {
            bool ret = false;

            ret = HCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
            if (!ret)
            {
                return(-1);
            }
            return(0);
        }
Exemple #30
0
        // 设置音量
        public int SDK_SetVolume(ushort vol)
        {
            bool ret = false;  //????

            ret = HCNetSDK.NET_DVR_Volume(_user_id, vol);
            if (!ret)
            {
                return(-1);
            }
            return(0);
        }