AddSaving
This commit is contained in:
parent
6f1cc96c16
commit
327faae0bc
@ -40,6 +40,7 @@ namespace Squirrowse.Client.Service
|
|||||||
|
|
||||||
public async Task SendStreamAsync(IAsyncEnumerable<byte[]> asb)
|
public async Task SendStreamAsync(IAsyncEnumerable<byte[]> asb)
|
||||||
{
|
{
|
||||||
|
if(!streamOn)return;
|
||||||
logger.LogInformation($"{nameof(SendStreamAsync)} Start stream");
|
logger.LogInformation($"{nameof(SendStreamAsync)} Start stream");
|
||||||
|
|
||||||
await session.SendAsync("UploadByteStream", asb);
|
await session.SendAsync("UploadByteStream", asb);
|
||||||
@ -50,6 +51,7 @@ namespace Squirrowse.Client.Service
|
|||||||
|
|
||||||
public async Task StartStream()
|
public async Task StartStream()
|
||||||
{
|
{
|
||||||
|
if (streamOn) return;
|
||||||
streamOn = true;
|
streamOn = true;
|
||||||
await SendStreamAsync(camera.GetFramesAsyncEnumerator());
|
await SendStreamAsync(camera.GetFramesAsyncEnumerator());
|
||||||
}
|
}
|
||||||
|
@ -11,8 +11,9 @@ namespace Squirrowse.Service.Hubs
|
|||||||
Task RemoveUserByUserName(string agentName);
|
Task RemoveUserByUserName(string agentName);
|
||||||
IEnumerable<User> getServerSideUsers();
|
IEnumerable<User> getServerSideUsers();
|
||||||
bool CheckUser(string agentName);
|
bool CheckUser(string agentName);
|
||||||
bool StreamOn();
|
|
||||||
IEnumerable<User> getClientSideUsers();
|
IEnumerable<User> getClientSideUsers();
|
||||||
IEnumerable<User> getAllUsers();
|
IEnumerable<User> getAllUsers();
|
||||||
|
|
||||||
|
Task SaveData(IAsyncEnumerable<byte[]> stream);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,10 +1,13 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Globalization;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.AspNetCore.SignalR;
|
using Microsoft.AspNetCore.SignalR;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using OpenCvSharp;
|
||||||
using Squirrowse.Core.Models;
|
using Squirrowse.Core.Models;
|
||||||
|
using Squirrowse.Core.Services;
|
||||||
|
|
||||||
namespace Squirrowse.Service.Hubs
|
namespace Squirrowse.Service.Hubs
|
||||||
{
|
{
|
||||||
@ -63,7 +66,7 @@ namespace Squirrowse.Service.Hubs
|
|||||||
|
|
||||||
public async Task Startstream(string clientId)
|
public async Task Startstream(string clientId)
|
||||||
{
|
{
|
||||||
manager.StreamOn() = true;
|
streamOn = true;
|
||||||
//var client = Clients.Client(clientId);
|
//var client = Clients.Client(clientId);
|
||||||
await Clients.Groups(Core.Models.Groups.normal.ToString()).SendAsync("Start");
|
await Clients.Groups(Core.Models.Groups.normal.ToString()).SendAsync("Start");
|
||||||
// await client.SendAsync("Start");
|
// await client.SendAsync("Start");
|
||||||
@ -78,16 +81,25 @@ namespace Squirrowse.Service.Hubs
|
|||||||
//await client.SendAsync("Stop");
|
//await client.SendAsync("Stop");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool streamOn { get; set; }
|
||||||
|
|
||||||
public async Task UploadByteStream(IAsyncEnumerable<byte[]> stream)
|
public async Task UploadByteStream(IAsyncEnumerable<byte[]> stream)
|
||||||
{
|
{
|
||||||
|
manager.SaveData(stream);
|
||||||
await foreach (var frame in stream)
|
await foreach (var frame in stream)
|
||||||
{
|
{
|
||||||
logger.LogInformation($"Got frame size: {frame.Length} ");
|
var frameStamp = frame.ConvertByteToMat();
|
||||||
if (!streamOn) continue;
|
string timestamp = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff",
|
||||||
logger.LogInformation($"Send frame of size: {frame.Length} to {Core.Models.Groups.superUser.ToString()}");
|
CultureInfo.InvariantCulture);
|
||||||
await Clients.Groups(Core.Models.Groups.superUser.ToString()).SendAsync("RecData", frame);
|
Cv2.PutText(frameStamp, timestamp, new Point(1,480/2), HersheyFonts.HersheySimplex,0.5f,Scalar.Red);
|
||||||
|
logger.LogInformation($"{this.GetHashCode()}: send frame");
|
||||||
|
//logger.LogInformation($"Got frame size: {frame.Length} ");
|
||||||
|
//if (!streamOn) continue;
|
||||||
|
// logger.LogInformation($"Send frame of size: {frame.Length} to {Core.Models.Groups.superUser.ToString()}");
|
||||||
|
await Clients.Groups(Core.Models.Groups.superUser.ToString()).SendAsync("RecData", frameStamp.ConvertToJpgByte());
|
||||||
|
logger.LogInformation($"{this.GetHashCode()}: send data");
|
||||||
//await Task.Delay(100); //leave some delay for debug purpose
|
//await Task.Delay(100); //leave some delay for debug purpose
|
||||||
|
await Task.Delay(1000/30);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,18 +1,17 @@
|
|||||||
using System.Collections.Generic;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using OpenCvSharp;
|
||||||
using Squirrowse.Core.Models;
|
using Squirrowse.Core.Models;
|
||||||
|
using Squirrowse.Core.Services;
|
||||||
|
|
||||||
namespace Squirrowse.Service.Hubs
|
namespace Squirrowse.Service.Hubs
|
||||||
{
|
{
|
||||||
public class StreamManager : IStreamManager
|
public class StreamManager : IStreamManager
|
||||||
{
|
{
|
||||||
private readonly List<User> _users = new List<User>(); //temporary
|
private readonly List<User> _users = new List<User>(); //temporary
|
||||||
private bool stream;
|
public bool StreamOn { get; set; }
|
||||||
public bool streamOn()
|
|
||||||
{
|
|
||||||
return stream;
|
|
||||||
}
|
|
||||||
public Task AddUser(string connectionId, string userName, ConnectionType type)
|
public Task AddUser(string connectionId, string userName, ConnectionType type)
|
||||||
{
|
{
|
||||||
_users.Add(new User(connectionId, userName, type));
|
_users.Add(new User(connectionId, userName, type));
|
||||||
@ -36,6 +35,7 @@ namespace Squirrowse.Service.Hubs
|
|||||||
return _users.Where(user => user.UserType == ConnectionType.Server);
|
return _users.Where(user => user.UserType == ConnectionType.Server);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public IEnumerable<User> getClientSideUsers()
|
public IEnumerable<User> getClientSideUsers()
|
||||||
{
|
{
|
||||||
return _users.Where(user => user.UserType == ConnectionType.Client);
|
return _users.Where(user => user.UserType == ConnectionType.Client);
|
||||||
@ -51,5 +51,15 @@ namespace Squirrowse.Service.Hubs
|
|||||||
var t = _users;
|
var t = _users;
|
||||||
return _users;
|
return _users;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task SaveData(IAsyncEnumerable<byte[]> stream)
|
||||||
|
{
|
||||||
|
VideoWriter output = new VideoWriter("m.avi",FourCC.DIVX,30,new Size(640,480));
|
||||||
|
|
||||||
|
await foreach (var b in stream)
|
||||||
|
{
|
||||||
|
output.Write(b.ConvertByteToMat());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -4,6 +4,16 @@
|
|||||||
<TargetFramework>netcoreapp3.0</TargetFramework>
|
<TargetFramework>netcoreapp3.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Remove="dll\openh264-1.8.0-win64.dll" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="dll\openh264-1.8.0-win64.dll">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="Controllers\" />
|
<Folder Include="Controllers\" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
BIN
Squirrowse.Service/dll/openh264-1.8.0-win64.dll
Normal file
BIN
Squirrowse.Service/dll/openh264-1.8.0-win64.dll
Normal file
Binary file not shown.
BIN
Squirrowse.Service/dupa.avi
Normal file
BIN
Squirrowse.Service/dupa.avi
Normal file
Binary file not shown.
BIN
Squirrowse.Service/dupa.mkv
Normal file
BIN
Squirrowse.Service/dupa.mkv
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user