Exemplo n.º 1
0
        private void Init()
        {
            _loginedDeviceDict  = new ConcurrentDictionary <string, DevLoginModel>();
            _HCRealDataCallback = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);

            bool isInit = CHCNetSDK.NET_DVR_Init();
        }
        public async void Preview()
        {
           // if (App.DataCamera[this.Postion].m_lRealHandle > 0)
            
                CHCNetSDK.NET_DVR_StopRealPlay(App.DataCamera[this.Postion].m_lRealHandle);
                await Task.Delay(50);
            
            //LocationMedia media = new LocationMedia(App.DataCamera[this.Postion].rtsp);
           // media.ParsedChanged += media_ParsedChanged;
           // this.myVlcControl.Media = media;
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
            lpClientInfo.lChannel = App.DataCamera[this.Postion].channel;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
            m_ptrRealHandle = pictureBox1.Handle;
            m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
            IntPtr pUser = new IntPtr();
            App.DataCamera[this.Postion].m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(App.DataCamera[this.Postion].m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);

            if (App.DataCamera[this.Postion].m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                MessageBox.Show("Lỗi không thể truy cập camera");
                return;
            }


        }
Exemplo n.º 3
0
        private void preview()
        {
            try
            {
                this.Invoke((EventHandler) delegate
                {
                    CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                    lpPreviewInfo.hPlayWnd        = pictureBox1.Handle;                                     // 预览窗口
                    lpPreviewInfo.lChannel        = 1;                                                      // 设置设备通道
                    lpPreviewInfo.dwStreamType    = 0;                                                      //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                    lpPreviewInfo.dwLinkMode      = 0;                                                      //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                    lpPreviewInfo.bBlocked        = true;                                                   //0- 非阻塞取流,1- 阻塞取流
                    lpPreviewInfo.dwDisplayBufNum = 15;                                                     //播放库播放缓冲区最大缓冲帧数

                    CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
                    IntPtr pUser  = new IntPtr();                                                           //用户数据
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                    if (m_lRealHandle < 0)
                    {
                        uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                        string str    = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
                        // MessageBox.Show(str);
                        return;
                    }
                    else
                    {
                        //预览成功
                        //btnPreview.Text = "Stop Live View";
                    }
                }
                            );
            }
            catch { }
        }
Exemplo n.º 4
0
 public void ShowVideo()
 {
     if (m_lUserID < 0)
     {
         MessageBox.Show("Please login the device firstly");
         return;
     }
     if (m_lRealHandle < 0)
     {
         CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
         lpPreviewInfo.hPlayWnd        = image.Handle;     //预览窗口
         lpPreviewInfo.lChannel        = Int16.Parse("1"); //预te览的设备通道
         lpPreviewInfo.dwStreamType    = 0;                //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
         lpPreviewInfo.dwLinkMode      = 0;                //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
         lpPreviewInfo.bBlocked        = true;             //0- 非阻塞取流,1- 阻塞取流
         lpPreviewInfo.dwDisplayBufNum = 1;                //播放库播放缓冲区最大缓冲帧数
         lpPreviewInfo.byProtoType     = 0;
         lpPreviewInfo.byPreviewMode   = 0;
         if (RealData == null)
         {
             RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
         }
         IntPtr pUser = new IntPtr();                                     //用户数据
         //打开预览 Start live view
         m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
         if (m_lRealHandle < 0)
         {
             iLastErr = CHCNetSDK.NET_DVR_GetLastError();
             str      = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
             MessageBox.Show(str);
             return;
         }
     }
 }
Exemplo n.º 5
0
        public int startPreview(int m_lUserID, int lChannel)
        {
            int RealHandle = -1;

            lpPreviewInfo              = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            lpPreviewInfo.lChannel     = lChannel; //预览的设备通道 the device channel number
            lpPreviewInfo.dwStreamType = 0;        //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode   = 0;        //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked     = true;     //0- 非阻塞取流,1- 阻塞取流

            IntPtr pUser = IntPtr.Zero;            //用户数据 user data

            if (previewMode == 0)
            {
                lpPreviewInfo.hPlayWnd = m_ptrRealHandle;//预览窗口 live view window
                RealHandle             = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser);
            }
            else
            {
                lpPreviewInfo.hPlayWnd = IntPtr.Zero;                        //预览窗口 live view window
                RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数 real-time stream callback function
                //3.实时预览
                RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
            }
            return(RealHandle);
        }
Exemplo n.º 6
0
 public void Preview(System.Windows.Forms.PictureBox RealPlayWnd)
 {
     if (m_lUserID < 0)
     {
         return;
     }
     if (m_lRealHandle < 0)
     {
         CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
         lpPreviewInfo.hPlayWnd        = RealPlayWnd.Handle; //预览窗口
         lpPreviewInfo.lChannel        = 1;                  //预te览的设备通道
         lpPreviewInfo.dwStreamType    = 0;                  //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
         lpPreviewInfo.dwLinkMode      = 0;                  //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
         lpPreviewInfo.bBlocked        = true;               //0- 非阻塞取流,1- 阻塞取流
         lpPreviewInfo.dwDisplayBufNum = 1;                  //播放库播放缓冲区最大缓冲帧数
         lpPreviewInfo.byProtoType     = 0;
         lpPreviewInfo.byPreviewMode   = 0;
         if (RealData == null)
         {
             RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
         }                                                                                                       //预览实时流回调函数
         IntPtr pUser = new IntPtr();                                                                            //用户数据
         m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); //打开预览 Start live view
     }
 }
Exemplo n.º 7
0
        /// <summary>
        /// 实时视频信息
        /// </summary>
        private void GetRealPlay()
        {
            try
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd     = pictureBox1.Handle;                                        //预览窗口
                lpPreviewInfo.lChannel     = SystemClass.lChannel;                                      //预te览的设备通道
                lpPreviewInfo.dwStreamType = 0;                                                         //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode   = 0;                                                         //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked     = true;                                                      //0- 非阻塞取流,1- 阻塞取流

                CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
                IntPtr pUser = new IntPtr();                                                            //用户数据

                //打开预览 Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                if (m_lRealHandle < 0)
                {
                    uint iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                }
            }
            catch (Exception ex)
            {
                CommonalityEntity.WriteTextLog(ex.Message);
            }
        }
        private void btnPreview_Click()
        {
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();

            int channel = 1;

            lpClientInfo.lChannel     = channel;
            lpClientInfo.lLinkMode    = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            if (m_iPreviewType == 0)                 // use by callback
            {
                lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
                m_ptrRealHandle       = pictureBox1.Handle;
                m_fRealData           = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
                IntPtr pUser = new IntPtr();
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);
            }
            else if (1 == m_iPreviewType)
            {
                lpClientInfo.hPlayWnd = pictureBox1.Handle;
                IntPtr pUser = new IntPtr();
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1);
            }
            if (m_lRealHandle == -1)
            {
                // uint nError = CHCNetSDK.NET_DVR_GetLastError();
                // DebugInfo("NET_DVR_RealPlay fail %d!");
                return;
            }
        }
        public async void Preview()
        {
            // if (App.DataCamera[this.Postion].m_lRealHandle > 0)

            CHCNetSDK.NET_DVR_StopRealPlay(App.DataCamera[this.Postion].m_lRealHandle);
            await Task.Delay(50);

            //LocationMedia media = new LocationMedia(App.DataCamera[this.Postion].rtsp);
            // media.ParsedChanged += media_ParsedChanged;
            // this.myVlcControl.Media = media;
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
            lpClientInfo.lChannel     = App.DataCamera[this.Postion].channel;
            lpClientInfo.lLinkMode    = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            lpClientInfo.hPlayWnd     = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
            m_ptrRealHandle           = pictureBox1.Handle;
            m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
            IntPtr pUser = new IntPtr();

            App.DataCamera[this.Postion].m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(App.DataCamera[this.Postion].m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);

            if (App.DataCamera[this.Postion].m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                MessageBox.Show("Lỗi không thể truy cập camera");
                return;
            }
        }
 public void Preview()
 {
     CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
     lpClientInfo.lChannel     = this.Camera.channel;
     lpClientInfo.lLinkMode    = 0x0000;
     lpClientInfo.sMultiCastIP = "";
     if (this.Camera.m_iPreviewType == 0)     // use by callback
     {
         lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
         m_ptrRealHandle       = pictureBox1.Handle;
         m_fRealData           = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
         IntPtr pUser = new IntPtr();
         this.Camera.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(this.Camera.m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);
     }
     else if (1 == this.Camera.m_iPreviewType)
     {
         m_ptrRealHandle = pictureBox1.Handle;
         IntPtr pUser = new IntPtr();
         this.Camera.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(this.Camera.m_lUserID, ref lpClientInfo, null, pUser, 1);
     }
     if (this.Camera.m_lRealHandle == -1)
     {
         uint nError = CHCNetSDK.NET_DVR_GetLastError();
         MessageBox.Show("Lỗi không thể truy cập camera");
         return;
     }
 }
        private void btnPreview_Click()
        {
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();

            int channel = 1;
            lpClientInfo.lChannel = channel;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            if (m_iPreviewType == 0) // use by callback
            {
                lpClientInfo.hPlayWnd = IntPtr.Zero;// todo!!! 这边应该做2中情况考虑去编写代码
                m_ptrRealHandle = pictureBox1.Handle;
                m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
                IntPtr pUser = new IntPtr();
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);

            }
            else if (1 == m_iPreviewType)
            {
                lpClientInfo.hPlayWnd = pictureBox1.Handle;
                IntPtr pUser = new IntPtr();
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1);
            }
            if (m_lRealHandle == -1)
            {
                // uint nError = CHCNetSDK.NET_DVR_GetLastError();
                // DebugInfo("NET_DVR_RealPlay fail %d!");
                return;
            }
        }
Exemplo n.º 12
0
        public void Preview()
        {
            if (App.DataCamera[this.postion].m_lRealHandle >= 0)
            {
                CHCNetSDK.NET_DVR_StopRealPlay(App.DataCamera[this.postion].m_lRealHandle);
            }
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
            lpClientInfo.lChannel     = App.DataCamera[this.postion].channel;
            lpClientInfo.lLinkMode    = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            // App.DataCamera[this.postion].m_iPreviewType = 1;
            lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
            m_ptrRealHandle       = pictureBox1.Handle;
            m_fRealData           = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
            IntPtr pUser = new IntPtr();

            App.DataCamera[this.postion].m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(App.DataCamera[this.postion].m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);

            if (App.DataCamera[this.postion].m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                MessageBox.Show("Lỗi không thể truy cập camera");
                return;
            }
        }
Exemplo n.º 13
0
        private void VideoInitAndPriview()
        {
            if (sbtnLook.Text == "预览")
            {
                m_bInitSDK = CHCNetSDK.NET_DVR_Init();
                if (m_bInitSDK == false)
                {
                    //MessageBox.Show("设备初始化失败!");
                    return;
                }

                m_lUserID = CHCNetSDK.NET_DVR_Login_V30(DVRIPAddress, DVRPortNumber, DVRUserName, DVRPassword, ref m_struDeviceInfo);
                if (m_lUserID == -1)
                {
                    MessageBox.Show("登录失败!");
                    return;
                }
                else
                {
                    //MessageBox.Show("登录成功!");
                    TimerStart();
                    //StartAlarmVideo();

                    CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();                         //摄像头 配置信息结构
                    lpClientInfo.lChannel     = 1;
                    lpClientInfo.lLinkMode    = 0x0000;                                                                     //最高位(31)为0表示主码流,为1表示子码流,0-30位表示码流连接方式: 0:TCP方式,1:UDP方式,2:多播方式,3 - RTP方式,4-音视频分开(TCP)
                    lpClientInfo.sMultiCastIP = "";                                                                         //多播组地址
                    if (m_iPreviewType == 0)                                                                                // use by callback
                    {
                        lpClientInfo.hPlayWnd = IntPtr.Zero;                                                                //播放窗口的句柄,为NULL表示不播放图象
                        m_ptrRealHandle       = RealPlayWnd.Handle;                                                         //获取控件绑定到的窗口句柄。 RealPlayWnd显示界面
                        m_fRealData           = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);                           // 预览回调
                        IntPtr pUser = new IntPtr();
                        m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1); //实时预览
                    }
                    else if (1 == m_iPreviewType)
                    {
                        lpClientInfo.hPlayWnd = RealPlayWnd.Handle;
                        IntPtr pUser = new IntPtr();
                        m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1);
                    }
                    if (m_lRealHandle == -1)
                    {
                        uint nError = CHCNetSDK.NET_DVR_GetLastError();
                        VideoRetErrorDis(nError);
                        //DebugInfo("NET_DVR_RealPlay fail %d!");
                        return;
                    }
                    sbtnLook.Text = "停止预览";
                    //this.btnPriview.Image = global::HikHelp.Properties.Resources.停止预览;
                }
            }
            else if (sbtnLook.Text == "停止预览")
            {
                sbtnLook.Text = "预览";
                //btnPriview.Image = global::HikHelp.Properties.Resources.预览;
                StopPriview();
            }
        }
Exemplo n.º 14
0
        /// <summary>
        /// 开启录像
        /// </summary>
        /// <param name="IP"></param>
        /// <param name="Channel"></param>
        /// <returns></returns>
        public static int Rec(string IP, int Channel, string strDeviceID)
        {
            CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            //lpPreviewInfo.hPlayWnd = handle;//预览窗口
            lpPreviewInfo.lChannel        = Channel;                                                //预te览的设备通道
            lpPreviewInfo.dwStreamType    = 0;                                                      //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode      = 0;                                                      //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked        = true;                                                   //0- 非阻塞取流,1- 阻塞取流
            lpPreviewInfo.dwDisplayBufNum = 15;                                                     //播放库播放缓冲区最大缓冲帧数

            CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
            IntPtr pUser = new IntPtr();                                                            //用户数据

            if (!userIDList.ContainsKey(IP))
            {
                return(-1);
            }
            int m_lUserID = userIDList[IP];
            //打开预览 Start live view
            int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);

            if (m_lRealHandle < 0)
            {
            }
            else
            {
                //录像保存路径和文件名 the path and file name to save
                string   sVideoFileName;
                DateTime dt = DateTime.Now;
                sVideoFileName = IP + "_" + Channel + dt.ToString("yyyyMMddHHmmss") + "手动.mp4";
                //预览成功
                //强制I帧 Make a I frame
                int lChannel = Channel; //通道号 Channel number
                CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel);

                //开始录像 Start recording
                if (CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle, path + sVideoFileName))
                {
                    RealHandleList.Add(IP + "," + Channel + "_1", m_lRealHandle);
                    RecInfo info = new RecInfo(sVideoFileName, dt, "手动录像");
                    RecDataClass.recInfo.Add(IP + "," + Channel + "_1", info);

                    //写入数据库
                    RecFileList recFileList = new RecFileList();
                    recFileList.CameraID     = strDeviceID;
                    recFileList.RecName      = sVideoFileName;
                    recFileList.RecRecFile   = path + sVideoFileName;
                    recFileList.RecStartDate = dt.ToString("yyyy-MM-dd");
                    recFileList.RecStartTime = dt.ToString("HH:mm:ss");
                    recFileList.RecType      = "1";
                    RecFileClass.AddStartTime(recFileList);
                }
                else
                {
                    return(-1);
                }
            }
            return(m_lRealHandle);
        }
Exemplo n.º 15
0
        private void LivePreView()
        {
            // LoginUser();

            if (m_lUserID < 0)
            {
                LoginUser();
                return;
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();

                ovalPictureBox.Invoke(new ForTest(() =>
                {
                    ovalPictureBox.BackgroundImageLayout = ImageLayout.Zoom;
                    ovalPictureBox.SizeMode = PictureBoxSizeMode.Zoom;
                    lpPreviewInfo.hPlayWnd  = ovalPictureBox.Handle;
                }));


                lpPreviewInfo.lChannel        = Int16.Parse(dvrControl.dvrObject.Channel);
                lpPreviewInfo.dwStreamType    = 0;
                lpPreviewInfo.dwLinkMode      = 0;
                lpPreviewInfo.bBlocked        = true;
                lpPreviewInfo.dwDisplayBufNum = 1;
                lpPreviewInfo.byProtoType     = 0;
                lpPreviewInfo.byPreviewMode   = 0;


                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//Ô¤ÀÀʵʱÁ÷»Øµ÷º¯Êý
                }

                IntPtr pUser = new IntPtr();//Óû§Êý¾Ý

                //´ò¿ªÔ¤ÀÀ Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //Ô¤ÀÀʧ°Ü£¬Êä³ö´íÎóºÅ
                                                                                       // FailCamera();

                    MessageControl messageControl = new MessageControl("Fail", str);
                    messageControl.ShowDialog();

                    return;
                }
                else
                {
                    SetImageRight();
                }
                //SuccessCamera();
            }
            return;
        }
Exemplo n.º 16
0
        public void Button_Click_1(object sender, RoutedEventArgs e)
        {
            #region
            if (m_lUserID < 0)
            {
                MessageBox.Show("Please login the device firstly");
                return;
            }
            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd = image.Handle;//预览窗口
                //lpPreviewInfo.hPlayWnd = ((HwndSource)PresentationSource.FromVisual(this)).Handle;//预览窗口
                //lpPreviewInfo.hPlayWnd = new WindowInteropHelper(display).Handle;//预览窗口
                lpPreviewInfo.lChannel        = Int16.Parse("1"); //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 0;                //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;                //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;             //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 1;                //播放库播放缓冲区最大缓冲帧数
                lpPreviewInfo.byProtoType     = 0;
                lpPreviewInfo.byPreviewMode   = 0;
                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数
                }

                IntPtr pUser = new IntPtr();//用户数据
                //打开预览 Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                }
                //SetParent(lpPreviewInfo.hPlayWnd, RealPlayWnd.Handle);
                //ShowWindowAsync(lpPreviewInfo.hPlayWnd, 3);
            }
            else
            {
                //停止预览 Stop live view
                if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_StopRealPlay failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }
                m_lRealHandle = -1;
            }

            return;

            #endregion
        }
        public static int RealPlay(CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo)
        {
            CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(SDKCommon.RealDataCallBack);
            IntPtr pUser = new IntPtr();

            m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, RealData, pUser, 1);
            return(m_lRealHandle);
        }
Exemplo n.º 18
0
        /// <summary>
        /// 预览硬盘录像机视频
        /// </summary>
        /// <param name="lpClientInfo">预览参数 </param>
        /// <returns></returns>
        public static int RealPlay(int ilChannel, System.Windows.Forms.PictureBox RealPlayWnd)
        {
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = GetRealPlay(ilChannel, RealPlayWnd);
            CHCNetSDK.REALDATACALLBACK   RealData     = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
            IntPtr pUser = new IntPtr();

            m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, RealData, pUser, 1);
            return(m_lRealHandle);
        }
Exemplo n.º 19
0
        public bool ListView(Control RealPlayWnd)
        {
            if (m_lUserID < 0)
            {
                MessageBox.Show("请先登录摄像头!");
                return(false);
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd        = RealPlayWnd.Handle; //预览窗口
                lpPreviewInfo.lChannel        = 1;                  // Int16.Parse(1);//预te览的设备通道 默认为1
                lpPreviewInfo.dwStreamType    = 0;                  //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;                  //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;               //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 1;                  //播放库播放缓冲区最大缓冲帧数
                lpPreviewInfo.byProtoType     = 0;
                lpPreviewInfo.byPreviewMode   = 0;

                /***
                 * if (textBoxID.Text != "")
                 * {
                 *  lpPreviewInfo.lChannel = -1;
                 *  byte[] byStreamID = System.Text.Encoding.Default.GetBytes(textBoxID.Text);
                 *  lpPreviewInfo.byStreamID = new byte[32];
                 *  byStreamID.CopyTo(lpPreviewInfo.byStreamID, 0);
                 * }
                 ***/

                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数
                }

                IntPtr pUser = new IntPtr();//用户数据

                //打开预览 Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "预览错误,错误号= " + iLastErr; //预览失败,输出错误号
                    MessageBox.Show(str);
                    return(false);
                }
                else
                {
                    Status = 2;
                    //预览成功
                    return(true);
                }
            }
            Status = 0;
            return(false);
        }
 public override void PreviewFun(int userID, int channel)
 {
     CrossThreadPictureBox();
     if (userID < 0)
     {
         MessageBox.Show("该设备初始化登录失败!");
     }
     if (g_lRealHandle < 0)
     {
         // m_ptrRealHandle = m_picturebox.Handle;
         CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO(); //定义预览参数
         lpPreviewInfo.hPlayWnd        = m_picturebox.Handle;                               //预览窗口句柄绑定
         lpPreviewInfo.lChannel        = channel + 32;                                      //要预览的设备通道号
         lpPreviewInfo.dwStreamType    = 0;                                                 //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
         lpPreviewInfo.dwLinkMode      = 0;                                                 //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
         lpPreviewInfo.bBlocked        = true;                                              //0- 非阻塞取流,1- 阻塞取流
         lpPreviewInfo.dwDisplayBufNum = 15;                                                //播放库显示缓冲区最大帧数
         IntPtr pUser = IntPtr.Zero;                                                        //用户数据
         lpPreviewInfo.hPlayWnd = IntPtr.Zero;                                              //预览窗口 live view window
         RealData      = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);                  //预览实时流回调函数 real-time stream callback function
         g_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(userID, ref lpPreviewInfo, RealData, pUser);
         if (g_lRealHandle < 0)
         {
             iLastErr = CHCNetSDK.NET_DVR_GetLastError();
             MessageBox.Show("预览失败,输出错误号: " + iLastErr); //预览失败,输出错误号
             return;
         }
         else
         {
             CrossThreadOperationControl CrossDeleBtn = delegate()
             {
                 Mainform.form1.kButtonView.Text = "停止预览";
             };
             Mainform.form1.kPictureBox.Invoke(CrossDeleBtn);
         }
     }
     else
     {
         //停止预览 Stop live view
         if (!CHCNetSDK.NET_DVR_StopRealPlay(g_lRealHandle))
         {
             iLastErr = CHCNetSDK.NET_DVR_GetLastError();
             MessageBox.Show("NET_DVR_StopRealPlay failed, error code= " + iLastErr);
             return;
         }
         m_picturebox.Invalidate();//刷新窗口
         m_picturebox.Refresh();
         g_lRealHandle = -1;
         StaticData.g_CameraSelectChannel = -1;
         CrossThreadOperationControl CrossDeleBtn = delegate()
         {
             Mainform.form1.kButtonView.Text = "预览";
         };
         Mainform.form1.kPictureBox.Invoke(CrossDeleBtn);
     }
 }
Exemplo n.º 21
0
        private void StartPreview()
        {
            if (m_lUserID < 0)
            {
                Console.WriteLine("[CCTV] - Access Error.");
                return;
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                if (Pb_CCTV.InvokeRequired)
                {
                    Pb_CCTV.Invoke(new MethodInvoker(delegate {
                        lpPreviewInfo.hPlayWnd = Pb_CCTV.Handle;
                    }));
                }
                else
                {
                    lpPreviewInfo.hPlayWnd = Pb_CCTV.Handle;
                }

                lpPreviewInfo.lChannel        = 1;
                lpPreviewInfo.dwStreamType    = 0;
                lpPreviewInfo.dwLinkMode      = 1;
                lpPreviewInfo.bBlocked        = true;
                lpPreviewInfo.dwDisplayBufNum = 1;
                lpPreviewInfo.byProtoType     = 0;
                lpPreviewInfo.byPreviewMode   = 0;

                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
                }

                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, IntPtr.Zero);
                if (m_lRealHandle < 0)
                {
                    Console.WriteLine("[CCTV] - NET_DVR_RealPlay_V40 Failed : {0}", CHCNetSDK.NET_DVR_GetLastError());
                }
                else
                {
                    Console.WriteLine("[CCTV] - Start Preview.");
                    // Event Trigger
                    if (ModeListener != null)
                    {
                        ModeListener(MODE_PREVIEW);
                    }
                }
            }
            //SystemEnv.ShowLogMessage("[CCTV] - RealHandle : {0}", m_lRealHandle);
        }
Exemplo n.º 22
0
        private void startvideo(String filename)
        {
            CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            lpPreviewInfo.hPlayWnd        = RealPlayWnd.Handle;               //预览窗口
            lpPreviewInfo.lChannel        = Int16.Parse(textBoxChannel.Text); //预te览的设备通道
            lpPreviewInfo.dwStreamType    = 0;                                //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode      = 0;                                //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked        = true;                             //0- 非阻塞取流,1- 阻塞取流
            lpPreviewInfo.dwDisplayBufNum = 1;                                //播放库播放缓冲区最大缓冲帧数
            lpPreviewInfo.byProtoType     = 0;
            lpPreviewInfo.byPreviewMode   = 0;
            if (RealData == null)
            {
                RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
            }
            IntPtr pUser = new IntPtr();                                     //用户数据

            //打开预览 Start live view
            m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
            if (m_lRealHandle < 0)
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
                MessageBox.Show(str);
                return;
            }
            else
            {
            }
            //录像保存路径和文件名 the path and file name to save
            string sVideoFileName;

            /* sVideoFileName = "Record_test.mp4";*/
            sVideoFileName = filename;
            //强制I帧 Make a I frame
            int lChannel = Int16.Parse(textBoxChannel.Text); //通道号 Channel number

            CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, lChannel);
            //开始录像 Start recording
            if (!CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle, sVideoFileName))
            {
                iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                str      = "NET_DVR_SaveRealData failed, error code= " + iLastErr;
                return;
            }
            else
            {
                /*MessageBox.Show("开始录像");*/
            }
            return;
        }
Exemplo n.º 23
0
        private void btnPreview_Click(object sender, System.EventArgs e)
        {
            if (m_lUserID < 0)
            {
                MessageBox.Show("Please login the device firstly");
                return;
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd        = RealPlayWnd.Handle;                                     //预览窗口
                lpPreviewInfo.lChannel        = 1;                                                      //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 0;                                                      //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;                                                      //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;                                                   //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 15;                                                     //播放库播放缓冲区最大缓冲帧数

                CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
                IntPtr pUser = new IntPtr();                                                            //用户数据

                //打开预览 Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
                    MessageBox.Show(str);
                    return;
                }
                else
                {
                    //预览成功
                    btnPreview.Text = "停止预览";
                }
            }
            else
            {
                //停止预览 Stop live view
                if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_StopRealPlay failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }
                m_lRealHandle   = -1;
                btnPreview.Text = "开始预览";
            }
            return;
        }
Exemplo n.º 24
0
        public void PreviewStartWeb()
        {
            lpPreviewInfo.lChannel        = 1;                                                      //预te览的设备通道
            lpPreviewInfo.dwStreamType    = 0;                                                      //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode      = 0;                                                      //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked        = true;                                                   //0- 非阻塞取流,1- 阻塞取流
            lpPreviewInfo.dwDisplayBufNum = 15;                                                     //播放库播放缓冲区最大缓冲帧数

            CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数

            IntPtr pUser = new IntPtr();                                                            //用户数据

            //打开预览 Start live view
            m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);
        }
Exemplo n.º 25
0
        private void PlayEve4()
        {
            if (m_lUserID4 < 0)
            {
                MessageBox.Show("Please login the device firstly");
                return;
            }

            if (m_lRealHandle4 < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd        = this.picEye4.Handle;       //预览窗口
                lpPreviewInfo.lChannel        = Int16.Parse(eye_Channel4); //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 1;                         //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;                         //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;                      //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 15;                        //播放库播放缓冲区最大缓冲帧数


                CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack4); //预览实时流回调函数
                IntPtr pUser = new IntPtr();                                                             //用户数据

                //打开预览 Start live view
                m_lRealHandle4 = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID4, ref lpPreviewInfo, null /*RealData*/, pUser);
                if (m_lRealHandle4 < 0)
                {
                    iLastErr4 = CHCNetSDK.NET_DVR_GetLastError();
                    MessageBox.Show("NET_DVR_RealPlay_V40 failed, error code= " + iLastErr4);
                    return;
                }
                else
                {
                }
            }
            else
            {
                //停止预览 Stop live view
                if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle4))
                {
                    iLastErr4 = CHCNetSDK.NET_DVR_GetLastError();

                    MessageBox.Show("NET_DVR_StopRealPlay failed, error code= " + iLastErr4);
                    return;
                }
                m_lRealHandle4 = -1;
            }
            return;
        }
Exemplo n.º 26
0
        /// <summary>
        /// 实时预览
        /// </summary>
        /// <param name="deviceInfo">预览参数</param>
        /// <param name="callBack">码流数据回调函数</param>
        /// <returns>-1预览失败,否则预览成功</returns>
        public override void Preview(DeviceInfo deviceInfo, CHCNetSDK.REALDATACALLBACK callBack)
        {
            IntPtr intPtr = new IntPtr();

            CHCNetSDK.NET_DVR_PREVIEWINFO previewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            previewInfo.hPlayWnd = deviceInfo.Handle;
            //预te览的设备通道
            previewInfo.lChannel = deviceInfo.channel;
            //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            previewInfo.dwStreamType = 0;
            //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            previewInfo.dwLinkMode = 0;
            //0- 非阻塞取流,1- 阻塞取流
            previewInfo.bBlocked = true;

            deviceInfo.realHandle = CHCNetSDK.NET_DVR_RealPlay_V40(deviceInfo.loginId, ref previewInfo, callBack, intPtr);
        }
Exemplo n.º 27
0
        /*预览有两种模式,在于是否传入码回调函数,具体区别可以查阅SDK操作手册,NET_DVR_RealPlay_V30()的返回值
         * 为错误码,可以根据返回的错误码来进行下一步操作(码流是指视频文件在单位时间内使用的数据流量)*/
        private void Previewbtn_Click(object sender, EventArgs e)
        {
            lpClientInfo.lChannel     = 1;
            lpClientInfo.lLinkMode    = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            if (Previewbtn.Text == "预览")
            {
                if (m_iPreviewType == 0) // use by callback
                {
                    lpClientInfo.hPlayWnd = IntPtr.Zero;

                    m_ptrRealHandle = RealPlayWnd.Handle;
                    m_fRealData     = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
                    IntPtr pUser = new IntPtr();
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(Login.result, ref lpClientInfo, m_fRealData, pUser, 1);
                }
                else if (1 == m_iPreviewType)
                {
                    lpClientInfo.hPlayWnd = RealPlayWnd.Handle;
                    IntPtr pUser = new IntPtr();
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(Login.result, ref lpClientInfo, null, pUser, 1);
                }
                if (m_lRealHandle == -1)
                {
                    uint nError = CHCNetSDK.NET_DVR_GetLastError();
                    Information.Text += "发生错误,错误代码:" + nError + System.Environment.NewLine;
                }
                if (m_lRealHandle != -1)
                {
                    Information.Text += "正在预览..." + System.Environment.NewLine;
                    Previewbtn.Text   = "停止预览";
                }
            }
            else
            {
                bool result = CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle);
                if (result == true)
                {
                    Information.Text += "预览结束" + System.Environment.NewLine;
                    RealPlayWnd.Image = null;
                    Previewbtn.Text   = "预览";
                }
            }
        }
Exemplo n.º 28
0
        public void StartPlay(IntPtr handle)
        {
            CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            lpPreviewInfo.hPlayWnd        = handle;                                                 //预览窗口
            lpPreviewInfo.lChannel        = VideoInfo.Channel;                                      //预te览的设备通道
            lpPreviewInfo.dwStreamType    = Convert.ToUInt32(0);                                    //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode      = 0;                                                      //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked        = true;                                                   //0- 非阻塞取流,1- 阻塞取流
            lpPreviewInfo.dwDisplayBufNum = 15;                                                     //播放库播放缓冲区最大缓冲帧数

            CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
            IntPtr pUser = new IntPtr();                                                            //用户数据

            //打开预览 Start live view
            realHandle = CHCNetSDK.NET_DVR_RealPlay_V40(loginUserId, ref lpPreviewInfo, null /*RealData*/, pUser);
            if (realHandle < 0)
            {
                throw new Exception("[海康]播放失败:" + GetErrorMessage());
            }
        }
Exemplo n.º 29
0
        private void StartPreview(int Channel)
        {
            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                // lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle;//预览窗口
                lpPreviewInfo.lChannel        = Channel; //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 0;       //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 4;       //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;    //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 15;      //播放库播放缓冲区最大缓冲帧数


                RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数


                IntPtr pUser = new IntPtr(); //用户数据
                                             //  m_ptrRealHandle = panel1.Handle;
                                             //打开预览 Start live view
                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);

                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号
                    MessageBox.Show(str);
                }
            }
            else
            {
                //停止预览 Stop live view
                if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str      = "NET_DVR_StopRealPlay failed, error code= " + iLastErr;
                    MessageBox.Show(str);
                    return;
                }
                m_lRealHandle = -1;
            }
        }
Exemplo n.º 30
0
 public void StartRecord(string sVideoFileName)
 {
     //强制I帧 Make a I frame
     {
         CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
         lpPreviewInfo.lChannel        = 1;    //预te览的设备通道
         lpPreviewInfo.dwStreamType    = 0;    //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
         lpPreviewInfo.dwLinkMode      = 0;    //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
         lpPreviewInfo.bBlocked        = true; //0- 非阻塞取流,1- 阻塞取流
         lpPreviewInfo.dwDisplayBufNum = 1;    //播放库播放缓冲区最大缓冲帧数
         lpPreviewInfo.byProtoType     = 0;
         lpPreviewInfo.byPreviewMode   = 0;
         if (RealData == null)
         {
             RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
         }                                                                                                       //预览实时流回调函数
         IntPtr pUser = new IntPtr();                                                                            //用户数据
         m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser); //打开预览 Start live view
     }
     Console.WriteLine(m_lRealHandle);
     CHCNetSDK.NET_DVR_MakeKeyFrame(m_lUserID, 1);
     CHCNetSDK.NET_DVR_SaveRealData(m_lRealHandle, sVideoFileName);//开始录像
 }
Exemplo n.º 31
0
        /// <summary>
        /// 预览窗口
        /// </summary>
        /// <param name="m_lUserID">登录成功后返回的句柄</param>
        /// <param name="picLive">picture box</param>
        /// <returns>窗口句柄  m_RealHandle</returns>

        public int display(int m_lUserID, PictureBox picLive)
        {
            CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            lpPreviewInfo.hPlayWnd        = picLive.Handle;                                         //预览窗口
            lpPreviewInfo.lChannel        = Int16.Parse("1");                                       //预te览的设备通道
            lpPreviewInfo.dwStreamType    = 0;                                                      //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode      = 0;                                                      //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked        = true;                                                   //0- 非阻塞取流,1- 阻塞取流
            lpPreviewInfo.dwDisplayBufNum = 15;                                                     //播放库播放缓冲区最大缓冲帧数

            CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack); //预览实时流回调函数
            IntPtr pUser = new IntPtr();                                                            //用户数据

            //打开预览 Start live view
            int m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null /*RealData*/, pUser);

            if (m_lRealHandle < 0)
            {
                MessageBox.Show("预览失败");
                return(-1);
            }
            return(m_lRealHandle);
        }
Exemplo n.º 32
0
        private void btnView_Click(object sender, EventArgs e)
        {
            //开始预览
            if (m_lUserID < 0)
            {
                MessageBox.Show("Please login the device firstly");
                return;
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd        = picView.Handle; //预览窗口
                lpPreviewInfo.lChannel        = 36;             //预te览的设备通道
                lpPreviewInfo.dwStreamType    = 0;              //码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode      = 0;              //连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked        = true;           //0- 非阻塞取流,1- 阻塞取流
                lpPreviewInfo.dwDisplayBufNum = 15;             //播放库播放缓冲区最大缓冲帧数

                if (RealData == null)
                {
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数
                }

                IntPtr pUser = new IntPtr();//用户数据

                m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser);
                if (m_lRealHandle < 0)
                {
                    string str = "NET_DVR_RealPlay_V40 failed, error code= " + CHCNetSDK.NET_DVR_GetLastError(); //预览失败,输出错误号
                    MessageBox.Show(str);
                    return;
                }
                btnView.Enabled       = false;
                btnCancelView.Enabled = true;
            }
        }
        public void Preview()
        {
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
            lpClientInfo.lChannel = this.Camera.channel;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            if (this.Camera.m_iPreviewType == 0) // use by callback
            {
                
                lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
                m_ptrRealHandle = pictureBox1.Handle;
                m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
                IntPtr pUser = new IntPtr();
                this.Camera.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(this.Camera.m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);
            }
            else if (1 == this.Camera.m_iPreviewType)
            {
                m_ptrRealHandle = pictureBox1.Handle;
                IntPtr pUser = new IntPtr();
                this.Camera.m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(this.Camera.m_lUserID, ref lpClientInfo, null, pUser, 1);
            }
            if (this.Camera.m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                MessageBox.Show("Lỗi không thể truy cập camera");
                return;
            }
           

        }
        public int startPreview(int m_lUserID, int lChannel)
        {
            int RealHandle = -1;
            lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
            lpPreviewInfo.lChannel = lChannel;//预览的设备通道 the device channel number
            lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
            lpPreviewInfo.dwLinkMode = 0;//连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
            lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流

            IntPtr pUser = IntPtr.Zero;//用户数据 user data

            if (previewMode == 0)
            {
                lpPreviewInfo.hPlayWnd = m_ptrRealHandle;//预览窗口 live view window
                RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null, pUser);
            }
            else
            {
                lpPreviewInfo.hPlayWnd = IntPtr.Zero;//预览窗口 live view window
                RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function
                //3.实时预览
                RealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
            }
            return RealHandle;
        }
Exemplo n.º 35
0
        private void btnPreview_Click(object sender, System.EventArgs e)
        {
            if (isPreviewing()) {
                stopPreview();
                this.btnPreview.Image = global::PreviewDemo.Properties.Resources.play;
                this.btnPreview.Text = "Reproducir";
                return;
            }

            int channel = 1;
            int.TryParse(this.chanEdt.Text, out channel);
            lpClientInfo.lChannel = channel;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            /*
            lpPreviewInfo.lChannel = channel;
            lpPreviewInfo.dwLinkMode = 0;
            lpPreviewInfo.bBlocked = 1;
            */

            if (m_iPreviewType == 0) // use by callback
            {
                lpClientInfo.hPlayWnd = IntPtr.Zero;// todo!!! 这边应该做2中情况考虑去编写代码
                m_ptrRealHandle = RealPlayWnd.Handle;
                m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
                IntPtr pUser = new IntPtr();
                //m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, m_fRealData, pUser);
                m_lRealHandle = CHCNetSDK.NET_DVR_ZeroStartPlay(m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);
            } else if (1 == m_iPreviewType) {
                lpClientInfo.hPlayWnd = RealPlayWnd.Handle;
                IntPtr pUser = new IntPtr();
                //m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(m_lUserID, ref lpClientInfo, null, pUser, 1);
                m_lRealHandle = CHCNetSDK.NET_DVR_ZeroStartPlay(m_lUserID, ref lpClientInfo, null, pUser, 1);
            }
            if (m_lRealHandle == -1) {
                debugError();
                return;
            }
            this.btnPreview.Image = global::PreviewDemo.Properties.Resources.stop;
            this.btnPreview.Text = "Detener";
        }
        public void Preview()
        {
            if (App.DataCamera[this.postion].m_lRealHandle >= 0)
            {
                CHCNetSDK.NET_DVR_StopRealPlay(App.DataCamera[this.postion].m_lRealHandle);
            }
            CHCNetSDK.NET_DVR_CLIENTINFO lpClientInfo = new CHCNetSDK.NET_DVR_CLIENTINFO();
            lpClientInfo.lChannel = App.DataCamera[this.postion].channel;
            lpClientInfo.lLinkMode = 0x0000;
            lpClientInfo.sMultiCastIP = "";
            // App.DataCamera[this.postion].m_iPreviewType = 1;
            lpClientInfo.hPlayWnd = IntPtr.Zero; // todo!!! 这边应该做2中情况考虑去编写代码
            m_ptrRealHandle = pictureBox1.Handle;
            m_fRealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);
            IntPtr pUser = new IntPtr();
            App.DataCamera[this.postion].m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V30(App.DataCamera[this.postion].m_lUserID, ref lpClientInfo, m_fRealData, pUser, 1);

            if (App.DataCamera[this.postion].m_lRealHandle == -1)
            {
                uint nError = CHCNetSDK.NET_DVR_GetLastError();
                MessageBox.Show("Lỗi không thể truy cập camera");
                return;
            }


        }
Exemplo n.º 37
0
        private void btnPreview_Click(object sender, EventArgs e)
        {
            if (m_lUserID < 0)
            {
                MessageBox.Show("Please login the device firstly!");
                return;
            }

            if (m_bRecord)
            {
                MessageBox.Show("Please stop recording firstly!");
                return;
            }

            //if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd = selectedRealPlayWnd.Handle;//预览窗口 live view window
                lpPreviewInfo.lChannel = iChannelNum[(int)iSelIndex];//预览的设备通道 the device channel number
                lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode = 0;//连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流

                IntPtr pUser = new IntPtr(lpPreviewInfo.lChannel);//IntPtr.Zero;//用户数据 user data
                if (!channelPortDict.ContainsKey(lpPreviewInfo.lChannel))
                {
                    channelPortDict.Add(lpPreviewInfo.lChannel, -1);
                }

                if (!lRealHandleDict.ContainsKey(lpPreviewInfo.lChannel))
                {
                    lRealHandleDict.Add(lpPreviewInfo.lChannel, -1);
                }

                if (comboBoxView.SelectedIndex == 0)
                {
                    //打开预览 Start live view
                    channelPortDict[lpPreviewInfo.lChannel] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser);
                }
                else  //回调解码
                {
                    if (!ptrRealHandleDict.ContainsKey(lpPreviewInfo.lChannel))
                    {
                        ptrRealHandleDict.Add(lpPreviewInfo.lChannel, selectedRealPlayWnd.Handle);
                    }
                    else
                    {
                        ptrRealHandleDict[lpPreviewInfo.lChannel] = selectedRealPlayWnd.Handle;
                    }

                    //RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function
                    //lRealHandleDict[lpPreviewInfo.lChannel] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
                    CHCNetSDK.REALDATACALLBACK RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function
                    RealDataDict.Add(lpPreviewInfo.lChannel, RealData);
                    lRealHandleDict[lpPreviewInfo.lChannel] = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
                }

                if (lRealHandleDict[lpPreviewInfo.lChannel] < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 failed to start live view, and output the error code.
                    DebugInfo(str);
                    return;
                }
                else
                {
                    //预览成功
                    DebugInfo("NET_DVR_RealPlay_V40 succ!");
                    //btnPreview.Text = "Stop View";
                }
            }
            return;
        }
Exemplo n.º 38
0
        private void btnPreview_Click(object sender, EventArgs e)
        {
            if (m_lUserID < 0)
            {
                MessageBox.Show("Please login the device firstly!");
                return;
            }

            if (m_bRecord)
            {
                MessageBox.Show("Please stop recording firstly!");
                return;
            }

            if (m_lRealHandle < 0)
            {
                CHCNetSDK.NET_DVR_PREVIEWINFO lpPreviewInfo = new CHCNetSDK.NET_DVR_PREVIEWINFO();
                lpPreviewInfo.hPlayWnd = RealPlayWnd.Handle;//预览窗口 live view window
                lpPreviewInfo.lChannel = iChannelNum[(int)iSelIndex];//预览的设备通道 the device channel number
                lpPreviewInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-码流3,3-码流4,以此类推
                lpPreviewInfo.dwLinkMode = 0;//连接方式:0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
                lpPreviewInfo.bBlocked = true; //0- 非阻塞取流,1- 阻塞取流

                IntPtr pUser = IntPtr.Zero;//用户数据 user data

                if (comboBoxView.SelectedIndex == 0)
                {
                    //打开预览 Start live view
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, null/*RealData*/, pUser);
                }
                else  //回调解码
                {
                    lpPreviewInfo.hPlayWnd = IntPtr.Zero;//预览窗口 live view window
                    m_ptrRealHandle = RealPlayWnd.Handle;
                    RealData = new CHCNetSDK.REALDATACALLBACK(RealDataCallBack);//预览实时流回调函数 real-time stream callback function
                    m_lRealHandle = CHCNetSDK.NET_DVR_RealPlay_V40(m_lUserID, ref lpPreviewInfo, RealData, pUser);
                }

                if (m_lRealHandle < 0)
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_RealPlay_V40 failed, error code= " + iLastErr; //预览失败,输出错误号 failed to start live view, and output the error code.
                    DebugInfo(str);
                    return;
                }
                else
                {
                    //预览成功
                    DebugInfo("NET_DVR_RealPlay_V40 succ!");
                    btnPreview.Text = "Stop View";
                }
            }
            else
            {
                //停止预览 Stop live view
                if (!CHCNetSDK.NET_DVR_StopRealPlay(m_lRealHandle))
                {
                    iLastErr = CHCNetSDK.NET_DVR_GetLastError();
                    str = "NET_DVR_StopRealPlay failed, error code= " + iLastErr;
                    DebugInfo(str);
                    return;
                }

                if ((comboBoxView.SelectedIndex == 1) && (m_lPort >= 0))
                {
                    if (!PlayCtrl.PlayM4_Stop(m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str = "PlayM4_Stop failed, error code= " + iLastErr;
                        DebugInfo(str);
                    }
                    if (!PlayCtrl.PlayM4_CloseStream(m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str = "PlayM4_CloseStream failed, error code= " + iLastErr;
                        DebugInfo(str);
                    }
                    if (!PlayCtrl.PlayM4_FreePort(m_lPort))
                    {
                        iLastErr = PlayCtrl.PlayM4_GetLastError(m_lPort);
                        str = "PlayM4_FreePort failed, error code= " + iLastErr;
                        DebugInfo(str);
                    }
                    m_lPort = -1;
                }

                DebugInfo("NET_DVR_StopRealPlay succ!");
                m_lRealHandle = -1;
                btnPreview.Text = "Live View";
                RealPlayWnd.Invalidate();//刷新窗口 refresh the window
            }
            return;
        }