Commit 28f22f09 by 鲁志-悦动

Replay缓存500帧

parent 65e3f0c0
//------------------------------------------------------------------------------ 
// <auto-generated>
// 此代码由工具生成。
// 运行时版本:4.0.30319.42000
//
// 对此文件的更改可能会导致不正确的行为,并且如果
// 重新生成代码,这些更改将会丢失。
// </auto-generated>
//------------------------------------------------------------------------------
namespace XamlGeneratedNamespace {
/// <summary>
/// GeneratedInternalTypeHelper
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
[System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Never)]
public sealed class GeneratedInternalTypeHelper : System.Windows.Markup.InternalTypeHelper {
/// <summary>
/// CreateInstance
/// </summary>
protected override object CreateInstance(System.Type type, System.Globalization.CultureInfo culture) {
return System.Activator.CreateInstance(type, ((System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.NonPublic)
| (System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.CreateInstance)), null, null, culture);
}
/// <summary>
/// GetPropertyValue
/// </summary>
protected override object GetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, System.Globalization.CultureInfo culture) {
return propertyInfo.GetValue(target, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// SetPropertyValue
/// </summary>
protected override void SetPropertyValue(System.Reflection.PropertyInfo propertyInfo, object target, object value, System.Globalization.CultureInfo culture) {
propertyInfo.SetValue(target, value, System.Reflection.BindingFlags.Default, null, null, culture);
}
/// <summary>
/// CreateDelegate
/// </summary>
protected override System.Delegate CreateDelegate(System.Type delegateType, object target, string handler) {
return ((System.Delegate)(target.GetType().InvokeMember("_CreateDelegate", (System.Reflection.BindingFlags.InvokeMethod
| (System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance)), null, target, new object[] {
delegateType,
handler}, null)));
}
/// <summary>
/// AddEventHandler
/// </summary>
protected override void AddEventHandler(System.Reflection.EventInfo eventInfo, object target, System.Delegate handler) {
eventInfo.AddEventHandler(target, handler);
}
}
}
...@@ -10,11 +10,11 @@ none ...@@ -10,11 +10,11 @@ none
false false
2-725104376 21870986562
3947974750 31364711570
17-1462717611 17-1683084370
Themes\Generic.xaml;Widgets\FootballFieldPanel\FootballFieldPanel.xaml; Themes\Generic.xaml;Widgets\FootballFieldPanel\FootballFieldPanel.xaml;
True False
...@@ -111,11 +111,11 @@ namespace VIZ.FGOUT.Module ...@@ -111,11 +111,11 @@ namespace VIZ.FGOUT.Module
/// <summary> /// <summary>
/// 处理自动裁切 /// 处理自动裁切
/// </summary> /// </summary> <param name="hotkey">热键</param>
/// <param name="hotkey">热键</param>
/// <returns>是否完成处理</returns> /// <returns>是否完成处理</returns>
private bool ExecuteAuto(string hotkey) private bool ExecuteAuto(string hotkey)
{ {
//INDIViewService service = null; //INDIViewService service = null;
//if (ApplicationDomainEx.LiteDbContext.SetManualConfig.FindAll().FirstOrDefault().IsManual) return false; //if (ApplicationDomainEx.LiteDbContext.SetManualConfig.FindAll().FirstOrDefault().IsManual) return false;
...@@ -147,13 +147,11 @@ namespace VIZ.FGOUT.Module ...@@ -147,13 +147,11 @@ namespace VIZ.FGOUT.Module
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1); UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1);
AlgorithmPackage__MatCmd algorithmPackage__MatCmd = new AlgorithmPackage__MatCmd(); AlgorithmPackage__MatCmd algorithmPackage__MatCmd = new AlgorithmPackage__MatCmd();
algorithmPackage__MatCmd.mode = AlgorithmPackageSignal.manual_mode; algorithmPackage__MatCmd.mode = AlgorithmPackageSignal.manual_mode;
algorithmPackage__MatCmd.signal = AlgorithmPackageSignal.matt_end; algorithmPackage__MatCmd.signal = AlgorithmPackageSignal.matt_end;
log.Info(hotkey+"发送结束命令:" + algorithmPackage__MatCmd.mode+""+algorithmPackage__MatCmd.signal); log.Info(hotkey + "发送结束命令:" + algorithmPackage__MatCmd.mode + "" + algorithmPackage__MatCmd.signal);
AlgorithmSender.MatImageCmd(manager, algorithmPackage__MatCmd); AlgorithmSender.MatImageCmd(manager, algorithmPackage__MatCmd);
} }
//if (string.Equals(this.Support.HotkeyConfig.AutoCAM3, hotkey)) //if (string.Equals(this.Support.HotkeyConfig.AutoCAM3, hotkey))
......
...@@ -492,8 +492,8 @@ namespace VIZ.FGOUT.Module ...@@ -492,8 +492,8 @@ namespace VIZ.FGOUT.Module
public VCommand UESettingCommand { get; set; } public VCommand UESettingCommand { get; set; }
private void UESetting() private void UESetting()
{ {
UESettingModel ueSettingModel = new UESettingModel(); var ueSettingModel = new UESettingModel();
ApplicationDomainEx.MessageManager.Send(ueSettingModel); ApplicationDomain.MessageManager.Send(ueSettingModel);
} }
#endregion #endregion
...@@ -518,7 +518,7 @@ namespace VIZ.FGOUT.Module ...@@ -518,7 +518,7 @@ namespace VIZ.FGOUT.Module
/// </summary> /// </summary>
private void Exit() private void Exit()
{ {
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1);
if (manager == null) return; if (manager == null) return;
//manager.SendJson(new AlgorithmPackage_Figout_model(){signal = AlgorithmPackageSignal.EXIT}); //manager.SendJson(new AlgorithmPackage_Figout_model(){signal = AlgorithmPackageSignal.EXIT});
manager.SendJson(new AlgorithmPackage_Figout_model() { signal = AlgorithmPackageSignal.GO_ON }); manager.SendJson(new AlgorithmPackage_Figout_model() { signal = AlgorithmPackageSignal.GO_ON });
...@@ -530,7 +530,7 @@ namespace VIZ.FGOUT.Module ...@@ -530,7 +530,7 @@ namespace VIZ.FGOUT.Module
/// </summary> /// </summary>
private void Holdon() private void Holdon()
{ {
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1);
if (manager == null) return; if (manager == null) return;
manager.SendJson(new AlgorithmPackage_Figout_model() { signal = AlgorithmPackageSignal.HOLD_ON }); manager.SendJson(new AlgorithmPackage_Figout_model() { signal = AlgorithmPackageSignal.HOLD_ON });
} }
...@@ -539,7 +539,7 @@ namespace VIZ.FGOUT.Module ...@@ -539,7 +539,7 @@ namespace VIZ.FGOUT.Module
private void MattStart() private void MattStart()
{ {
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1);
if (manager == null) return; if (manager == null) return;
var mode = AlgorithmPackageSignal.manual_mode; var mode = AlgorithmPackageSignal.manual_mode;
if(isAutoEnable) if(isAutoEnable)
...@@ -550,7 +550,7 @@ namespace VIZ.FGOUT.Module ...@@ -550,7 +550,7 @@ namespace VIZ.FGOUT.Module
private void MattEnd() private void MattEnd()
{ {
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1);
if (manager == null) return; if (manager == null) return;
var mode = AlgorithmPackageSignal.manual_mode; var mode = AlgorithmPackageSignal.manual_mode;
if (isAutoEnable) if (isAutoEnable)
...@@ -583,7 +583,7 @@ namespace VIZ.FGOUT.Module ...@@ -583,7 +583,7 @@ namespace VIZ.FGOUT.Module
if (_initialValue != SliderValue) if (_initialValue != SliderValue)
{ {
_initialValue = SliderValue; _initialValue = SliderValue;
ReplayModel replayModel = new ReplayModel() { IsReplay = true, IsSliderValueChanged = true, SliderValue = SliderValue }; var replayModel = new ReplayModel() { IsReplay = true, IsSliderValueChanged = true, SliderValue = SliderValue };
ApplicationDomain.MessageManager.Send(replayModel); ApplicationDomain.MessageManager.Send(replayModel);
} }
} }
...@@ -606,10 +606,10 @@ namespace VIZ.FGOUT.Module ...@@ -606,10 +606,10 @@ namespace VIZ.FGOUT.Module
ReplaySendVisibility = Visibility.Visible; ReplaySendVisibility = Visibility.Visible;
SliderVisibility = Visibility.Visible; SliderVisibility = Visibility.Visible;
SliderValue = SliderMaxValue; SliderValue = SliderMaxValue;
ReplayModel replayModel = new ReplayModel() { IsReplay = true }; var replayModel = new ReplayModel() { IsReplay = true };
ApplicationDomain.MessageManager.Send(replayModel); ApplicationDomain.MessageManager.Send(replayModel);
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP);
if (manager == null) return; if (manager == null) return;
var replayPackage = new ReplayPackage() var replayPackage = new ReplayPackage()
...@@ -624,11 +624,21 @@ namespace VIZ.FGOUT.Module ...@@ -624,11 +624,21 @@ namespace VIZ.FGOUT.Module
{ {
ReplaySendVisibility = Visibility.Hidden; ReplaySendVisibility = Visibility.Hidden;
SliderVisibility = Visibility.Hidden; SliderVisibility = Visibility.Hidden;
ReplayModel replayModel = new ReplayModel() { IsReplay = false }; var replayModel = new ReplayModel() { IsReplay = false };
ApplicationDomain.MessageManager.Send(replayModel); ApplicationDomain.MessageManager.Send(replayModel);
_initialValue = SliderMaxValue; _initialValue = SliderMaxValue;
StartTime = 0; StartTime = 0;
EndTime = 0; EndTime = 0;
var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP);
if (manager == null) return;
var replayPackage = new ReplayPackage()
{
type = ClipPackageSignal.REPLAY,
status = ReplayStatus.Stop
};
manager.SendJson(replayPackage);
} }
#endregion #endregion
...@@ -668,25 +678,31 @@ namespace VIZ.FGOUT.Module ...@@ -668,25 +678,31 @@ namespace VIZ.FGOUT.Module
return; return;
} }
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP);
if (manager == null) return; if (manager == null) return;
ReplayPackage replayPackage = new ReplayPackage(); var replayPackage = new ReplayPackage()
replayPackage.type = ClipPackageSignal.REPLAY; {
replayPackage.start_time = StartTime; type = ClipPackageSignal.REPLAY,
replayPackage.end_time = EndTime; start_time = StartTime,
replayPackage.status = ReplayStatus.ReStart; end_time = EndTime,
status = ReplayStatus.ReStart
};
manager.SendJson(replayPackage); manager.SendJson(replayPackage);
MessageBoxEx.ShowDialog("Replay Restart OK."); MessageBoxEx.ShowDialog("Replay Restart OK.");
} }
private void ReplayStop() private void ReplayStop()
{ {
UdpEndpointManager manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP); var manager = ConnectionManager.UdpConnection.GetEndpointManager(NDIViewKeys.CAM_1__CLIP);
if (manager == null) return; if (manager == null) return;
ReplayPackage replayPackage = new ReplayPackage(); var replayPackage = new ReplayPackage()
replayPackage.type = ClipPackageSignal.REPLAY; {
replayPackage.status = ReplayStatus.Stop; type = ClipPackageSignal.REPLAY,
status = ReplayStatus.Stop
};
manager.SendJson(replayPackage); manager.SendJson(replayPackage);
MessageBoxEx.ShowDialog("Replay Stop OK."); MessageBoxEx.ShowDialog("Replay Stop OK.");
ReplayIsChecked = false; ReplayIsChecked = false;
...@@ -1128,7 +1144,7 @@ namespace VIZ.FGOUT.Module ...@@ -1128,7 +1144,7 @@ namespace VIZ.FGOUT.Module
set { _sliderValue2 = value; this.RaisePropertyChanged(nameof(SliderValue2)); } set { _sliderValue2 = value; this.RaisePropertyChanged(nameof(SliderValue2)); }
} }
private int _sliderMaxValue = 150; private int _sliderMaxValue = 500;
public int SliderMaxValue public int SliderMaxValue
{ {
get => (int)_sliderMaxValue; get => (int)_sliderMaxValue;
......
...@@ -549,7 +549,7 @@ namespace VIZ.FGOUT.Module ...@@ -549,7 +549,7 @@ namespace VIZ.FGOUT.Module
_algorithmMessage = package == null ? string.Empty : JsonConvert.SerializeObject(package, JSON_SERIALIZER_SETTINGS); _algorithmMessage = package == null ? string.Empty : JsonConvert.SerializeObject(package, JSON_SERIALIZER_SETTINGS);
//如果体育项目没有更改,向算法发送参数,此时算法不重启 //如果体育项目没有更改,向算法发送参数,此时算法不重启
if (_initItem == (PresetsItem ?? string.Empty)) if (_initItem == (PresetsItem ?? string.Empty))
manager.SendJson(package); manager.SendJson(package);
......
using System; using VIZ.FGOUT.Storage;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VIZ.FGOUT.Storage;
namespace VIZ.FGOUT.Module namespace VIZ.FGOUT.Module
{ {
......
...@@ -19,7 +19,7 @@ namespace VIZ.FGOUT.Module ...@@ -19,7 +19,7 @@ namespace VIZ.FGOUT.Module
/// </summary> /// </summary>
public partial class NDIViewModel public partial class NDIViewModel
{ {
private readonly FrameBuffer _frameBuffer = new FrameBuffer(TimeSpan.FromSeconds(1)); private readonly FrameBuffer _frameBuffer = new FrameBuffer(TimeSpan.FromSeconds(10));
/// <summary> /// <summary>
/// 重置3D鼠标 /// 重置3D鼠标
...@@ -67,11 +67,11 @@ namespace VIZ.FGOUT.Module ...@@ -67,11 +67,11 @@ namespace VIZ.FGOUT.Module
/// </summary> /// </summary>
private void UpdateClipBoxWithManualAndCenter() private void UpdateClipBoxWithManualAndCenter()
{ {
NDIView view = this.GetView<NDIView>(); var view = this.GetView<NDIView>();
if (view == null) if (view == null)
return; return;
VideoRenderInfo renderInfo = view.video.GetRenderInfo(); var renderInfo = view.video.GetRenderInfo();
if (renderInfo == null || !this.IsUseClip) if (renderInfo == null || !this.IsUseClip)
{ {
view.video.ClearClipBox(); view.video.ClearClipBox();
...@@ -86,7 +86,7 @@ namespace VIZ.FGOUT.Module ...@@ -86,7 +86,7 @@ namespace VIZ.FGOUT.Module
this.ClipBoxX = this.ManualController.GetCalculationValue(0d, renderInfo.Frame.Width - ApplicationDomainEx.VIDEO_CLIP_BOX_WIDTH); this.ClipBoxX = this.ManualController.GetCalculationValue(0d, renderInfo.Frame.Width - ApplicationDomainEx.VIDEO_CLIP_BOX_WIDTH);
ClipBoxInfo clipBox = new ClipBoxInfo(); var clipBox = new ClipBoxInfo();
clipBox.DrawingBorderWidth = this.CLIP_BOX_BORDER_WIDTH; clipBox.DrawingBorderWidth = this.CLIP_BOX_BORDER_WIDTH;
clipBox.SrcRect = new RawRectangleF((float)(this.ClipBoxX), 0, (float)(this.ClipBoxX) + (float)ApplicationDomainEx.VIDEO_CLIP_BOX_WIDTH, renderInfo.Frame.Height); clipBox.SrcRect = new RawRectangleF((float)(this.ClipBoxX), 0, (float)(this.ClipBoxX) + (float)ApplicationDomainEx.VIDEO_CLIP_BOX_WIDTH, renderInfo.Frame.Height);
if (this.StrategyMode == AlgorithmStrategyMode.manual_mode) if (this.StrategyMode == AlgorithmStrategyMode.manual_mode)
...@@ -118,9 +118,9 @@ namespace VIZ.FGOUT.Module ...@@ -118,9 +118,9 @@ namespace VIZ.FGOUT.Module
private static DataStream DeepCloneDataStream(DataStream originalStream) private static DataStream DeepCloneDataStream(DataStream originalStream)
{ {
// 创建新的 DataStream 对象 // 创建新的 DataStream 对象
DataStream clonedStream = new DataStream((int)originalStream.Length, true, true); var clonedStream = new DataStream((int)originalStream.Length, true, true);
// 读取原始数据并写入到新的 DataStream 对象 // 读取原始数据并写入到新的 DataStream 对象
byte[] buffer = new byte[originalStream.Length]; var buffer = new byte[originalStream.Length];
originalStream.Read(buffer, 0, buffer.Length); originalStream.Read(buffer, 0, buffer.Length);
originalStream.Position = 0; originalStream.Position = 0;
clonedStream.Write(buffer, 0, buffer.Length); clonedStream.Write(buffer, 0, buffer.Length);
...@@ -132,9 +132,9 @@ namespace VIZ.FGOUT.Module ...@@ -132,9 +132,9 @@ namespace VIZ.FGOUT.Module
private static DataStream DeepCloneLowDataStream(DataStream originalStream) private static DataStream DeepCloneLowDataStream(DataStream originalStream)
{ {
// 创建新的 DataStream 对象 // 创建新的 DataStream 对象
DataStream clonedStream = new DataStream((int)originalStream.Length, true, true); var clonedStream = new DataStream((int)originalStream.Length, true, true);
// 读取原始数据并写入到新的 DataStream 对象 // 读取原始数据并写入到新的 DataStream 对象
byte[] buffer = new byte[originalStream.Length]; var buffer = new byte[originalStream.Length];
originalStream.Read(buffer, 0, buffer.Length); originalStream.Read(buffer, 0, buffer.Length);
originalStream.Position = 0; originalStream.Position = 0;
clonedStream.Write(buffer, 0, buffer.Length); clonedStream.Write(buffer, 0, buffer.Length);
...@@ -148,7 +148,7 @@ namespace VIZ.FGOUT.Module ...@@ -148,7 +148,7 @@ namespace VIZ.FGOUT.Module
/// </summary> /// </summary>
private void NDIStream_ExecuteVideoFrame(object sender, VideoFrameEventArgs e) private void NDIStream_ExecuteVideoFrame(object sender, VideoFrameEventArgs e)
{ {
NDIView view = this.GetView<NDIView>(); var view = this.GetView<NDIView>();
if (view == null) if (view == null)
return; return;
...@@ -157,28 +157,47 @@ namespace VIZ.FGOUT.Module ...@@ -157,28 +157,47 @@ namespace VIZ.FGOUT.Module
{ {
if (view.vm.IsSliderValueChanged) if (view.vm.IsSliderValueChanged)
{ {
Queue<Mat> buffer = _frameBuffer.GetFrames(); Queue<MatExtend> buffer = _frameBuffer.GetFrames();
//Queue<Mat> buffer = _frameBuffer.GetFrames();
//Queue<DataStreamExtend> buffer = _frameBuffer.GetFrames(); //Queue<DataStreamExtend> buffer = _frameBuffer.GetFrames();
if (buffer.Count > 0) if (buffer.Count > 0)
{ {
var index = view.vm.SliderValue; var index = view.vm.SliderValue;
if (index >= 150) index = 149; //if (index >= 150) index = 149;
if (index >= 500) index = 499;
if ((buffer.Count - 1) >= index) if ((buffer.Count - 1) >= index)
{ {
var dse = buffer.ElementAt(index); var dse = buffer.ElementAt(index);
//缓存策略2 //缓存策略2
//将低分辨率的Mat对象转换为DataStream //将低分辨率的Mat对象转换为DataStream
byte[] lowResolutionData = new byte[dse.Width * dse.Height * 4]; //byte[] lowResolutionData = new byte[dse.Width * dse.Height * 4];
//var newLength = lowResolutionData.Length;
//Marshal.Copy(dse.Data, lowResolutionData, 0, newLength);
//DataStreamExtend dsExtend = new DataStreamExtend();
//dsExtend.DataStream = new DataStream((int)newLength, true, true);
//dsExtend.DataStream.Write(lowResolutionData, 0, newLength);
//dsExtend.DataStream.Position = 0;
//dsExtend.Width = dse.Width;
//dsExtend.Height = dse.Height;
//dsExtend.Length = newLength;
//之前的逻辑好奇怪,时间戳也要保存到队列的,不能用当前的时间戳
//dsExtend.TimeStamp = NDIViewModel.ReplayTimeStamp = e.Frame.TimeStamp;
var lowResolutionData = new byte[dse.Mat.Width * dse.Mat.Height * 4];
var newLength = lowResolutionData.Length; var newLength = lowResolutionData.Length;
Marshal.Copy(dse.Data, lowResolutionData, 0, newLength); Marshal.Copy(dse.Mat.Data, lowResolutionData, 0, newLength);
DataStreamExtend dsExtend = new DataStreamExtend(); var dsExtend = new DataStreamExtend()
dsExtend.DataStream = new DataStream((int)newLength, true, true); {
DataStream = new DataStream((int)newLength, true, true),
Width = dse.Mat.Width,
Height = dse.Mat.Height,
Length = newLength,
TimeStamp = NDIViewModel.ReplayTimeStamp = dse.TimeStamp
};
dsExtend.DataStream.Write(lowResolutionData, 0, newLength); dsExtend.DataStream.Write(lowResolutionData, 0, newLength);
dsExtend.DataStream.Position = 0; dsExtend.DataStream.Position = 0;
dsExtend.Width = dse.Width;
dsExtend.Height = dse.Height;
dsExtend.Length = newLength;
dsExtend.TimeStamp = NDIViewModel.ReplayTimeStamp = e.Frame.TimeStamp;
// 更新画面 // 更新画面
view.video.UpdateVideoFrame(dsExtend, true); view.video.UpdateVideoFrame(dsExtend, true);
//view.video.UpdateVideoFrame(dse, true); //view.video.UpdateVideoFrame(dse, true);
...@@ -204,7 +223,10 @@ namespace VIZ.FGOUT.Module ...@@ -204,7 +223,10 @@ namespace VIZ.FGOUT.Module
var resizedFrame = new Mat(); var resizedFrame = new Mat();
//Cv2.Resize(mat, resizedFrame, new Size(mat.Width / 4 , mat.Height / 4)); //Cv2.Resize(mat, resizedFrame, new Size(mat.Width / 4 , mat.Height / 4));
Cv2.Resize(mat, resizedFrame, new Size(mat.Width, mat.Height)); Cv2.Resize(mat, resizedFrame, new Size(mat.Width, mat.Height));
_frameBuffer.AddFrame(resizedFrame); //时间戳获取
timecode = e.Frame.TimeStamp;
//_frameBuffer.AddFrame(resizedFrame);
_frameBuffer.AddFrame(new MatExtend(){ Mat = resizedFrame, TimeStamp = timecode });
// 释放视频帧资源 // 释放视频帧资源
mat.Dispose(); mat.Dispose();
...@@ -215,8 +237,8 @@ namespace VIZ.FGOUT.Module ...@@ -215,8 +237,8 @@ namespace VIZ.FGOUT.Module
//var t2 = DateTime.Now; //var t2 = DateTime.Now;
//var minus = (t2 - t1).TotalMilliseconds; //var minus = (t2 - t1).TotalMilliseconds;
//时间戳获取 ////时间戳获取
timecode = e.Frame.TimeStamp; //timecode = e.Frame.TimeStamp;
// 更新画面 4K流优化 // 更新画面 4K流优化
//var mat2 = new Mat(e.Frame.Height, e.Frame.Width, MatType.CV_8UC4, e.Frame.DataStream.DataPointer); //var mat2 = new Mat(e.Frame.Height, e.Frame.Width, MatType.CV_8UC4, e.Frame.DataStream.DataPointer);
...@@ -280,7 +302,33 @@ namespace VIZ.FGOUT.Module ...@@ -280,7 +302,33 @@ namespace VIZ.FGOUT.Module
public class FrameBuffer public class FrameBuffer
{ {
private Queue<Mat> buffer; //private Queue<Mat> buffer;
//private int bufferSize;
//private TimeSpan bufferDuration;
//public FrameBuffer(TimeSpan duration)
//{
// bufferDuration = duration;
// //bufferSize = (int)(duration.TotalMilliseconds / TimeSpan.FromSeconds(0.1).TotalMilliseconds);
// bufferSize = duration.Seconds * 50;
// buffer = new Queue<Mat>(bufferSize);
//}
//public void AddFrame(Mat frame)
//{
// buffer.Enqueue(frame);
// // 如果缓冲区超过容量,则移除最旧的帧
// //if (buffer.Count > bufferSize)
// if (buffer.Count > 500)
// buffer.Dequeue();
//}
//public Queue<Mat> GetFrames()
//{
// return buffer;
//}
private Queue<MatExtend> buffer;
private int bufferSize; private int bufferSize;
private TimeSpan bufferDuration; private TimeSpan bufferDuration;
...@@ -289,24 +337,30 @@ namespace VIZ.FGOUT.Module ...@@ -289,24 +337,30 @@ namespace VIZ.FGOUT.Module
bufferDuration = duration; bufferDuration = duration;
//bufferSize = (int)(duration.TotalMilliseconds / TimeSpan.FromSeconds(0.1).TotalMilliseconds); //bufferSize = (int)(duration.TotalMilliseconds / TimeSpan.FromSeconds(0.1).TotalMilliseconds);
bufferSize = duration.Seconds * 50; bufferSize = duration.Seconds * 50;
buffer = new Queue<Mat>(bufferSize); buffer = new Queue<MatExtend>(bufferSize);
} }
public void AddFrame(Mat frame) public void AddFrame(MatExtend frame)
{ {
buffer.Enqueue(frame); buffer.Enqueue(frame);
// 如果缓冲区超过容量,则移除最旧的帧 // 如果缓冲区超过容量,则移除最旧的帧
//if (buffer.Count > bufferSize) //if (buffer.Count > bufferSize)
if (buffer.Count > 150) if (buffer.Count > 500)
buffer.Dequeue(); buffer.Dequeue();
} }
public Queue<Mat> GetFrames() public Queue<MatExtend> GetFrames()
{ {
return buffer; return buffer;
} }
} }
public class MatExtend
{
public Mat Mat { get; set; }
public long TimeStamp { get; set; }
}
//public class FrameBuffer //public class FrameBuffer
//{ //{
// private Queue<DataStreamExtend> buffer; // private Queue<DataStreamExtend> buffer;
......
<UserControl x:Class="VIZ.FGOUT.Module.HotkeySettingPanelView" <UserControl
x:Class="VIZ.FGOUT.Module.HotkeySettingPanelView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:VIZ.FGOUT.Module"
xmlns:fcommon="clr-namespace:VIZ.Framework.Common;assembly=VIZ.Framework.Common" xmlns:fcommon="clr-namespace:VIZ.Framework.Common;assembly=VIZ.Framework.Common"
xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors" xmlns:local="clr-namespace:VIZ.FGOUT.Module"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DataContext="{d:DesignInstance Type=local:HotkeySettingPanelViewModel}" d:DataContext="{d:DesignInstance Type=local:HotkeySettingPanelViewModel}"
mc:Ignorable="d" d:DesignHeight="900"
d:DesignHeight="900" d:DesignWidth="800"> d:DesignWidth="800"
mc:Ignorable="d">
<UserControl.Resources> <UserControl.Resources>
<ResourceDictionary> <ResourceDictionary>
<ResourceDictionary.MergedDictionaries> <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/VIZ.FGOUT.Module.Resource;component/Style/HotkeyBox/HotkeyBox_Setting.xaml"></ResourceDictionary> <ResourceDictionary Source="/VIZ.FGOUT.Module.Resource;component/Style/HotkeyBox/HotkeyBox_Setting.xaml" />
</ResourceDictionary.MergedDictionaries> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary> </ResourceDictionary>
</UserControl.Resources> </UserControl.Resources>
...@@ -32,39 +34,66 @@ ...@@ -32,39 +34,66 @@
<Grid Margin="45,60,40,0"> <Grid Margin="45,60,40,0">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition> <RowDefinition Height="50" />
<RowDefinition Height="100"></RowDefinition> <RowDefinition Height="100" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<!-- 算法裁切快捷键 --> <!-- 算法裁切快捷键 -->
<TextBlock Text="算法裁切快捷键" Foreground="#AAFFFFFF" FontSize="20" VerticalAlignment="Center"></TextBlock> <TextBlock
<Rectangle Height="1" VerticalAlignment="Bottom" Fill="#ff3d4758"></Rectangle> VerticalAlignment="Center"
FontSize="20"
Foreground="#AAFFFFFF"
Text="算法裁切快捷键" />
<Rectangle
Height="1"
VerticalAlignment="Bottom"
Fill="#ff3d4758" />
<Grid Grid.Row="1"> <Grid Grid.Row="1">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="50"></RowDefinition> <RowDefinition Height="50" />
<RowDefinition Height="50"></RowDefinition> <RowDefinition Height="50" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="120" />
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*" />
<ColumnDefinition Width="120"></ColumnDefinition> <ColumnDefinition Width="120" />
<ColumnDefinition Width="*"></ColumnDefinition> <ColumnDefinition Width="*" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<!-- CAM 1 --> <!-- 开始 -->
<TextBlock Text="开始" Foreground="White" FontSize="18" VerticalAlignment="Center" Grid.Row="0"></TextBlock> <TextBlock
<fcommon:HotkeyBox Grid.Column="1" Hotkey="{Binding Path=StartCmd,Mode=TwoWay}" Height="30" Grid.Row="0"
Style="{StaticResource HotkeyBox_Setting}" Margin="0,0,20,0"></fcommon:HotkeyBox> VerticalAlignment="Center"
<!-- CAM 2 --> FontSize="18"
<TextBlock Text="结束" Foreground="White" FontSize="18" VerticalAlignment="Center" Grid.Row="0" Grid.Column="2"></TextBlock> Foreground="White"
<fcommon:HotkeyBox Grid.Column="3" Hotkey="{Binding Path=EndCmd,Mode=TwoWay}" Height="30" Grid.Row="0" Text="开始" />
Style="{StaticResource HotkeyBox_Setting}" Margin="0,0,20,0"></fcommon:HotkeyBox> <fcommon:HotkeyBox
<!-- CAM 3 --><!-- Grid.Column="1"
<TextBlock Text="CAM 3" Foreground="White" FontSize="18" VerticalAlignment="Center" Grid.Row="1"></TextBlock> Height="30"
Margin="0,0,20,0"
Hotkey="{Binding Path=StartCmd, Mode=TwoWay}"
Style="{StaticResource HotkeyBox_Setting}" />
<!-- 结束 -->
<TextBlock
Grid.Row="0"
Grid.Column="2"
VerticalAlignment="Center"
FontSize="18"
Foreground="White"
Text="结束" />
<fcommon:HotkeyBox
Grid.Row="0"
Grid.Column="3"
Height="30"
Margin="0,0,20,0"
Hotkey="{Binding Path=EndCmd, Mode=TwoWay}"
Style="{StaticResource HotkeyBox_Setting}" />
<!-- CAM 3 -->
<!--<TextBlock Text="CAM 3" Foreground="White" FontSize="18" VerticalAlignment="Center" Grid.Row="1"></TextBlock>
<fcommon:HotkeyBox Grid.Column="1" Hotkey="{Binding Path=AutoCAM3,Mode=TwoWay}" Height="30" Grid.Row="1" <fcommon:HotkeyBox Grid.Column="1" Hotkey="{Binding Path=AutoCAM3,Mode=TwoWay}" Height="30" Grid.Row="1"
Style="{StaticResource HotkeyBox_Setting}" Margin="0,0,20,0"></fcommon:HotkeyBox> Style="{StaticResource HotkeyBox_Setting}" Margin="0,0,20,0"></fcommon:HotkeyBox>-->
--><!-- CAM 4 --><!-- <!-- CAM 4 -->
<TextBlock Text="CAM 4" Foreground="White" FontSize="18" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2"></TextBlock> <!--<TextBlock Text="CAM 4" Foreground="White" FontSize="18" VerticalAlignment="Center" Grid.Row="1" Grid.Column="2"></TextBlock>
<fcommon:HotkeyBox Grid.Column="3" Hotkey="{Binding Path=AutoCAM4,Mode=TwoWay}" Height="30" Grid.Row="1" <fcommon:HotkeyBox Grid.Column="3" Hotkey="{Binding Path=AutoCAM4,Mode=TwoWay}" Height="30" Grid.Row="1"
Style="{StaticResource HotkeyBox_Setting}" Margin="0,0,20,0"></fcommon:HotkeyBox>--> Style="{StaticResource HotkeyBox_Setting}" Margin="0,0,20,0"></fcommon:HotkeyBox>-->
</Grid> </Grid>
......
#pragma checksum "..\..\..\..\..\SystemSetting\View\HotkeySettingPanelView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D888E13A2AE8413D64E24A715440AAAAAC9E21EEF16284F196352B1C8816F9B3" #pragma checksum "..\..\..\..\..\SystemSetting\View\HotkeySettingPanelView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "6C3CAB4B3207BC7F539B9E8EEAEEEE5EE4618DC17FD6B1E0BFFCB953F424888F"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// 此代码由工具生成。 // 此代码由工具生成。
......
#pragma checksum "..\..\..\..\..\SystemSetting\View\HotkeySettingPanelView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "D888E13A2AE8413D64E24A715440AAAAAC9E21EEF16284F196352B1C8816F9B3" #pragma checksum "..\..\..\..\..\SystemSetting\View\HotkeySettingPanelView.xaml" "{8829d00f-11b8-4213-878b-770e8597ac16}" "6C3CAB4B3207BC7F539B9E8EEAEEEE5EE4618DC17FD6B1E0BFFCB953F424888F"
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// 此代码由工具生成。 // 此代码由工具生成。
......
C:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\obj\x64\Debug\GeneratedInternalTypeHelper.g.cs 
FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\NDIMainView\View\NDIMainView.xaml;; FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\NDIMainView\View\NDIMainView.xaml;;
FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\NDIPreviewView\View\NDIPreviewView.xaml;; FC:\Projects\FGOUT\VIZ.FGOUT\VIZ.FGOUT.Module\NDIPreviewView\View\NDIPreviewView.xaml;;
......
This source diff could not be displayed because it is too large. You can view the blob instead.
2023-12-11 10:35:08,765 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键: 2023-12-13 14:24:02,604 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":1}
2023-12-11 10:35:09,003 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + 2023-12-13 14:24:53,116 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":1}
2023-12-11 10:35:09,148 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + A 2023-12-13 14:25:43,455 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":1}
2023-12-11 11:56:25,671 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键: 2023-12-13 14:46:25,724 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-11 11:56:25,990 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + 2023-12-13 14:46:34,054 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-11 11:56:26,111 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + A 2023-12-13 14:46:34,231 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:L
2023-12-11 14:12:13,481 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键: 2023-12-13 14:49:48,733 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-11 14:12:13,506 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键: 2023-12-13 14:50:28,121 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-11 14:12:13,667 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键: 2023-12-13 14:50:28,623 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-11 14:12:13,693 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键: 2023-12-13 14:50:28,673 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 14:50:28,700 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 14:50:28,725 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + C
2023-12-13 14:50:29,252 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + F
2023-12-13 14:51:06,721 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 14:51:42,922 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:D0
2023-12-13 14:51:44,299 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 14:51:44,489 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 15:00:06,520 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":1}
2023-12-13 16:26:18,638 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":1}
2023-12-13 16:26:43,434 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":0}
2023-12-13 16:27:13,388 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 16:27:13,983 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 16:27:14,245 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 16:32:25,357 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":1}
2023-12-13 16:33:05,348 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"type":"REPLAY","start_time":0,"end_time":0,"status":0}
2023-12-13 17:46:27,255 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:S
2023-12-13 17:46:48,657 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:47:05,828 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Delete
2023-12-13 17:47:22,744 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:47:30,460 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:47:46,355 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:48:09,750 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:48:21,463 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:08,077 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:08,419 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:09,802 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:10,215 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:49:25,956 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:27,329 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:28,082 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:28,992 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:31,336 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:31,554 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:31,829 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:32,737 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:33,204 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:49:35,364 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:49:40,429 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:50:56,701 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:50:58,219 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:50:58,419 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:51:05,414 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:51:08,097 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:51:14,873 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:51:15,401 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,426 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,449 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,475 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,499 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,546 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,596 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,621 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,647 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,672 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,697 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:51:15,721 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + K
2023-12-13 17:51:15,845 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + F
2023-12-13 17:51:16,523 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:51:16,692 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:51:23,632 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:52:36,625 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:52:37,139 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:52:37,162 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:52:37,186 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + C
2023-12-13 17:52:37,663 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + N
2023-12-13 17:52:54,350 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:52:54,687 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + N
2023-12-13 17:53:27,862 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:54:30,254 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:54:30,735 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 17:54:30,760 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:58:15,594 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:15,919 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:20,550 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:20,902 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + C
2023-12-13 17:58:22,531 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:22,729 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:22,874 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + V
2023-12-13 17:58:27,239 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:27,334 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Shift + S
2023-12-13 17:58:28,848 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:P
2023-12-13 17:58:29,316 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 17:58:29,599 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:C
2023-12-13 17:58:30,028 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:E
2023-12-13 17:58:32,896 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:33,015 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:33,865 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:34,287 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:S
2023-12-13 17:58:35,013 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:P
2023-12-13 17:58:35,251 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 17:58:35,647 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:39,440 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:58:39,632 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:59:02,469 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 17:59:02,735 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 17:59:29,187 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 17:59:48,321 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:02:13,346 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"mode":"manual","signal":"matt_start","timecode":0}
2023-12-13 18:02:15,038 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"mode":"manual","signal":"matt_end","timecode":0}
2023-12-13 18:02:16,203 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"mode":"manual","signal":"matt_start","timecode":0}
2023-12-13 18:02:17,240 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"mode":"manual","signal":"matt_end","timecode":0}
2023-12-13 18:02:18,386 [1] INFO VIZ.Framework.Connection.UdpEndpointManagerExpand - 发送UDPJosn串:{"mode":"manual","signal":"matt_start","timecode":0}
2023-12-13 18:03:21,220 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:03:21,291 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + C
2023-12-13 18:03:21,552 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + F
2023-12-13 18:03:25,374 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:03:25,516 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + N
2023-12-13 18:03:35,914 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:03:48,305 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:03:48,565 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + S
2023-12-13 18:04:43,726 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:04:43,876 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl +
2023-12-13 18:04:44,017 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + Alt + A
2023-12-13 18:04:59,071 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:04:59,256 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:04:59,567 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:04:59,662 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + V
2023-12-13 18:05:01,324 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:05:03,251 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:T
2023-12-13 18:05:03,627 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:O
2023-12-13 18:05:03,699 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:03,745 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:G
2023-12-13 18:05:03,947 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:G
2023-12-13 18:05:04,063 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:U
2023-12-13 18:05:04,114 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:O
2023-12-13 18:05:04,257 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:04,461 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:S
2023-12-13 18:05:04,533 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:H
2023-12-13 18:05:04,633 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 18:05:04,705 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:04,706 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:G
2023-12-13 18:05:04,960 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:X
2023-12-13 18:05:05,009 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:I
2023-12-13 18:05:05,106 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 18:05:05,317 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:W
2023-12-13 18:05:05,439 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:E
2023-12-13 18:05:05,593 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:05,850 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:07,752 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:J
2023-12-13 18:05:07,872 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:I
2023-12-13 18:05:07,943 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 18:05:08,016 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:08,167 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:G
2023-12-13 18:05:08,719 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:08,883 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:S
2023-12-13 18:05:08,955 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:H
2023-12-13 18:05:09,095 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:U
2023-12-13 18:05:09,329 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:J
2023-12-13 18:05:09,554 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:10,459 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:C
2023-12-13 18:05:10,555 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:O
2023-12-13 18:05:10,626 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:10,767 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:G
2023-12-13 18:05:11,555 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:12,022 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:12,145 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:E
2023-12-13 18:05:12,388 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:I
2023-12-13 18:05:12,746 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:B
2023-12-13 18:05:12,817 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:U
2023-12-13 18:05:12,983 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:13,225 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:C
2023-12-13 18:05:13,277 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:H
2023-12-13 18:05:13,420 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:U
2023-12-13 18:05:13,469 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 18:05:13,604 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:N
2023-12-13 18:05:13,823 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:C
2023-12-13 18:05:13,871 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:H
2023-12-13 18:05:14,015 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:U
2023-12-13 18:05:14,236 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:A
2023-12-13 18:05:14,308 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:L
2023-12-13 18:05:15,183 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Space
2023-12-13 18:05:24,940 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:05:25,108 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + C
2023-12-13 18:05:26,606 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Delete
2023-12-13 18:05:27,287 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:05:27,837 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:05:28,484 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:05:28,642 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:
2023-12-13 18:05:28,690 [1] INFO VIZ.FGOUT.Module.NDIMainViewModel - 快捷键:Ctrl + V
using System; using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
namespace VIZ.Framework.Common namespace VIZ.Framework.Common
...@@ -115,7 +111,12 @@ namespace VIZ.Framework.Common ...@@ -115,7 +111,12 @@ namespace VIZ.Framework.Common
return sb.ToString(); return sb.ToString();
} }
// Space
if (e.KeyCode == System.Windows.Forms.Keys.Space)
{
sb.Append($"{e.KeyCode}");
return sb.ToString();
}
return sb.ToString(); return sb.ToString();
} }
......
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VIZ.Framework.Core namespace VIZ.Framework.Core
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment