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



All Articles