//按时间获取录像文件,存储在本地 public IntPtr DownloadVideoFileByTime(IntPtr m_LoginID, int channelID, DateTime startTime, DateTime endTime, string FileName) { //set stream type 设置码流类型 EM_STREAM_TYPE streamType = EM_STREAM_TYPE.MAIN; IntPtr pStream = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(int))); Marshal.StructureToPtr((int)streamType, pStream, true); NETClient.SetDeviceMode(m_LoginID, EM_USEDEV_MODE.RECORD_STREAM_TYPE, pStream); //调用下载API m_DownloadID = NETClient.DownloadByTime(m_LoginID, channelID, EM_QUERY_RECORD_TYPE.ALL, startTime, endTime, FileName, m_DownloadPosCallBack, IntPtr.Zero, null, IntPtr.Zero, IntPtr.Zero); return(m_DownloadID); }
/// <summary> /// 查询指定时间录像文件,,返回文件数量 /// </summary> /// <param name="m_LoginID"></param> /// <param name="channelID"></param> /// <param name="startTime"></param> /// <param name="endTime"></param> /// <param name="FileName"></param> /// <returns></returns> public int QueryRecordFile(IntPtr m_LoginID, int channelID, DateTime startTime, DateTime endTime) { NET_RECORDFILE_INFO[] infos = new NET_RECORDFILE_INFO[5000]; int fileCount = 0;//返回文件数量 //set stream type 设置码流类型 EM_STREAM_TYPE streamType = EM_STREAM_TYPE.AUTO; IntPtr pStream = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(int))); Marshal.StructureToPtr((int)streamType, pStream, true); NETClient.SetDeviceMode(m_LoginID, EM_USEDEV_MODE.RECORD_STREAM_TYPE, pStream); //query record file 查询录像文件 bool ret = NETClient.QueryRecordFile(m_LoginID, channelID, EM_QUERY_RECORD_TYPE.ALL, startTime, endTime, null, ref infos, ref fileCount, m_WaitTime, false); Thread.Sleep(500); if (false == ret) { return(-1);//标示查询失败; } else { return(fileCount); } }