私は、複数のカメラからのビデオフレームを分析するシステムに取り組んでいます。各カメラはWCFセッションを初期化し、ビデオフレームを送信する前に識別のためのGUIDを割り当てられます。処理負荷は、カメラの数が増えるにつれてサーバがリアルタイムで達成できる以上のものです。このように、私は動きのあるカメラからのバーストで到着するデータを管理するためのクラスを作成しています。ストリーミングビデオフレームを管理するキューの辞書
カメラからの各フレームは、他のカメラのフレームと並行して分析する必要があります。各カメラは、データのFIFO性質を管理するためにフレームをキューに充填します。
キューの管理により、私はアイデアを探していました。最初は辞書を作成し、各GUID-Queueのペアを挿入するつもりでした。しばらくコードを作業した後、私はこれが最善のアプローチではないと考え始めています。誰にも何か提案はありますか?
いくつかの単純化されたサンプルコード:現在、もしIハードコードカメラシステムの動作の設定された数のためにすべて
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;
}
}
}
。さまざまな数のカメラで動作させることは、より困難です。任意の提案やアドバイスをいただければ幸いです。
あなたの 'parallel'タグに基づいて、私はあなたが.NET 4にいると思いますか? –
@ M.Babcockはい私は.Net 4.0フレームワーク内で開発しています。 – Ritz