Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }