用于管理流式视频帧的队列字典

本文关键字:队列 字典 视频 管理 用于 | 更新日期: 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(集合,操作)、

之类的操作