|
|
|
@ -66,7 +66,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
this.Remove(item);
|
|
|
|
|
this.StopPushToServer(item);
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
@ -139,7 +139,8 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
this.UpdateDevice(deviceRepo, device);
|
|
|
|
|
var fileName = $"ffmpeg-{Helper.Instance.GetRunTime()}{(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : "")}";
|
|
|
|
|
var file = Path.Combine(this._env.WebRootPath, fileName);
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData("Push", "是", DeviceDataType.String, "推流"));
|
|
|
|
|
var pushValue = device.Data.FirstOrDefault(o => o.Name == "推流")?.Value ?? "是";
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData("Push", pushValue, DeviceDataType.String, "推流"));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData("Record", "否", DeviceDataType.String, "录像"));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData("ffmpeg.file", file, DeviceDataType.String, "ffmpeg路径", hidden: true));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData("ffmpeg.args", this._cfg["ffmpeg.args"], DeviceDataType.String, "ffmpeg.args", hidden: true));
|
|
|
|
@ -253,7 +254,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
}
|
|
|
|
|
if (remove)
|
|
|
|
|
{
|
|
|
|
|
this.Remove(key);
|
|
|
|
|
this.StopPushToServer(key);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
foreach (var camera in cameras)
|
|
|
|
@ -264,7 +265,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
if (camera.Data.Any(o => o.Key == "NeedAuth" && o.Value == "否") || camera.Data.Any(o => o.Key == "HasAuth" && o.Value == "是"))
|
|
|
|
|
{
|
|
|
|
|
this.Publish(camera);
|
|
|
|
|
this.StartPushToServer(camera);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -276,7 +277,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void Publish(Device camera)
|
|
|
|
|
private void StartPushToServer(Device camera)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
@ -351,7 +352,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void Remove(string key)
|
|
|
|
|
public void StopPushToServer(string key)
|
|
|
|
|
{
|
|
|
|
|
(Device camera, Process local, Process remote) item;
|
|
|
|
|
if (this._list.TryRemove(key, out item))
|
|
|
|
@ -573,8 +574,16 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
var repo = scope.ServiceProvider.GetService<IRepository<Device>>();
|
|
|
|
|
var device = repo.Table().Include(o => o.Data).FirstOrDefault(o => o.Number == number);
|
|
|
|
|
var data = device.Data.FirstOrDefault(o => o.Key == "Push");
|
|
|
|
|
data.Value = "是";
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
var data = device.Data.FirstOrDefault(o => o.Key == "Push");
|
|
|
|
|
if (data != null)
|
|
|
|
|
{
|
|
|
|
|
data.Value = "是";
|
|
|
|
|
this.UpdateData(repo, device, data);
|
|
|
|
|
this.StartPushToServer(device);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -584,8 +593,16 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
var repo = scope.ServiceProvider.GetService<IRepository<Device>>();
|
|
|
|
|
var device = repo.Table().Include(o => o.Data).FirstOrDefault(o => o.Number == number);
|
|
|
|
|
var data = device.Data.FirstOrDefault(o => o.Key == "Push");
|
|
|
|
|
data.Value = "否";
|
|
|
|
|
if (device != null)
|
|
|
|
|
{
|
|
|
|
|
var data = device.Data.FirstOrDefault(o => o.Key == "Push");
|
|
|
|
|
if (data != null)
|
|
|
|
|
{
|
|
|
|
|
data.Value = "否";
|
|
|
|
|
this.UpdateData(repo, device, data);
|
|
|
|
|
this.StopPushToServer(device.Number);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|