概要
SID(セッションID)とは何か、およびSUNAPIのビデオストリーミング関連コマンドでの使用方法について
診断
セッションIDはネットワークの専門家には基本的な概念ですが、それ以外の方には馴染みがありません。したがって、その意味と使用方法を簡単に説明します。
まず、セッションとは何かを簡単に理解しましょう。
クライアントのHTTP状態情報をサーバー側で維持する技術をセッションと呼びます。つまり、NVRやカメラにアクセスしたユーザーの情報を保存します。これはブラウザが終了するまで維持されます。
では、なぜセッションが必要なのでしょうか?
- コネクションレス
- ステートレス
これらはHTTPのよく知られた特徴です。
コネクションレスとは通信後に接続を維持しないことを意味します。サーバーは応答を終えると接続を閉じ、これによりサーバー資源の使用を最小化し効率を高めます。
ステートレスとはサーバーがクライアントの情報を保持しないことを意味し、これにより応答の冪等性とサーバースケールアウトのスケーラビリティを活用します。
しかし、ステートレス通信のサーバーはクライアントのリクエストが認証されているかを確認する手段がないため、応答前に毎回認証しなければなりません。セッションはこのステートレスの欠点を補います。つまり、サーバーがクライアントの状態を記憶することをセッションと呼びます。
カメラやNVRのウェブビューアを開くとき、IDとパスワードを入力して認証します。セッションにより、ページが切り替わるたび(例:ライブ → 設定)に認証を行う必要がなくなります。
ブラウザ(クライアント)が最初のリクエスト(ログイン)を行うと、サーバーはブラウザの状態をセッションに保存し、セッションIDを返します。その後、ブラウザが同じセッションIDでリクエストを送ると、同一ユーザーと見なされます。
したがって、ユーザーがWEBまたはVMS上でNVRからのビデオストリーミングに同じセッションIDを使用すれば、単一ユーザーとしてマルチチャネルのビデオ表示が可能です。
原因と解決策
1. SUNAPIドキュメントガイド
- RTSP URLでは、NVRにとってチャネル情報とセッションIDが重要であり、カメラにとってはチャネル情報のほかにプロファイル名またはプロファイル番号が重要です。
- 一般的にNVRでは、ライブ用のセッションIDを作成しストリームURIを取得した後、LIVE RTSPセッションを確立できます。
- 一般的に以下の種類のセッションがサポートされています:
- オーディオ
- ビデオ
- メタデータ
- バックチャンネル
- NVRでは、同じセッションIDを持つすべてのRTSP接続は単一のセッションとみなされます。(例:16ビュー表示モードでは、16のRTSP接続すべてが同じセッションIDを持ちます)
- 同じセッションIDのすべてのライブチャネルは1つのライブセッションとみなされます
- セッションIDが変更されない場合、ストリーミングされるビデオは同じフォーマット(例:時間、プロファイルなど)になります。
2. NVRセッション数仕様
- NVRでは各チャネルに別々のセッションが割り当てられます。各NVRで設定可能な最大セッション数は以下の通りです。
- 最大ライブセッション数
- 32チャネル以上のNVR
- ユニキャスト : (チャネル数 / 4)× ユニキャストユーザー数
- マルチキャスト : (チャネル数 / 4)× マルチキャストユーザー数
- 32チャネル以上のNVR
- 8または16チャネルのNVR
- ユニキャスト : (DEF_CHANNELS / 2)× ユニキャストユーザー数
- マルチキャスト : (DEF_CHANNELS / 2)× マルチキャストユーザー数
- 8チャネル未満のNVR
- ユニキャスト : (DEF_CHANNELS)× ユニキャストユーザー数
- マルチキャスト : (DEF_CHANNELS)× マルチキャストユーザー数
- 最大検索セッション数
- 同時再生数 × 最大リモートユーザー数
- 例
- マルチチャネルライブの場合(8ch NVR、最大ユニキャストユーザー数10)
- 最大セッション数 = (8 / 2) × 10 = 40
- これは、単一のSIDで最大80のライブマルチストリームが可能であることを意味します。
- マルチチャネルライブの場合(8ch NVR、最大ユニキャストユーザー数10)
- マルチチャネル再生の場合(16チャネル(ローカル)、最大リモートユーザー数3)
- 最大セッション数 = 16 × 3 = 48
- これは、単一のSIDで最大48の再生マルチストリームが可能であることを意味します。
- 同じ時間帯のビデオのみ同時再生可能です。