private TreeViewItem updateNode(VideoParser.Node node) { TreeViewItem item = new TreeViewItem(); item.Header = node.Name; item.Tag = node; item.IsExpanded = true; VideoParser.Server server = node as CCTVClient.VideoParser.Server; if (server != null) { foreach (VideoParser.Node child in server.Childs) { item.Items.Add(updateNode(child)); } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { foreach (VideoParser.Video child in front.Childs) { item.Items.Add(getVideoNode(child, front.Online)); } } } return(item); }
private void getOnlineStatus(Dictionary <string, OnlineStatus> onlineDict, VideoParser.Node node) { string nodeId = getNodeId(node.Id); onlineDict[nodeId] = new OnlineStatus() { NodeId = nodeId, Online = node.Online }; VideoParser.Server server = node as VideoParser.Server; if (server != null) { if (server.Childs != null) { foreach (VideoParser.Node child in server.Childs) { getOnlineStatus(onlineDict, child); } } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { if (front.Childs != null) { foreach (VideoParser.Video child in front.Childs) { getOnlineStatus(onlineDict, child); } } } } }
private void classifyInfo(VideoParser.Node node, string serverId) { //在线标识。 var nodeId = getNodeId(node.Id); _onlineStatus[nodeId] = new CCTVOnlineStatus() { VideoId = nodeId, Online = node.Online }; VideoParser.Server server = node as VideoParser.Server; if (server != null) { CCTVServerInfo si = new CCTVServerInfo() { ServerId = getNodeId(node.Id), Name = node.Name, InfoServiceIp = node.Host, InfoServicePort = 27010, StreamServerIp = node.Host, StreamServerPort = 37010, ControlServerIp = node.Host, ControlServerPort = 47010 }; _servers[si.ServerId] = si; if (server.Childs != null) { foreach (VideoParser.Node child in server.Childs) { classifyInfo(child, si.ServerId); } } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { if (front.Childs != null) { int channel = 1; foreach (VideoParser.Video child in front.Childs) { classifyInfo(front, child, channel, serverId); if (front.Type == 1 || front.Type == 11) { channel += 4; } else { channel++; } } } } } }
private void getStaticInfo(Dictionary <string, CCTVStaticInfo> staticDict, VideoParser.Front front, VideoParser.Video video, int channel) { CCTVStaticInfo info = new CCTVStaticInfo() { VideoId = getNodeId(video.Id), Name = video.Name, IP = front.Host, HighDef = video.HighDef, PanTilt = video.PanTiltUnit != null && (video.PanTiltUnit.EightDirections || video.PanTiltUnit.FourDirections), Zoom = video.PanTiltUnit != null && video.PanTiltUnit.Zoom, AuxSwitch = getAuxSwitch(video.PanTiltUnit), VideoAnalyze = video.VideoAnalyze, TargetTrack = video.PanTiltUnit != null && video.PanTiltUnit.Trackable, Streams = getStreamInfos(video), }; info.ImageTrackHost = ImageTrackInfoProvider.Instance.GetImageTrackHost(video.Id); info.ImageTrack = !string.IsNullOrEmpty(info.ImageTrackHost); if (video.DvrChannel > 0) { channel = video.DvrChannel; } info.DvrChannelInfo = getDvrChannelInfo(front, channel); if (info.TargetTrack && video.PanTiltUnit != null) { var ptz = video.PanTiltUnit; info.Latitude = ptz.Latitude; info.Longitude = ptz.Longitude; info.Altitude = ptz.Altitude; info.TrackInfo = new TrackVideoInfo() { UpLimit = ptz.UpLimit, DownLimit = ptz.DownLimit, LeftLimit = ptz.LeftLimit, RightLimit = ptz.RightLimit, MaxViewPort = ptz.WideView, MinViewPort = ptz.TeleView, }; } else { VideoPosition videoPosition; if (_videoPosSync.TryGetValue(info.VideoId, out videoPosition)) { info.Latitude = videoPosition.Latitude; info.Longitude = videoPosition.Longitude; info.Altitude = videoPosition.Altitude; info.Heading = videoPosition.Heading; info.ViewPort = videoPosition.ViewPort; } } staticDict[info.VideoId] = info; }
private DVRChannelInfo getDvrChannelInfo(VideoParser.Front front, int channel) { var type = getDvrType(front.Type); if (type == DVRChannelInfo.DVRType.Unknown) { return(null); } else { return new DVRChannelInfo() { Type = type, Host = front.Host, Port = front.Port, User = front.User, Pass = front.Pass, Channel = channel, } }; }
private static void collectVideoId(HashSet <ulong> videoIdSet, VideoParser.Node node) { VideoParser.Server server = node as VideoParser.Server; if (server != null) { foreach (VideoParser.Node child in server.Childs) { collectVideoId(videoIdSet, child); } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { foreach (VideoParser.Video video in front.Childs) { videoIdSet.Add(video.Id); } } } }
public void AddTrackVideo(VideoParser.Node node) { VideoParser.Server server = node as VideoParser.Server; if (server != null) { foreach (VideoParser.Node child in server.Childs) { AddTrackVideo(child); } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { foreach (VideoParser.Video child in front.Childs) { addTrackVideo(child); } } } }
private void getHierarchyInfo(string parentId, VideoParser.Node node) { string nodeId = getNodeId(node.Id); _dictHier[nodeId] = new CCTVHierarchyInfo() { Id = nodeId, Name = node.Name, Type = getNodeType(node), ParentId = parentId, ElementId = nodeId }; VideoParser.Server server = node as VideoParser.Server; if (server != null) { if (server.Childs != null) { foreach (VideoParser.Node child in server.Childs) { getHierarchyInfo(nodeId, child); } } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { if (front.Childs != null) { foreach (VideoParser.Video child in front.Childs) { getHierarchyInfo(nodeId, child); } } } } }
private void getHierarchyInfo(Dictionary <string, HierarchyInfo> hierarchyDict, string parentId, VideoParser.Node node) { string nodeId = getNodeId(node.Id); hierarchyDict[nodeId] = new HierarchyInfo() { NodeId = nodeId, Name = node.Name, Type = getNodeType(node), ParentId = parentId, }; VideoParser.Server server = node as VideoParser.Server; if (server != null) { if (server.Childs != null) { foreach (VideoParser.Node child in server.Childs) { getHierarchyInfo(hierarchyDict, nodeId, child); } } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { if (front.Childs != null) { foreach (VideoParser.Video child in front.Childs) { getHierarchyInfo(hierarchyDict, nodeId, child); } } } } }
private void getStaticInfo(Dictionary <string, CCTVStaticInfo> staticDict, VideoParser.Node node) { VideoParser.Server server = node as VideoParser.Server; if (server != null) { if (server.Childs != null) { foreach (VideoParser.Node child in server.Childs) { getStaticInfo(staticDict, child); } } } else { VideoParser.Front front = node as VideoParser.Front; if (front != null) { if (front.Childs != null) { int channel = 1; foreach (VideoParser.Video child in front.Childs) { getStaticInfo(staticDict, front, child, channel); if (front.Type == 1 || front.Type == 11) { channel += 4; } else { channel++; } } } } } }
private void classifyInfo(VideoParser.Front front, VideoParser.Video video, int channel, string serverId) { //在线标识。 var videoId = getNodeId(video.Id); if (video.DvrChannel > 0) { channel = video.DvrChannel; } _onlineStatus[videoId] = new CCTVOnlineStatus() { VideoId = videoId, Online = video.Online }; CCTVStaticInfo info = new CCTVStaticInfo() { VideoId = videoId, Name = video.Name, ImageType = video.HighDef ? ImageType.HighDef : ImageType.Unknow, Platform = CCTVPlatformType.CCTV1, Streams = getStreamInfos(video, channel), }; if (video.PanTiltUnit != null && video.PanTiltUnit.Trackable) { var ptz = video.PanTiltUnit; info.Latitude = ptz.Latitude; info.Longitude = ptz.Longitude; info.Altitude = ptz.Altitude; //生成摄像机象限信息 CCTVCameraLimits camera = new CCTVCameraLimits() { VideoId = info.VideoId, UpLimit = ptz.UpLimit, DownLimit = ptz.DownLimit, LeftLimit = ptz.LeftLimit, RightLimit = ptz.RightLimit, MaxViewPort = ptz.WideView, MinViewPort = ptz.TeleView }; _cameras[camera.VideoId] = camera; } else { VideoPosition videoPosition; if (_vpSync.TryGetValue(info.VideoId, out videoPosition)) { info.Latitude = videoPosition.Latitude; info.Longitude = videoPosition.Longitude; info.Altitude = videoPosition.Altitude; info.Heading = videoPosition.Heading; info.ViewPort = videoPosition.ViewPort; } } _statics[info.VideoId] = info; //视频跟踪 var vTrackHost = ImageTrackInfoProvider.Instance.GetImageTrackHost(video.Id); if (!string.IsNullOrWhiteSpace(vTrackHost)) { var vTrack = new CCTVVideoTrack() { Ip = vTrackHost, RpcPort = 8068, SubPort = 8061, VideoId = info.VideoId }; _videoTracks[vTrack.VideoId] = vTrack; } //生成设备信息。 CCTVDeviceInfo di = new CCTVDeviceInfo() { VideoId = info.VideoId, DeviceType = DeviceType.HikIP, PreferredServerId = serverId, User = front.User, Password = front.Pass, Port = front.Port }; //大于33的认为是IP直连。 if (channel >= 33) { di.Ip = video.Host; } else { di.Ip = front.Host; } _devices[di.VideoId] = di; //TODO:生成控制信息。徐测试以此方法生成是否可行。 CCTVControlConfig cc = new CCTVControlConfig() { VideoId = info.VideoId, Type = getControlType(video.PanTiltUnit), Ip = di.Ip, Port = di.Port, Channel = channel, AuxSwitch = getAuxSwitch(video.PanTiltUnit) }; _controls[cc.VideoId] = cc; }