/// <summary>获取某通道视频在某时间点对应文件的视频头</summary> public static StreamPacket GetVideoHeader(string videoId, int streamId, DateTime time) { string indexesFile = null; string path = getPath(videoId, streamId, time); IndexesPacket packet = FolderManager.GetIndexesPacket(path, time, ref indexesFile); if (packet != null) { return(FileManager.GetVideoHeader(GlobalProcess.GetRecFileName(indexesFile))); } return(null); }
public void TestIndexesData_IndexesPacket() { DateTime beginTime = new DateTime(2020, 1, 2, 3, 4, 5, 6); DateTime endTime = new DateTime(2026, 5, 4, 3, 2, 1, 9); long beginIndex = 10000; IndexesPacket iData = new IndexesPacket(beginTime, endTime, beginIndex); byte[] buffer = IndexesPacket.Encode(iData); IndexesPacket newData = IndexesPacket.Decode(buffer); Assert.AreNotSame(iData, newData); Assert.AreEqual(iData.BeginTime, newData.BeginTime); Assert.AreEqual(iData.EndTime, newData.EndTime); Assert.AreEqual(iData.StartIndex, newData.StartIndex); }
static long getSize(FileInfo fileInfo, DateTime beginTime, DateTime endTime, int headerLength) { long size = 0; try { string indexes = GlobalProcess.GetIndexesFileName(fileInfo.FullName); var indexesPackets = FileManager.GetIndexesPackets(indexes); IndexesPacket first = indexesPackets.FirstOrDefault(_ => _.EndTime >= beginTime); if (first != null) { long beginIndex = first.StartIndex; long endIndex = fileInfo.Length; IndexesPacket end = indexesPackets.FirstOrDefault(_ => _.BeginTime >= endTime); if (end != null) { endIndex = end.StartIndex; } size = endIndex - beginIndex; } } catch { } return(size); }