private void _info_RealtimeInfoEvent(VideoParser.Camera camera, VideoParser.GPS gps) { CCTVDynamicInfo dynamicInfo = getCameraInfo(camera); if (dynamicInfo == null) { dynamicInfo = getGpsInfo(gps); } if (dynamicInfo != null) { ObjectItem <CCTVDynamicInfo> item = new ObjectItem <CCTVDynamicInfo>() { Key = dynamicInfo.VideoId, IsDeleted = false, Item = dynamicInfo, }; _dynamicItemList.Add(item); if (DateTime.Now - _lastUpdateTime > TimeSpan.FromSeconds(0.5)) { _lastUpdateTime = DateTime.Now; _dynamicSync.PutUpdate(_dynamicItemList); _dynamicItemList.Clear(); } } }
// POST: api/Dynamic public void Post([FromBody] CCTVDynamicInfo info) { if (info == null) { throw new HttpRequestException("动态信息内容不能为空。"); } if (string.IsNullOrWhiteSpace(info.VideoId)) { info.VideoId = Guid.NewGuid().ToString(); } DynamicPersistence.Instance.Put(info.VideoId, info); }
CCTVDynamicInfo getGpsInfo(VideoParser.GPS gps) { if (gps != null) { CCTVDynamicInfo dynamicInfo = getDynamicInfo(getNodeId(gps.Id)); dynamicInfo.Latitude = gps.Latitude; dynamicInfo.Longitude = gps.Longitude; dynamicInfo.SOG = gps.SOG; dynamicInfo.COG = gps.COG; return(dynamicInfo); } return(null); }
CCTVDynamicInfo getCameraInfo(VideoParser.Camera camera) { if (camera != null) { CCTVDynamicInfo dynamicInfo = getDynamicInfo(getNodeId(camera.Id)); dynamicInfo.Heading = camera.Pointing.Pan; dynamicInfo.Tilt = camera.Pointing.Tilt; CCTVStaticInfo staticInfo; CCTVCameraLimits cLimits; if (_staticSync.TryGetValue(dynamicInfo.VideoId, out staticInfo) && _cameraSync.TryGetValue(dynamicInfo.VideoId, out cLimits)) { double zoom = Math.Min(1, Math.Max(0, camera.Zoom)); dynamicInfo.ViewPort = (1 - zoom) * (cLimits.MaxViewPort - cLimits.MinViewPort) + cLimits.MinViewPort; } return(dynamicInfo); } return(null); }
public void PutDynamicInfo(CCTVDynamicInfo info, bool isDeleted) { PutDefaultInfo(CCTVInfoType.DynamicInfo, info.VideoId, info, isDeleted); }