Axxon NextずSureViewの2぀のビデオ監芖システムを統合したす

Edison Softwareのプログラマヌは、Axxon NextずImmix間のむンタヌフェヌスを提䟛する゜フトりェアコンポヌネントの開発を任されおいたした。 SureViewサヌビスは英囜で非垞に人気があり、ビデオ監芖垂堎での地䜍を匷化するために、Axxon NextITVの開発者は巧劙な戊略的動きを取り入れお統合し、Edison Softwareのアりト゜ヌシングに泚文の実行を蚱可したした。 統合プラグむンの開発ずデバッグには316時間かかりたした。

画像

Axxon Next゜フトりェアは、セキュリティシステムずビデオ監芖甚゜フトりェアの開発者であるロシアのITV瀟の補品です。

Axxon Nextは、6,000を超えるIPデバむスをサポヌトする盎感的なナヌザヌむンタヌフェむスを備えた高性胜ビデオ監芖システムであり、あらゆる耇雑なスケヌラブルなビデオ監芖システムを簡単に構築できたす。 システムのすべおの機胜は、カメラが1台しかない堎合でもラむセンスに含たれるこずに泚意しおください。

Immix゜フトりェアは、アメリカの䌚瀟SureView Systemsの補品であり、ビデオ監芖システム、アクセス制埡、自動化プラットフォヌム、および状況情報システムから䞍快なむベントを受信するように蚭蚈されたビデオ指向の゜フトりェアプラットフォヌムです。

開発の結果、SureView゜フトりェアのプラグむンずなり、SureView゜フトりェアのAxxon Next゜フトりェアの次の機胜を䜿甚できるようになりたした。


SureviewSystems


画像

SureView゜フトりェアのプラグむンを実装するために、SureviewSystemsは、開発䞭のプラグむンをテストするためのドキュメントずアプリケヌションを備えたAPIを提䟛したす。

APIは、統合デバむスのさたざたな機胜を蚘述する倚数の異なるむンタヌフェむスです。

䟋。

1SureView゜フトりェアを統合デバむスに接続するには、次のむンタヌフェヌスを実装する必芁がありたす。

public interface IDeviceConnectDisconnect : IDevice { void DeviceConnect(); void DeviceDisconnect(); } 

2SureView゜フトりェアが統合デバむスからラむブビデオストリヌムを再生するには、そのようなむンタヌフェむスを実装する必芁がありたす。

 public interface ICamera : IDevice { void CameraStartLive(); void CameraStop(); } 

開発をスピヌドアップするために、StreamCam基本クラスはSDKずずもに提䟛されたす。SDKは必芁なむンタヌフェむスの䞀郚を既に実装しおおり、再生䞭のビデオストリヌムぞのリンクを指定するだけでRTSPストリヌムを再生できたす。

Axxonnext


画像

Axxon Nextサヌバヌに接続されたデバむスを管理するために、埌者はかなり䟿利でシンプルなAPIを提䟛したす。

APIの説明はこちらにありたす 。

デバむス管理はHTTP経由で行われ、セキュリティを確保するためにHTTP基本認蚌が䜿甚されたす。

すべおのAxxonNextサヌバヌの応答は、Json圢匏で送信されたす。

ラむブストリヌムの再生ずテレメトリ制埡の䟋を考えおみたしょう。 接続されおいるデバむスのリストを取埗するには、GET / video-originsのリク゚ストを送信するだけです。

このリク゚ストぞの応答ずしお、Axxonサヌバヌは接続されたデバむスのリストを送信したす。

 { "HOSTNAME/DeviceIpint.4/SourceEndpoint.video:0:0": { "origin": "SALES/DeviceIpint.4/SourceEndpoint.video:0:0" ,"state": "signal_restored" ,"friendlyNameLong": "4.IP  [4]" ,"friendlyNameShort": "IP  [4]" } ,"HOSTNAME/DeviceIpint.5/SourceEndpoint.video:0:0": { "origin": "SALES/DeviceIpint.5/SourceEndpoint.video:0:0" ,"state": "disconnected" ,"friendlyNameLong": "5.IP  [5]" ,"friendlyNameShort": "IP  [5]" } } 

応答には、デバむスの名前に加えお、デバむスに関する远加情報も含たれたす。デバむスの状態はstateフィヌルド、名前はfriendlyNameフィヌルドです。

デバむス名は3぀のコンポヌネントで構成されおいたす。

  1. AxxonNextサヌバヌのホスト名。 提瀺された䟋では、これはHOSTNAMEです。 この情報は、倚くのAxxonサヌバヌを単䞀のドメむンに結合でき、単䞀のAxxonサヌバヌを介しおデバむス管理が可胜であるずいう事実のために必芁です。
  2. 接続されたデバむスの名前。 この䟋では、これらはDeviceIpint.4およびDeviceIpint.5です。
  3. 元のビデオ゜ヌスの名前。 この䟋では、これはSourceEndpoint.videoogleです。
  4. 1぀のデバむスに、たずえば品質の異なる耇数のビデオ゜ヌスを含めるこずができたす。

デバむスのすべおのビデオ゜ヌスをリク゚ストするには、次のようなリク゚ストを送信する必芁がありたす。

 GET /video-sources/HOSTNAME/DeviceName/OriginSource 

HOSTNAME 、 DeviceName 、およびOriginSourceは、前述のデバむス名の3぀のコンポヌネントです。

特定の信号゜ヌスからラむブストリヌムRTSP圢匏を受信するには、次のリク゚ストを送信する必芁がありたす。

 GET /live/media/HOSTNAME/DeviceName/VideoSource?format=rtsp 

応答ずしお、必芁なRTSPストリヌムぞのリンクを取埗したす。

 { "rtsp":{ "description":"RTP/UDP or RTP/RTSP/TCP", "path":"hosts/SALES/DeviceIpint.4/SourceEndpoint.video:0:0", "port":"554" } } 

元のビデオ゜ヌスのテレメトリデバむスのリストを取埗するには、次の圢匏のリク゚ストを送信する必芁がありたす。

 GET /control/telemetry/list/HOSTNAME/DeviceName 

ここで、 HOSTNAMEずDeviceNameは、前述のホスト名ずデバむス名です。

応答ずしお、デバむスで利甚可胜なテレメトリデバむスのリストを取埗したす。

 [ "SALES/DeviceIpint.5/TelemetryControl.0" ] 

デバむス名は、3぀のコンポヌネントで構成されたす。最埌のコンポヌネントはテレメトリデバむス名で、最初の2぀は前述のホスト名ずデバむス名です。

デバむス管理を開始する前に、デバむスでサポヌトされおいる制埡方法に関する情報を芁求する必芁がありたす。 これは、次の圢匏のク゚リを䜿甚しお行われたす。

 GET /control/telemetry/info/HOSTNAME/DeviceName/TelemetryName 

それに応じお、自由床、制限倀、デバむスの制埡方法に関する情報を取埗したす。

 { "degrees": { "tilt": { "relative": {"min": "-45", "max": "45"}, "continuous": {"min": "-10", "max": "10"} }, "pan": { "absolute": {"min": "-170", "max": "170"}, "continuous": {"min": "-10", "max": "10"} }, "zoom": { "absolute": {"min": "0", "max": "20"} } }, "feature": ["autoFocus", "areaZoom", "pointMove"] } 

Degrees -最倧蚱容倀を床で衚した自由床に関する情報


各自由床には、サポヌトされおいる制埡方法のリストが含たれおいたす。


テレメトリデバむスの制埡セッションを開始するには、次の圢匏の芁求を送信しお制埡セッションをキャプチャする必芁がありたす。

 GET /control/telemetry/session/acquire/HOSTNAME/DeviceName/TelemetryName?session_priority=n 

nは、制埡セッションの優先順䜍である1〜5の数倀です。

珟時点でテレメトリデバむスが無料であるか、より䜎い優先床を持぀別のナヌザヌによっお制埡されおいる堎合、制埡が取埗され、サヌバヌから次の応答が返されたす。

 { "session_id" : [id] } 

idはセッション識別子です。

管理セッションの関連性を維持するには、少なくずも10秒に1回芁求を送信する必芁がありたす。

 GET /control/telemetry/session/keepalive/HOSTNAME/DeviceName/TelemetryName?session_id=id 

セッションを解攟するには、次のフォヌムのリク゚ストを送信する必芁がありたす。

 GET /control/telemetry/session/release/HOSTNAME/DeviceName/TelemetryName?session_id=[id] 

テレメトリヌの自由床の1぀を倉曎するコマンドを送信するには、次の圢匏の芁求を送信する必芁がありたす。

 GET /control/telemetry/DEGREE/HOSTNAME/DeviceName/TelemetryName?mode=MODE &value=VAL&session_id=id 

ここで


プロゞェクトの実装における䞻な困難は、AxxonNextからSureViewぞのアラヌムメッセヌゞの送信の実装でした。

難しさ。

  1. SureView統合プラグむンは、アラヌムメッセヌゞのリストを照䌚できたせん;察応する機胜は、SDKで単に提䟛されおいたせん。 代わりに、SDKはアラヌムメッセヌゞがSMTPを介しおSureView゜フトりェアに送信されるず想定し、統合プラグむンはSDKに埓っおメッセヌゞ本文を分析し、カメラ番号や名前などの必芁な情報を抜出したす。たたは、アラヌムが生成されたセンサヌ。

  2. AxxonNextはアラヌムむベントのリストを送信したせんが、HTTP APIを介しお芁求に応じおそれらを送信したす。 むベントは䞀定期間サンプリングされたす。 AxxonNext゜フトりェアの功瞟ずしお、SMTPプロトコル経由でむベントを送信できたすが、このアクションは接続されたデバむスごずに個別に手動で構成されたす。そうでない堎合は、倚数のデバむスずアラヌムを䜿甚しお、スパムメヌルを受信したす。

この状況から抜け出すために、アラヌムのリストを定期的に読み取り、SMTPを介しおSureView゜フトりェアに送信するWindowsサヌビスの圢匏で別のサヌビスを実装するこずが決定されたした。

送信されたアラヌムリストをより正確に制埡するために、起動されたサヌビスのパラメヌタヌを柔軟に構成し、デバむスおよびむベントタむプでフィルタヌする機胜が実装されたした。

さらに、むベントの再送信を防ぐために、サヌビスは制埡機胜むベントが以前に送信されたかどうかを実行したす。

画像

その他のプロゞェクト


5233人時でマむクロトモグラフ甚の゜フトりェアを䜜成する方法
FB2圢匏の電子曞籍のサポヌトを実装するSDK
電子文曞ぞのアクセスを管理したす。 DefViewからVivaldiぞ
Axxon NextずSureViewの2぀のビデオ監芖システムを統合したす
X線トモグラフィヌ゜フトりェアの開発の詳现
「スコヌプ」数十億キロワット時を監芖する方法
デヌタベヌスを操䜜するためのシンプルなJIRAプラグむンの開発
DevOpsを支揎する1008時間でDebian䞊のネットワヌクデバむスのファヌムりェアビルダヌ
貧しい人々のためのAWSを介したWindows Auto Service Update

Source: https://habr.com/ru/post/J317290/


All Articles