From 087a70cf968307bc407b1d891295b857c6ad58b3 Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Thu, 30 Apr 2020 09:29:28 +0800 Subject: [PATCH] 1.0.0.430 Former-commit-id: 36119b14b94d4362be12b912f9b7626e57db6b1e --- .../DeviceServices/Onvif/OnvifService.cs | 41 ++++++++++++++++++- .../IoTNode/Services/IoTNodeEventHandler.cs | 19 ++++++++- projects/Version.cs | 2 +- 3 files changed, 58 insertions(+), 4 deletions(-) diff --git a/projects/IoTNode/DeviceServices/Onvif/OnvifService.cs b/projects/IoTNode/DeviceServices/Onvif/OnvifService.cs index 51d42f37..020edac8 100644 --- a/projects/IoTNode/DeviceServices/Onvif/OnvifService.cs +++ b/projects/IoTNode/DeviceServices/Onvif/OnvifService.cs @@ -272,7 +272,31 @@ namespace IoTNode.DeviceServices.Onvif } } - private void StartPushToServer(Device camera) + public void StartPushToServer() + { + using var scope = _applicationServices.CreateScope(); + var repo = scope.ServiceProvider.GetService>(); + var cameras = repo.ReadOnlyTable().Include(o => o.Data).Where(o => o.Name == "摄像头").ToList(); + foreach (var camera in cameras) + { + try + { + if (camera.Data.Any(o => o.Key == "Push" && o.Value == "是")) + { + if (camera.Data.Any(o => o.Key == "NeedAuth" && o.Value == "否") || camera.Data.Any(o => o.Key == "HasAuth" && o.Value == "是")) + { + this.StartPushToServer(camera); + } + } + } + catch (Exception ex) + { + ex.PrintStack(); + } + } + } + + public void StartPushToServer(Device camera) { try { @@ -337,6 +361,21 @@ namespace IoTNode.DeviceServices.Onvif } } + public void StopPushToServer() + { + foreach (var item in this._list.Keys) + { + try + { + this.StopPushToServer(item); + } + catch (Exception ex) + { + ex.PrintStack(); + } + } + } + public void StopPushToServer(string key) { if (this._list.TryRemove(key, out Process process)) diff --git a/projects/IoTNode/Services/IoTNodeEventHandler.cs b/projects/IoTNode/Services/IoTNodeEventHandler.cs index 0f78aca0..e4b2ba82 100644 --- a/projects/IoTNode/Services/IoTNodeEventHandler.cs +++ b/projects/IoTNode/Services/IoTNodeEventHandler.cs @@ -1,14 +1,17 @@ using Application.Domain.Entities; using CSScriptLib; using Hangfire; +using Infrastructure.Application.Entites.Settings; using Infrastructure.Events; using Infrastructure.Extensions; +using IoTNode.DeviceServices.Onvif; using System; -using System.Collections.Concurrent; +using System.Threading.Tasks; namespace IoTNode.Services { public class IoTNodeEventHandler : + IEventHander>, IEventHander>, IEventHander>, IEventHander>, @@ -16,11 +19,13 @@ namespace IoTNode.Services { private readonly ISceneTiggerService _sceneTiggerService; private readonly IoTNodeJob _job; + private readonly OnvifService _onvifService; - public IoTNodeEventHandler(ISceneTiggerService sceneTiggerService, IoTNodeJob job) + public IoTNodeEventHandler(ISceneTiggerService sceneTiggerService, IoTNodeJob job, OnvifService onvifService) { this._sceneTiggerService = sceneTiggerService; this._job = job; + this._onvifService = onvifService; } public void Handle(EntityInsertedEvent message) @@ -63,5 +68,15 @@ namespace IoTNode.Services } } } + + public void Handle(EntityUpdatedEvent message) + { + if (message.Data.Name == "stream.rtmp" || message.Data.Name == "ffmpeg.args") + { + Task.Delay(1000); + this._onvifService.StopPushToServer(); + this._onvifService.StartPushToServer(); + } + } } } \ No newline at end of file diff --git a/projects/Version.cs b/projects/Version.cs index f468ee3e..c30e1a8a 100644 --- a/projects/Version.cs +++ b/projects/Version.cs @@ -1,4 +1,4 @@ using System.Reflection; [assembly: AssemblyVersion("1.0.0.*")] -[assembly: AssemblyInformationalVersion("1.0.0.4293")] \ No newline at end of file +[assembly: AssemblyInformationalVersion("1.0.0.430")] \ No newline at end of file