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); } }
/// <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)); }
public static extern int NET_DVR_PlayBackByTime_V40(int lUserID, ref NET_DVR_VOD_PARA pVodPara);
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); } }