/// <summary> /// 获取路径下指定时间点对应的视频流信息 /// </summary> /// <param name="path"></param> /// <param name="time"></param> /// <returns></returns> public static VideoStreamsPacket GetVideoStreamsPacket(string path, DateTime time) { string indexesFileName = null; IndexesPacket indexesPacket = GetIndexesPacket(path, time, ref indexesFileName); if (indexesPacket != null && indexesFileName != null) { string videoFile = GlobalProcess.GetRecFileName(indexesFileName); StreamPacket[] streamPacket = FileManager.GetStreamPacket(videoFile, indexesPacket.StartIndex); return(new VideoStreamsPacket(indexesPacket, streamPacket)); } Logger.Default.Trace("{0} 未找到 {1} 对应的索引文件! {2}", path, time, indexesFileName); return(null); }
/// <summary> /// 获取某文件夹下某段时间内首个视频头文件 /// </summary> /// <param name="folder">文件夹路径</param> /// <param name="beginTime">起始时间</param> /// <param name="endTime">结束时间</param> /// <returns>视频头</returns> public static StreamPacket GetVideoHeader(string folder, DateTime beginTime, DateTime endTime) { StreamPacket header = null; string[] files = GetIndexesFiles(folder); if (files.Length > 0) { TimePeriodPacket validTi = new TimePeriodPacket(beginTime, endTime); TimePeriodPacket[] tis = FolderManager.GetTimePeriods(folder); if (TimePeriodManager.GetIntersections(tis, validTi).Length != 0) { foreach (var file in files) { header = FileManager.GetVideoHeader(GlobalProcess.GetRecFileName(file)); if (header != null) { break; } } } } return(header); }