Former-commit-id: 7ba33121043ff12377f6445ccf1cd0e1da0f8301
Former-commit-id: 3d0e13a1678d38114437306f38eb22a426881489
1.0
wanggang 4 years ago
parent 409495a2b1
commit 02bffc2c52

@ -10,17 +10,17 @@
<ItemGroup>
<PackageReference Include="Jint" Version="2.11.58" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="5.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Versioning" Version="5.0.0" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Protocols.MessagePack" Version="5.0.5" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="5.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.5" />
<PackageReference Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="5.0.1" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.4" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="5.0.5" />
<PackageReference Include="Microsoft.AspNetCore.SignalR" Version="1.1.0" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="5.0.4" />
<PackageReference Include="NJsonSchema" Version="10.4.0" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="5.0.5" />
<PackageReference Include="NJsonSchema" Version="10.4.1" />
<PackageReference Include="System.ServiceModel.Http" Version="4.8.1" />
<PackageReference Include="System.ServiceModel.Primitives" Version="4.8.1" />
<PackageReference Include="Minio" Version="3.1.13" />
@ -36,14 +36,14 @@
<PackageReference Include="Serilog.Sinks.File" Version="4.1.0" />
<PackageReference Include="Serilog.Sinks.InfluxDB.Standard" Version="1.0.5" />
<PackageReference Include="Serilog.Sinks.RollingFile" Version="3.3.0" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.1.1" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.1.1" />
<PackageReference Include="Swashbuckle.AspNetCore" Version="6.1.2" />
<PackageReference Include="Swashbuckle.AspNetCore.Annotations" Version="6.1.2" />
<PackageReference Include="System.Drawing.Common" Version="5.0.2" />
<PackageReference Include="System.Management" Version="5.0.0" />
<PackageReference Include="ValueInjecter" Version="3.2.0" />
<PackageReference Include="Flurl" Version="3.0.1" />
<PackageReference Include="Cronos" Version="0.7.0" />
<PackageReference Include="Polly" Version="7.2.1" />
<PackageReference Include="Polly" Version="7.2.2" />
</ItemGroup>
 
</Project>

@ -116,10 +116,13 @@ namespace IoT.Shared.Application.Models
[IoTDataConfig(IoTDataType.Info ,hide: true)]
[Display(Name = "设备地址")]
DeviceUrl,
[Display(Name = "Profiles")]
[IoTDataConfig(IoTDataType.Info, hide: true)]
[Display(Name = "媒体地址")]
MediaUrl,
[Display(Name = "Profiles")]
[IoTDataConfig(IoTDataType.Info,valueType:IoTValueType.Object)]
Profiles,
[IoTDataConfig(IoTDataType.Info, hide: true)]
[IoTDataConfig(IoTDataType.Data)]
[Display(Name = "ProfileToken")]
ProfileToken,
[IoTDataConfig(IoTDataType.Info, hide: true)]

@ -6,9 +6,7 @@
<Version>1.1.0.0</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client.Core" Version="5.0.4" />
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="5.0.5" />
<PackageReference Include="Microsoft.OpenApi.Readers" Version="1.2.3" />
<PackageReference Include="System.IO.Ports" Version="5.0.1" />
<PackageReference Include="Vibrant.InfluxDB.Client" Version="4.0.4" />

@ -113,6 +113,15 @@ namespace IoTNode.Controllers
});
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse ChangeToken([SwaggerParameter("设备编号"), Required] string number, [SwaggerParameter("ProfileToken"), Required] string token)
{
return this.AsyncAction(() =>
{
this._deviceService.ChangeToken(number, token);
});
}
[HttpGet, Route("/[controller]/[action]"), SwaggerOperation("")]
public ApiResponse StartRecord([SwaggerParameter("设备编号"), Required] string number)
{

@ -150,7 +150,7 @@ namespace IoTNode.DeviceServices.Onvif
}
deviceRepo.SaveChanges();
this.UpdateIoTData(device.Id, DataKeys.DeviceUrl, ipCamera.DeviceUrl);
this.UpdateIoTData(device.Id, DataKeys.DeviceUrl, ipCamera.DeviceUrl);
this.UpdateIoTData(device.Id, DataKeys.MediaUrl, ipCamera.MediaUrl);
this.UpdateIoTData(device.Id, DataKeys.PtzAddress, ipCamera.PTZAddress);
this.UpdateIoTData(device.Id, DataKeys.Ptz3DZoomSupport, ipCamera.Ptz3DZoomSupport ? "1" : "0");
@ -190,19 +190,12 @@ namespace IoTNode.DeviceServices.Onvif
{
if (ipCamera.Profiles.Count > 0)
{
var tokens = ipCamera.Profiles.Select(o => $"{o.Token}:{o.Width}x{o.Height}").ToList();
this.UpdateIoTData(device.Id, DataKeys.Profiles, string.Join(',', tokens));
var tokens = ipCamera.Profiles.ToJson();
this.UpdateIoTData(device.Id, DataKeys.Profiles, tokens);
var token = this.GetIoTDataValue(device.Id, DataKeys.ProfileToken);
if (string.IsNullOrEmpty(token))
{
token = ipCamera.Profiles.First().Token;
}
else
if (string.IsNullOrEmpty(token)|| !ipCamera.Profiles.Any(o => o.Token == token))
{
if (!ipCamera.Profiles.Any(o => o.Token == token))
{
token = ipCamera.Profiles.First().Token;
}
token = (ipCamera.Profiles.FirstOrDefault(o=>o.Width==1280)??ipCamera.Profiles.First()).Token;
}
if (needAuth)
{
@ -524,6 +517,43 @@ namespace IoTNode.DeviceServices.Onvif
return result;
}
public void ChangeToken(string id,string token)
{
var device = this.GetIoTDevice(id);
if (device != null)
{
using var scope = _applicationServices.CreateScope();
var repo = scope.ServiceProvider.GetRequiredService<IRepository<IoTData>>();
var profiles = this.GetIoTDataValue(device.Id,DataKeys.Profiles);
if (!string.IsNullOrEmpty(profiles))
{
var tokens = profiles.FromJson<List<Profile>>();
if(tokens.Any(o=>o.Token==token))
{
var currentToken = this.GetIoTDataValue(device.Id, DataKeys.ProfileToken);
if (!string.IsNullOrEmpty(currentToken) && currentToken != token)
{
this.UpdateIoTData(device.Id, DataKeys.ProfileToken, token);
var deviceUrl = this.GetIoTDataValue(device.Id, DataKeys.DeviceUrl);
var mediaUrl = this.GetIoTDataValue(device.Id, DataKeys.MediaUrl);
if (!string.IsNullOrEmpty(deviceUrl) && !string.IsNullOrEmpty(mediaUrl))
{
var streamUriXml = this._onvifDeviceManagement.GetStreamUri(deviceUrl, mediaUrl, device.UserName, device.Password, token);
var snapshotUri = this._onvifDeviceManagement.GetSnapshotUri(deviceUrl, mediaUrl, device.UserName, device.Password, token);
var ipCamera = new IPCamera { StreamUriXml = streamUriXml, SnapshotUriXml = snapshotUri };
ipCamera.ParseStreamUri();
ipCamera.ParseSnapshotUri();
this.UpdateIoTData(device.Id, DataKeys.StreamUri, ipCamera.StreamUri);
this.UpdateIoTData(device.Id, DataKeys.SnapshotUri, ipCamera.SnapshotUri);
this.SetPush(device.Number, false);
this.SetPush(device.Number, true);
}
}
}
}
}
}
public void ZoomIn(string id, float speed)
{
this.Move(id, speed, 0, 0);

@ -7,7 +7,7 @@
<Version>1.1.1.1</Version>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="5.0.5" />
<PackageReference Include="Kveer.XmlRPC" Version="1.1.1" />
</ItemGroup>
<ItemGroup>

@ -13,6 +13,6 @@
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="5.0.5" />
</ItemGroup>
</Project>

@ -6,6 +6,6 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="5.0.5" />
</ItemGroup>
</Project>

@ -22,9 +22,9 @@ stats {
network 0;
disk sda sdb xvda xvdb;
}
rtc_server {
enabled on;
listen 8000;
rtc_server{
enabled on;
listen 8000;
candidate *;
}
vhost __defaultVhost__ {
@ -32,11 +32,12 @@ vhost __defaultVhost__ {
enabled on;
bframe discard;
}
tcp_nodelay on min_latency on;
tcp_nodelay on
min_latency on;
play {
gop_cache off;
queue_length 10;
mw_latency 100;
gop_cache off;
queue_length 10;
mw_latency 100;
}
publish {
mr off;
@ -59,23 +60,26 @@ vhost __defaultVhost__ {
output ./objs/nginx/html/[app]/[stream].png;
}
engine ff {
enabled off;
vfilter;
vcodec libx264;
vbitrate 500;
vfps 25;
vwidth 768;
vheight 320;
vthreads 12;
vprofile main;
vpreset medium;
vparams;
acodec libfdk_aac;
abitrate 70;
asample_rate 44100;
achannels 2;
aparams;
output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];
enabled off;
vfilter {
}
vcodec libx264;
vbitrate 500;
vfps 25;
vwidth 768;
vheight 320;
vthreads 12;
vprofile main;
vpreset medium;
vparams {
}
acodec libfdk_aac;
abitrate 70;
asample_rate 44100;
achannels 2;
aparams {
}
output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine];
}
}
http_remux {

Loading…
Cancel
Save