|
|
|
@ -29,8 +29,8 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
private readonly IHttpClientFactory _httpClientFactory;
|
|
|
|
|
private readonly IOnvifDeviceManagement _onvifDeviceManagement;
|
|
|
|
|
|
|
|
|
|
public OnvifService(IServiceProvider applicationServices, ISettingService settingService, IWebHostEnvironment env, IHttpClientFactory httpClientFactory)
|
|
|
|
|
: base(applicationServices, settingService)
|
|
|
|
|
public OnvifService(IServiceProvider applicationServices, IWebHostEnvironment env, IHttpClientFactory httpClientFactory)
|
|
|
|
|
: base(applicationServices)
|
|
|
|
|
{
|
|
|
|
|
this._env = env;
|
|
|
|
|
this._httpClientFactory = httpClientFactory;
|
|
|
|
@ -87,6 +87,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var settingService = GetSettingService();
|
|
|
|
|
var list = this._onvifDeviceManagement.Discovery();
|
|
|
|
|
foreach (var ipCamera in list)
|
|
|
|
|
{
|
|
|
|
@ -94,7 +95,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
var writeList = this._settingService.Get("camera.writelist").Value;
|
|
|
|
|
var writeList = GetSettingService().Get("camera.writelist").Value;
|
|
|
|
|
if (!string.IsNullOrEmpty(writeList))
|
|
|
|
|
{
|
|
|
|
|
var snList = writeList.Split(',');
|
|
|
|
@ -143,10 +144,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
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._settingService.Get("ffmpeg.args").Value, DeviceDataType.String, "ffmpeg.args", hidden: true));
|
|
|
|
|
//this.UpdateData(deviceRepo, device, device.CreateData("rtmp", $"rtmp://{this._cfg["stream.rtmp"]}/live/{ipCamera.Id}", DeviceDataType.String, "rtmp"));
|
|
|
|
|
//this.UpdateData(deviceRepo, device, device.CreateData("flv", $"http://{this._cfg["stream.flv"]}/live/{ipCamera.Id}.flv", DeviceDataType.String, "flv"));
|
|
|
|
|
//this.UpdateData(deviceRepo, device, device.CreateData("hls", $"http://{this._cfg["stream.hls"]}/live/{ipCamera.Id}.m3u8", DeviceDataType.String, "hls"));
|
|
|
|
|
this.UpdateData(deviceRepo, device, device.CreateData("ffmpeg.args", settingService.Get("ffmpeg.args").Value, DeviceDataType.String, "ffmpeg.args", hidden: true));
|
|
|
|
|
}
|
|
|
|
|
var profiles = this._onvifDeviceManagement.GetProfiles(ipCamera.DeviceUrl, ipCamera.MediaUrl);
|
|
|
|
|
var needAuth = false;
|
|
|
|
@ -154,8 +152,8 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
if (profiles == "")
|
|
|
|
|
{
|
|
|
|
|
needAuth = true;
|
|
|
|
|
device.UserName = device.UserName ?? this._settingService.Get("camera.usr").Value;
|
|
|
|
|
device.Password = device.Password ?? this._settingService.Get("camera.pwd").Value;
|
|
|
|
|
device.UserName = device.UserName ?? settingService.Get("camera.usr").Value;
|
|
|
|
|
device.Password = device.Password ?? settingService.Get("camera.pwd").Value;
|
|
|
|
|
this.UpdateDevice(deviceRepo, device);
|
|
|
|
|
profiles = this._onvifDeviceManagement.GetProfiles(ipCamera.DeviceUrl, ipCamera.MediaUrl, device.UserName, device.Password);
|
|
|
|
|
if (profiles == "")
|
|
|
|
@ -318,7 +316,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
var rtspUrl = $"rtsp://{(needAuth ? $"{camera.UserName}:{camera.Password}@" : "")}{streamUri.Substring(7)}";
|
|
|
|
|
var fileName = $"ffmpeg-{Helper.Instance.GetRunTime()}{(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ".exe" : "")}";
|
|
|
|
|
var file = camera.GetData("ffmpeg.file")?.Value;
|
|
|
|
|
var rtmp = $"rtmp://{this._settingService.Get("stream.rtmp").Value}/live/{camera.Number}"; //camera.Data.FirstOrDefault(o => o.Key == "rtmp").Value;
|
|
|
|
|
var rtmp = $"rtmp://{GetSettingService().Get("stream.rtmp").Value}/live/{camera.Number}"; //camera.Data.FirstOrDefault(o => o.Key == "rtmp").Value;
|
|
|
|
|
Console.WriteLine(file);
|
|
|
|
|
var arguments = camera.Data.FirstOrDefault(o => o.Key == "ffmpeg.args").Value;
|
|
|
|
|
Process process = null;
|
|
|
|
@ -385,7 +383,7 @@ namespace IoTNode.DeviceServices.Onvif
|
|
|
|
|
{
|
|
|
|
|
if (!string.IsNullOrEmpty(e.Data))
|
|
|
|
|
{
|
|
|
|
|
if (this._settingService.Get("debug").Value == "true")
|
|
|
|
|
if (GetSettingService().Get("debug").Value == "true")
|
|
|
|
|
{
|
|
|
|
|
Console.WriteLine(e.Data);
|
|
|
|
|
}
|
|
|
|
|