// 解析测试视频 private List <TestVideo> ParseTestVideo(string videoPath) { if (Directory.Exists(videoPath)) { List <TestVideo> testVideos = new List <TestVideo>(); var videos = Utility.Director(videoPath).Where(f => { string ex = Path.GetExtension(f); return(ex == ".ts" || ex == ".mp4" || ex == ".flv" || ex == ".avi"); }).ToList(); foreach (var item in videos) { var _testVideoItem = new TestVideo { VideoName = Path.GetFileName(item), VideoPath = Path.GetDirectoryName(item) }; testVideos.Add(_testVideoItem); } return(testVideos); } else { MessageWindow.ShowDialog($"无法访问文件夹 [{videoPath}]", this); } return(null); }
// 添加测试视频 public void AddTestVideoItem(TestVideo item) { testVideoData.Add(item); }
// 恢复上次状态 public void Resume() { if (!File.Exists("./data.db")) { CreateBlankTabs(); return; } string DBPath = "Data Source = " + AppDomain.CurrentDomain.BaseDirectory + @"data.db"; dbConnection = new SQLiteConnection(DBPath); if (dbConnection == null) { MessageWindow.ShowDialog("无法连接到数据库 data.db", this); return; } dbConnection.Open(); SQLiteCommand cmd = new SQLiteCommand(); cmd.Connection = dbConnection; // 连接数据库 // 标注视频 cmd.CommandText = "SELECT * FROM VideoInfoTab"; using (SQLiteDataReader dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { // VideoDataTab(Scene, Video, Incident, Count) string _scene = dataReader.GetString(0); string _video = dataReader.GetString(1); string _incident = dataReader.GetString(2); int _count = dataReader.GetInt32(3); var _videoInfoItem = new VideoInfo { Scene = _scene, VideoName = _video, Incident = _incident, Count = _count }; videoInfoList.Add(_videoInfoItem); } } // 告警图片 cmd.CommandText = "SELECT * FROM AlarmImageTab"; using (SQLiteDataReader dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { // (id INTEGER, image VARCHAR(512) PRIMARY KEY, scene VARCHAR(64), incident VARCHAR(64), video VARCHAR(256), frame INTEGER, state INTEGER) int _id = dataReader.GetInt32(0); string _imgPath = dataReader.GetString(1); string _scene = dataReader.GetString(2); string _incident = dataReader.GetString(3); string _videoName = dataReader.GetString(4); int _frame = dataReader.GetInt32(5); int _state = dataReader.GetInt32(6); int _count = dataReader.GetInt32(7); var _alarmDataItem = new AlarmImage { ID = _id, ImagePath = _imgPath, Video = _videoName, Scene = _scene, Incident = _incident, Frame = _frame, State = (DetectType)_state, IncidentCount = _count }; alarmImageListAll.Add(_alarmDataItem); dataWindow.AddAlarmImageItem(_alarmDataItem); } } // 测试视频 cmd.CommandText = "SELECT * FROM TestVideoTab"; using (SQLiteDataReader dataReader = cmd.ExecuteReader()) { while (dataReader.Read()) { // (VideoName VARCHAR(256) PRIMARY KEY, Directory VARCHAR(256)) string _videoName = dataReader.GetString(0); string _videoPath = dataReader.GetString(1); var _testVideoItem = new TestVideo { VideoName = _videoName, VideoPath = _videoPath }; testVideoList.Add(_testVideoItem); dataWindow.AddTestVideoItem(_testVideoItem); } } // 告警图片路径 cmd.CommandText = "SELECT * FROM DataPathTab WHERE Item = 'AlarmImagePath'"; using (SQLiteDataReader dataReader = cmd.ExecuteReader()) { if (dataReader.Read()) { string _imagePath = dataReader.GetString(1); if (Directory.Exists(_imagePath)) { fileTree.Clear(); fileTree.Add(new FileRecord { Info = new DirAndFileInfo { FullName = _imagePath } }); } else { MessageWindow.ShowDialog($"无法访问告警图片路径 [{_imagePath}]"); } } } // 上一次统计的告警图片路径 cmd.CommandText = "SELECT * FROM DataPathTab WHERE Item = 'LastImagePath'"; using (SQLiteDataReader dataReader = cmd.ExecuteReader()) { if (dataReader.Read()) { string _dir = dataReader.GetString(1); if (Directory.Exists(_dir)) { foreach (var item in alarmImageListAll) { if (item.ImagePath.Contains(_dir)) { alarmImageList.Add(item); } } } else { MessageWindow.ShowDialog($"无法访问告警图片路径 [{_dir}]"); } } } this.Title = $"[{1}/{alarmImageList.Count}] {Path.GetFileName(CurrentAlarmImage()?.ImagePath)}"; SetSelectedSceneItem(CurrentAlarmImage()?.Scene); SetSelectedIncidentItem(CurrentAlarmImage()?.Incident); // 更细统计数据 dataWindow.SetDetailData(GetDetailData()); }