Esempio n. 1
0
        public void Replay(System.IntPtr hWnd, DateTime startTime, DateTime endTime)
        {
            try
            {
                NET_DVR_VOD_PARA nET_DVR_VOD_PARA = new NET_DVR_VOD_PARA();
                nET_DVR_VOD_PARA.dwSize = (uint)Marshal.SizeOf(nET_DVR_VOD_PARA);
                nET_DVR_VOD_PARA.struIDInfo.dwChannel = 33;
                nET_DVR_VOD_PARA.hWnd = hWnd;

                nET_DVR_VOD_PARA.struBeginTime.dwYear   = (uint)startTime.Year;
                nET_DVR_VOD_PARA.struBeginTime.dwMonth  = (uint)startTime.Month;
                nET_DVR_VOD_PARA.struBeginTime.dwDay    = (uint)startTime.Day;
                nET_DVR_VOD_PARA.struBeginTime.dwHour   = (uint)startTime.Hour;
                nET_DVR_VOD_PARA.struBeginTime.dwMinute = (uint)startTime.Minute;
                nET_DVR_VOD_PARA.struBeginTime.dwSecond = (uint)startTime.Second;

                nET_DVR_VOD_PARA.struEndTime.dwYear   = (uint)endTime.Year;
                nET_DVR_VOD_PARA.struEndTime.dwMonth  = (uint)endTime.Month;
                nET_DVR_VOD_PARA.struEndTime.dwDay    = (uint)endTime.Day;
                nET_DVR_VOD_PARA.struEndTime.dwHour   = (uint)endTime.Hour;
                nET_DVR_VOD_PARA.struEndTime.dwMinute = (uint)endTime.Minute;
                nET_DVR_VOD_PARA.struEndTime.dwSecond = (uint)endTime.Second;

                m_lPlayHandle = NET_DVR_PlayBackByTime_V40(m_lUserID, ref nET_DVR_VOD_PARA);

                uint iOutValue = 0;
                NET_DVR_PlayBackControl_V40(m_lPlayHandle, CHCNetSDK.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 按时间回放录像
        /// </summary>
        /// <param name="info">登录设备时的UseInfo对象</param>
        /// <param name="channel">通道号</param>
        /// <param name="Handle">显示图像控件句柄,如PictureBox</param>
        /// <param name="startTime">开始时间</param>
        /// <param name="endTime">结束时间</param>
        /// <returns>true:执行成功,false:执行失败</returns>
        public bool PlaybackByTime(ref DvrUseInfo info, int channel, IntPtr Handle, DateTime startTime, DateTime endTime)
        {
            if (info.PlaybackId >= 0)
            {
                //如果已经正在回放,先停止回放
                if (!HikVideoApi.NET_DVR_StopPlayBack(info.PlaybackId))
                {
                    return(false);
                }
                info.PlaybackId = -1;
            }

            NET_DVR_VOD_PARA struVodPara = new NET_DVR_VOD_PARA();

            struVodPara.dwSize = (uint)Marshal.SizeOf(struVodPara);
            struVodPara.struIDInfo.dwChannel = (uint)iChannelNum[(int)channel]; //通道号 Channel number
            struVodPara.hWnd = Handle;                                          //回放窗口句柄

            //设置回放的开始时间 Set the starting time to search video files
            struVodPara.struBeginTime.dwYear   = (uint)startTime.Year;
            struVodPara.struBeginTime.dwMonth  = (uint)startTime.Month;
            struVodPara.struBeginTime.dwDay    = (uint)startTime.Day;
            struVodPara.struBeginTime.dwHour   = (uint)startTime.Hour;
            struVodPara.struBeginTime.dwMinute = (uint)startTime.Minute;
            struVodPara.struBeginTime.dwSecond = (uint)startTime.Second;

            //设置回放的结束时间 Set the stopping time to search video files
            struVodPara.struEndTime.dwYear   = (uint)endTime.Year;
            struVodPara.struEndTime.dwMonth  = (uint)endTime.Month;
            struVodPara.struEndTime.dwDay    = (uint)endTime.Day;
            struVodPara.struEndTime.dwHour   = (uint)endTime.Hour;
            struVodPara.struEndTime.dwMinute = (uint)endTime.Minute;
            struVodPara.struEndTime.dwSecond = (uint)endTime.Second;


            //按时间回放 Playback by time
            info.PlaybackId = HikVideoApi.NET_DVR_PlayBackByTime_V40(info.UserId, ref struVodPara);
            if (info.PlaybackId < 0)
            {
                return(false);
            }

            uint iOutValue = 0;

            return(HikVideoApi.NET_DVR_PlayBackControl_V40(info.PlaybackId, (uint)PlayBackControlCmd.NET_DVR_PLAYSTART, IntPtr.Zero, 0, IntPtr.Zero, ref iOutValue));
        }
Esempio n. 3
0
 public static extern int NET_DVR_PlayBackByTime_V40(int lUserID, ref NET_DVR_VOD_PARA pVodPara);
Esempio n. 4
0
        private void M_oPlaybackBtn_Click(object sender, EventArgs e)
        {
            try
            {
                if (m_iLogID < 0)
                {
                    Log.Error("EYESON APP", "please login on a device first");
                    ShowFancyMessage(GetApplicationContext(), "Please login first", Color: Resource.Color.error_color_material_light);
                    return;
                }
                if (m_iPlaybackID < 0)
                {
                    if (m_iPlayID >= 0)
                    {
                        Log.Info("EYESON APP", "Please stop preview first");
                        ShowFancyMessage(GetApplicationContext(), "Please stop Preview function first", Color: Resource.Color.error_color_material_light);
                        return;
                    }

                    ChangeSingleSurFace(true);

                    NET_DVR_TIME struBegin = new NET_DVR_TIME();
                    NET_DVR_TIME struEnd   = new NET_DVR_TIME();

                    struBegin.DwYear   = Year;
                    struBegin.DwMonth  = Month;
                    struBegin.DwDay    = Day;
                    struBegin.DwHour   = Hour;
                    struBegin.DwMinute = Minute;
                    struBegin.DwSecond = 00;

                    struEnd.DwYear   = System.DateTime.UtcNow.Year;
                    struEnd.DwMonth  = System.DateTime.UtcNow.Month;
                    struEnd.DwDay    = System.DateTime.UtcNow.Day;
                    struEnd.DwHour   = System.DateTime.Now.Hour;
                    struEnd.DwMinute = System.DateTime.UtcNow.Minute;
                    struEnd.DwSecond = System.DateTime.UtcNow.Second;

                    NET_DVR_VOD_PARA struVod = new NET_DVR_VOD_PARA();
                    struVod.StruBeginTime        = struBegin;
                    struVod.StruEndTime          = struEnd;
                    struVod.ByStreamType         = 0;
                    struVod.StruIDInfo.DwChannel = m_iStartChan == 0 ? Integer.ParseInt(m_oCam.Text.ToString()) - 1 : Integer.ParseInt(m_oCam.Text.ToString()) - 1;// getM_iStartChan(); //m_iStartChan;
                    struVod.HWnd = playView[0].Holder.Surface;

                    m_iPlaybackID = HCNetSDK.Instance.NET_DVR_PlayBackByTime_V40(m_iLogID, struVod);

                    if (m_iPlaybackID >= 0)
                    {
                        NET_DVR_PLAYBACK_INFO struPlaybackInfo = null;
                        if (!HCNetSDK.Instance.NET_DVR_PlayBackControl_V40(m_iPlaybackID, PlaybackControlCommand.NetDvrPlaystart, null, 0, struPlaybackInfo))
                        {
                            Log.Error("EYESON APP", "net sdk playback start failed!");
                            ShowFancyMessage(GetApplicationContext(), "NET_SDK_Playback start failed, try again.");
                            return;
                        }
                        m_bStopPlayback     = false;
                        m_oPlaybackBtn.Text = "Stop";

                        new System.Threading.Thread(new ThreadStart(() =>
                        {
                            int nProgress = -1;
                            while (true)
                            {
                                nProgress = HCNetSDK.Instance.NET_DVR_GetPlayBackPos(m_iPlaybackID);

                                System.Console.WriteLine("NET_DVR_GetPlayBackPos:" + nProgress);

                                if (nProgress < 0 || nProgress >= 100)
                                {
                                    break;
                                }

                                try
                                {
                                    System.Threading.Thread.Sleep(1000);
                                }
                                catch (InterruptedException er)
                                {
                                    // TODO Auto-generated catch block
                                    er.PrintStackTrace();
                                }
                            }
                        })).Start();
                    }
                    else
                    {
                        Log.Info("EYESON APP", "NET_DVR_PlayBackByTime failed, error code: " + HCNetSDK.Instance.NET_DVR_GetLastError());
                        var code = HCNetSDK.Instance.NET_DVR_GetLastError();
                        var msg  = code == 10 ? "Connection Time out, try again" : "";
                        ShowFancyMessage(GetApplicationContext(), "NET_DVR_PlayBackByTime failed, error code: " + code, message: msg, Color: Resource.Color.error_color_material_light, Duration: 3000);
                    }
                }
                else
                {
                    m_bStopPlayback = true;
                    if (!HCNetSDK.Instance.NET_DVR_StopPlayBack(m_iPlaybackID))
                    {
                        Log.Error("EYESON APP", "net sdk stop playback failed");
                        ShowFancyMessage(GetApplicationContext(), "NET_SDK_Playback failed", Color: Resource.Color.error_color_material_light, Duration: 23000);
                    }
                    m_oPlaybackBtn.Text = "Playback";
                    m_iPlaybackID       = -1;
                }
            }
            catch (System.Exception er)
            {
                Log.Error("EYESON APP", "Error: " + er.StackTrace);
                ShowFancyMessage(GetApplicationContext(), "Please login first", message: "Fatal error: " + er.StackTrace, Color: Resource.Color.error_color_material_light);
            }
        }
Esempio n. 5
0
 public static extern int NET_DVR_PlayBackByTime_V40(int lUserID, ref NET_DVR_VOD_PARA pVodPara);