ビデオ・ストリームを見るためにONVIFクライアントを使用する
ONVIFクライアントは、進んだカスタム監視システムから基本的なメディア・プレイヤーまで、多くの異なる性質を持っています。
このセクションでは、Milestone Open Network Bridgeに接続するための手順の例を挙げています。
ビデオのライブ・ストリームを見るためにネットワーク・ビデオ・クライアントを使用して下さい。
この例では、ONVIF Device Managerをインストールする方法とXProtectインストールからライブビデオをストリームするための構成を説明します。
このONVIF Device Managerは無料で、ONVIF基準に適合するiDeviceDesignからのオープンソースのネットワークビデオクライアントです。このツールは、ネットワーク上でONVIF基準に適合するビデオを簡単に発見し、視るために広く使われています。しかし、あなたはライブビデオのみのストリームにONVIF Device Managerを使用しています。加えて、ストリーム内のビデオデータを収集たり、保存することはできません。
開始する前に、XProtectインストールの管理者からの次の情報を入手してください。
- Milestone Open Network Bridge用に作成されたユーザーのためのログイン資格情報
Milestone Open Network BridgeがインストールされているコンピュータのIPアドレスまたはコンピュータ名。ONVIF Device Managerをインストールするには以下の手順に従ってください:
- SourceforgeONVIF Device Managerサイト(https://sourceforge.net/projects/onvifdm/)に移動し、インストーラをダウンロードして実行します。ONVIF Device Managerのインストールは、あらゆるコンピュータから行えます。
- インストールが完了したら、貴方のデスクトップにアイコンが表示されます。アイコンをダブルクリックしてONVIF Device Managerを開始します。
- ONVIF Device Managerを開始すると、自動的にネットワーク上のONVIF適合デバイスが見つかります。しかし、は見つからない可能性があります Milestone Open Network Bridge。
- その場合は、ステップ6に移動してください
- できない場合は、手動でブリッジを追加します。ステップ4で続行
- Milestone Open Network Bridgeを追加するには、追加をクリックしてください。
- 追加ディバイスダイアローグボックス及びURI欄で、Milestone Open Network Bridgeをインストールしたコンピュータ名またはIPアドレスとONVIFポーナンバーを記入して下さい。例えば、ストリングはのようなものです:http://[IPaddress]:580/onvif/device_service。
- ブリッジを追加した後は、リストの最後の「ディバイス」が使用可能です。それを選択して下さい。
- 上記リストのONVIFクライアント用に作成された基本ユーザーのログイン資格情報を入れて下さい。ユーザー名には、ドメインユーザー名を入れる必要があります。
- 変更を適用するためにMilestone Open Network Bridgeサービスを再起動してください。
ビデオ・ストリームを表示するために、メディアプレーヤーを使用します。
この例では、XProtectのインストール中にカメラからのライブビデオフィードや録画したビデオを取得し、表示するために、VLCメディアプレーヤーを使用する方法について説明します。
VLCメディアプレーヤーは、RTSPを含む様々なストリーミング・プロトコルをサポートするVideoLANの無料で、オープンソースのマルチメディア・プレーヤーです。カメラにすぐ接続したり、または単にカメラへの接続をテストしたい場合、VLCメディアプレーヤーを使用すると便利です。
録画された映像を見るためにカメラに接続すると、Milestone Open Network Bridgeビデオ・シーケンスは、最初のシーケンスから始まります。
開始する前に、XProtectインストールの管理者からの次の情報を入手してください。
- Milestone Open Network Bridgeに割り当てられているユーザーアカウントのログイン資格情報
- インストールされたコンピュータのIPMilestone Open Network Bridgeアドレスまたはその名前
- ビデオをストリーミングするデバイスのGUID。
Management ClientでカメラGUIDEは利用可能です。GUIDを検索するには、カメラが追加されている録画サーバを選択し、カメラを選択します。情報タブをクリックし、キーボードのCtrlキーを押し、保持し、それから、カメラのビデオ・プレビューをクリックします。
この説明は、Windows用のVLC2.2.4に基づいています。
VLCメディアプレーヤーをインストールして、それをXProtectに接続するには、次の手順に従ってください:
- https://www.videolan.org/vlc/に移動、VLCメディアプレーヤーのインストーラをダウンロードします。
- インストーラを実行し、各ステップの指示に従ってください。
- ツールバー上で、メディアをクリックし、オープン・ネットワーク・ストリームを選択します。
- オープン・メディアダイアログ・ボックス内で、次のRSTP 文字列を入力します。[Milestone Open Network BridgeIPアドレス]および[カメラGUID]の角括弧内の変数を正しい情報に置き換えてください:
- ライブビデオストリームを閲覧するには、rtsp://[Milestone Open Network BridgeIP Address]:554/live/[CameraGUID]を入力します。
- 録画映像を閲覧するにはrtsp://[Milestone Open Network BridgeIPAddress]:554/vod/[CameraGUID]を入力します。
- プレイをクリックし、そして、Milestone Open Network Bridgeに追加されたユーザーアカウントのユーザー名とパスワードを入力します。
ビデオ再生の管理
再生のコントロールはRTSP基準およびONVIFストリーミング仕様(https://www.onvif.org/profiles/specifications/)に準じます。
録画サマリー
GetRecordingSummary
コマンドを使用することで、デバイスの録画したビデオの概要を取得することができます。これは必要用件ではありませんが、検索を実行するに先立って有益な情報を提供してくれます。
GetRecordingSummary
またはGetMediaAttributes
を使用して、最初および最後の録画のタイムスタンプを取得することができます。しかし、まずXProtect Management ClientのMilestone Open Network Bridgeプラグインで詳細設定タブでカメラの設定を使用を有効にする必要があります。
GetServices
から戻ってきたサービスエンドポイントを使用すると、RecordingSearch
サービスのためのプロキシを作成することができます。リクエストとリスポンス対象を作成し、 GetRecordingSummary
を呼び出します。
SearchBindingProxy searchProxy( &soapSearch );
std::string searchEndpoint = "http://" + host + "/onvif/recording_search_service":
_tse__GetRecordingSummary tse__GetRecordingSummary;
_tse__GetRecordingSummaryResponse tse__GetRecordingSummaryResponse;
result = searchProxy.GetRecordingSummary( searchEndpoint.c_str(), NULL,
&tse__GetRecordingSummary, &tse__GetRecordingSummaryResponse );
録画のためのサーチ
サーチサービスメソッドであるFindRecordings
はカメラで非同期のサーチを開始します。FindRecordings
はサーチ結果を参照する最小単位を戻します。仮に、1つしか録画可能なものがない場合でも、サーチはその録画のリファレンスを得るための適切な方法です。
以下のマンダトリパラメータとともに、FindRecordings
リクエストを送ります:
SearchScope
>IncludedSources
>Token
–カメラにGUID最小単位を提供する必要があります。SearchScope
>RecordingInformationFilter
– 以下のパラメータと紐づいています:timestamp
(UTCフォーマット)maxTimeBefore
(ミリセカンド単位。リクエストされたtimestampの前の時間)maxCountBefore
(リクエストされたtimestampeの前の最大トラック数)maxTimeAfter
(ミリセカンド単位。リクエストされたtimestampの後の時間)maxCountAfter
(リクエストされたtimestampeの後の最大トラック数)
たとえば、
boolean(//Track[TrackType = “Video”]),2016-12-06T08:07:43Z,99999999,20,99999999,20
サーチクライテリアごとに固有であるSearchToken
とともに、レスポンスを取得できます。
SearchToken
からGetRecordingSearchResults
に渡すと、サーチクライテリアに呼応するすべてのトラックのリストを取得できます。
再生を開始する
ビデオ再生を閲覧するとき、デフォルトのスピードは1です(通常の再生は順方向です)。
再生は RTSP PLAY手法により主導されます。レンジは指定可能です。レンジが指定されていない場合、ストリームは始めから終わりまで再生されます。あるいは、ストリームが一時停止された場合には、一時停止された箇所から再開します。本例で、“Range: npt=3-20”は、RTSPサーバーに3秒から20秒まで再生を開始するように指示します。
たとえば、
PLAY rtsp://basic:basic@bgws-pvv-04:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0
CSeq: 123
セッション:12345678
必要: onvif-replay
範囲: npt=3-20
レートのコントロール: no
逆再生
ONVIFデバイスは逆再生をサポートすることがあります。逆再生は負の値のあるスケールヘッダーを使用して表示されます。例えば、データのロスなく逆再生をする場合、–1.0が値として使われます。
Milestone Open Network Bridgeは [-32をサポートしています:32]。
PLAY rtsp://basic:basic@bgws-pvv-04:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373 RTSP/1.0
CSeq: 123
セッション:12345678
必要: onvif-replay
範囲: clock=20090615T114900.440Z
レートのコントロール: no
スケール:-1.0
スピードの変更
スピードはRTSP Rate-Controlヘッダーによりコントロールされます。「Rate-Control=yes」の場合、サーバーが再生スピードをコントロールしています。ストリームは標準のRTPタイミングメカニズムを用いて、リアルタイムで提供されます。「Rate-Control=no」の場合、クライアントが再生スピードをコントロールしています。Rate-controlledのリプライは、往々にして特定のONVIFが指定されていないクライアントによって使用されています。なぜなら、「Rate-Control=no」を指定しないからです。
クライアントで再生のスピードをコントロールする場合、提供されたコントローラーを用います。例えば、VLCメディアプレイヤーにおいては、 再生 > スピード> 速くあるいは 遅くを選択します。0.5スピードを速める、あるいは遅くする。
Faster FineそしてSlower Fineはスピードを0.25の単位で変更します。
コマンドラインエントリで、VLCメディアプレイヤーの再生を管理する
コマンドラインを使うことで、VLCメディアプレイヤーでのビデオの再生を管理することができます。詳細はVLCコマンドラインヘルプ(https://wiki.videolan.org/VLC_command-line_help/)を参照してください。
これらのコマンドは、例えば逆再生や、再生の開始場所の変更といったことを可能にします。
よく使われるコマンドラインの例:
>vlc.exe --rate=-1.0 --start-time=3600 "rtsp://basic:basic@bgws-pvv-04:554/vod/943ffaad-42be-4584-bc2c-c8238ed96373"
場所:
- 速度はスケールおよびスピードパラメータ
- 開始時間は、データベースが開始する数秒後
以下は、VLCメディアプレイヤーの再生コントロールです:
コード |
コードでできることは何ですか? |
---|---|
input-repeat= |
<integer [-2147483648 .. 2147483647]> インプットの重複 同じ入力が繰り返される回数 |
start-time= |
<float> 開始時刻 ストリームは、この地点で開始されます(数秒後に) |
stop-time= |
<float> 終了時間 ストリームは、この地点で終了します(数秒後に) |
run-time= |
<float> ランタイム ストリームはこの期間実行されます(数秒後に) |
input-fast-seek no-input-fast-seek |
ファーストシーク(デフォルトでは無効) シークしている間、正確さよりスピードを選ぶ |
rate= |
<float> 再生速度 これは再生スピードを定義します(標準スピードは1.0です) |
input-list= |
<string> インプットリスト コンマで区切られた入力のリストを与えることができます。これらの入力のリストは、通常の入力の後に連結されます。 |
input-slave= |
<string> インプットスレイブ(実験的) これにより、複数のインプットを同時に操作することができます。これは実験的な機能であり、すべてのフォーマットがサポートされているわけではありません。インプットのリストは、#を使って区切ってください。 |