質問: 物理的に遠距離にあるPCでカメラの画像取得を行い、同一ネットワーク内に設置された手元のPCで、カメラの操作、映像の閲覧を行う、というシステムの構築を目指しています。 現在、カメラの操作・閲覧用のツールの作成に着手しているのですが、周辺技術に疎くどのようなライブラリ等を使用すればいいのか見当がつきません。次に記す要件に従ってツールを作成しようと考えています。 * カメラのSDKの都合上OSはWindows7以降、対応言語はC, C++, C#, Pythonのみ * 遠方のPCに接続するPCはせいぜい1台で、LANでつながっている。 * カメラ回りの処理は、接続の有無にかかわらず、プログラムの立ち上げ時から常に動いているようにしたい。 * カメラの初期設定等は起動時に外部ファイルから読み出せるようにしておきたい。 LinuxであればsshでX11 forwardingをすれば良いだけな案件の気もします。 しかし、今回の場合、Windowsではどのような道具を使うのが最適なのかわかりません。 キーワードだけでも良いのでヒントを与えてくだされば幸いです。
回答: 接続形態について次のような感じになっているという前提で良いでしょうか? ``` ユーザーのPC ----LAN---- カメラ接続用PC ===USB等のなにか=== カメラ ``` * カメラ自体はネットワークに非対応であり、ONVIF等にも対応していない。独自規格かつ独自ドライバーでパソコンにUSB等で接続する。SDKはWindows7, Windows 8.1, Windows 10以外では動作しない。Windows Server 2016等のサーバーOSやLinuxは非対応。 * PCは両方ともWindows 7, Windows 8.1, Windows 10の何れか。 最も汎用的なのは、操作や閲覧ができるWebアプリを作って、カメラ接続用PCでWebサーバーとして公開することです。WindowsクライアントOSは接続数に制限がありますが、たかだか1台しか接続しなければ問題ないでしょう。映像もHTML5のVideoを使えば可能ですが、リアルタイムエンコードが必要になる場合があり、そこそこのスペックのカメラ接続用PCが必要になる場合があります。Webアプリを作るのにどんな言語でも良いですし、WebサーバーもIISでもApacheでもいいのですが、それなりの知識が無いと難しいでしょう。 最も簡単なのは、リモートデスクトップで繋いでしまうことです。ユーザーPCからカメラ接続用PCにリモートデスクトップ接続すれば、カメラ接続用PC上の操作が何でも可能です。こちらの難点はカメラの映像がうまく再生できない(ビューワーや回線品質による)場合があることです。物や状況によるため実際に試して見ないとうまく映るかどうかはなんとも言えません。動画だけは別手段にするというのも必要かも知れません。 映像の閲覧だけが問題になっている場合は、RTSPサーバーとして動作させるという手もあります。クライアント側はVLC等で閲覧可能です。RTSPサーバーの提供方法は色々ありますので調べてみてください。エンコード処理が結構重いですので、PCのスペックには注意してください。 いずれも、WindowsクライアントOSには接続数に制限があります。たかだか1台であればいいですが、複数台からということであれば、サーバー系OSでないと厳しいです。カメラ自体を汎用的なONVIF対応のものに変えるといったことを考えた方が良いかもしれません。