Пример #1
0
 public static byte[] Encode(IndexesPacket data)
 {
     using (MemoryStream ms = new MemoryStream())
     {
         PacketBase.WriteBytes(ms, data.BeginTime);
         PacketBase.WriteBytes(ms, data.EndTime);
         PacketBase.WriteBytes(ms, data.StartIndex);
         return(ms.ToArray());
     }
 }
Пример #2
0
        private static List <IndexesPacket> readIndexesDatas(Stream fs)
        {
            List <IndexesPacket> indexesDatas = new List <IndexesPacket>();

            while (fs != null && fs.Position < fs.Length)
            {
                byte[] buffer = readStream(fs);
                var    data   = IndexesPacket.Decode(buffer);
                indexesDatas.Add(data);
            }
            return(indexesDatas);
        }
Пример #3
0
 private void writeToIndexes(DateTime curTime)
 {
     if (_fsIndexes != null && _keyStartPosition >= 0 && curTime >= _keyStartTime)
     {
         IndexesPacket indexesData = new IndexesPacket(_keyStartTime, curTime, _keyStartPosition);
         byte[]        bytes       = IndexesPacket.Encode(indexesData);
         writeBuffer(_fsIndexes, bytes);
         _keyStartPosition = -1;
         _keyStartTime     = DateTime.MaxValue;
         _fsStream.Flush();
         _fsIndexes.Flush();
     }
 }
Пример #4
0
        /// <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);
        }