用于管理流式视频帧的队列字典
本文关键字:队列 字典 视频 管理 用于 | 更新日期: 2023-09-27 18:23:56
我正在开发一个系统,该系统将分析来自多个相机的视频帧。每个摄像机都将初始化WCF会话,并在发送视频帧之前分配一个GUID进行标识。随着摄像机数量的增长,处理负载超过了服务器实时完成的负载。因此,我正在编写一个类来管理来自运动激活相机的突发数据。
来自摄影机的每个帧必须与来自其他摄影机的帧并行分析。每个摄像头都将在队列中填充帧,以管理数据的FIFO特性。
排队的管理让我一直在寻找想法。最初,我打算创建一个字典并插入每个GUID队列对。在编写代码一段时间后,我开始认为这不是最好的方法。有人有什么建议吗?
一些简化的示例代码:
namespace DataCollection
{
[ServiceBehavior(Name = "ClientDataView", InstanceContextMode = InstanceContextMode.Single)]
public class DataCollectionService : IDataCollectionService
{
//Dictionary of Guid-Queue pairs
CameraCollection CameraArray = new CameraCollection();
public Guid RegisterCamera()
{
Guid ID = new Guid();
WorkQueue FrameQueue = new WorkQueue();
CameraArray.AddCamera(ID, FrameQueue)
return ID;
}
public bool SendData(Guid ID, FrameReady newFrame)
{
Frame dataFrame = newFrame.OpenFrame;
WorkQueue que = CameraArray.GetQueueReference(ID);
que.QueueFrame(dataFrame);
return true;
}
}
}
目前,如果我为一定数量的相机硬编码所有内容,系统就会工作。让它与不同数量的相机一起工作更具挑战性。如有任何建议或建议,我们将不胜感激。
.Net framewok 4有一个名为Parallel的类。这个类有一个扩展方法Foreach。使用您的集合,您可以执行Parallel.Foreach(集合,操作)、