国家標準 GB28181 プロトコル クライアント開発 (3) クエリとリアルタイム ビデオ画面
この記事は「国家標準 GB28181 プロトコルのデバイス側開発」シリーズの 3 番目であり、GB28181 プロトコルにおける情報クエリとリアルタイム ビデオのアプリケーションについて説明します。まず、デバイス ディレクトリ クエリ、デバイス情報クエリ、およびデバイス ステータス クエリの 3 つの重要な情報クエリ機能を紹介し、プロトコルにおけるそれらのシグナリング インタラクション プロセスを詳細に説明します。続いて、データ伝送プロトコルや伝送仕様要件など、リアルタイム ビデオの実装について詳しく説明します。読者は、この記事を通じて GB28181 プロトコル デバイス側の開発における情報クエリとリアルタイム ビデオの重要な知識ポイントについて学びます。
1. 機器カタログの問い合わせ
デバイス ディレクトリのクエリは、GB28181 プロトコルの重要な機能です。デバイス ディレクトリをクエリすることで、現在のシステム内のすべてのデバイス情報を取得します。デバイス ディレクトリ クエリのシグナリング インタラクション プロセスは次のとおりです。
-
デバイスは、クエリ要求シグナリング (クエリ カタログ) をデバイス管理プラットフォームに送信します。
-
リクエストを受信したデバイス管理プラットフォームは、デバイスのカタログ情報(Catalog)をデバイスに返します。
デバイス ディレクトリのクエリを通じて、デバイス側はシステム内のすべてのデバイスの基本情報 (デバイス ID、名前、タイプなど) を取得できます。
GB28181 プラットフォーム -> デバイス側
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0
From: <sip:34020000002000000001@3402000000>;tag=bccedfd000105
To: <sip:34020000001110000001@3402000000>
Content-Length: 127
CSeq: 5 MESSAGE
Route: <sip:34020000001110000001>
Call-ID: 12345678900105
Via: SIP/2.0/UDP 192.168.1.54:5060;wlsscid=377aa9afcf1b36f;branch=123133532300105
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
<?xml version="1.0"?>
<Query>
<CmdType>Catalog</CmdType>
<SN>2</SN>
<DeviceID>34020000001110000001</DeviceID>
</Query>
デバイス側 -> GB28181 プラットフォーム
MESSAGE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.54:54193;branch=z9hG4bK649bcb2c
From: <sip:34020000001110000001@3402000000>
To: <sip:[email protected]:5060>
Call-ID: [email protected]
CSeq: 3 MESSAGE
Max-Forwards: 70
User-Agent: HTSIP UA/2.1
Content-Type: Application/MANSCDP+xml
Content-Length: 558
<?xml version="1.0"?>
<Response>
<CmdType>Catalog</CmdType>
<SN>2</SN>
<DeviceID>34020000001110000001</DeviceID>
<SumNum>1</SumNum>
<DeviceList Num="1">
<Item>
<DeviceID>34020000001310000001</DeviceID>
<Name>34020000001110000001</Name>
<Manufacturer>HBStream</Manufacturer>
<Model>IP Camera</Model>
<Owner>Owner</Owner>
<CivilCode>CivilCode</CivilCode>
<Address>192.168.1.54</Address>
<Parental>0</Parental>
<ParentID>34020000001110000001</ParentID>
<RegisterWay>1</RegisterWay>
<Secrecy>0</Secrecy>
<Status>ON</Status>
</Item>
</DeviceList>
</Response>
2. 設備情報照会
デバイス情報照会により、デバイス側はデバイス ID を通じて特定のデバイスの詳細情報を照会できます。シグナリング相互作用のプロセスは次のとおりです。
-
デバイスは、クエリ対象のデバイスの ID を含むクエリ要求シグナリング (Query Device) をデバイス管理プラットフォームに送信します。
-
リクエストを受信した後、デバイス管理プラットフォームはデバイスの詳細 (デバイス情報) をデバイスに返します。
デバイス情報クエリにより、デバイス側は、デバイスのメーカー、モデル、ファームウェアのバージョンなど、特定のデバイスに関する詳細情報を取得できます。
GB28181 プラットフォーム -> デバイス側
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0
From: <sip:34020000002000000001@3402000000>;tag=bccedfd000104
To: <sip:34020000001110000001@3402000000>
Content-Length: 134
CSeq: 5 MESSAGE
Route: <sip:34020000001110000001>
Call-ID: 12345678900104
Via: SIP/2.0/UDP 192.168.1.54:5060;wlsscid=377aa9afcf1b36f;branch=123133532300104
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
<?xml version="1.0"?>
<Query>
<CmdType>DeviceInfo</CmdType>
<SN>17430</SN>
<DeviceID>34020000001110000001</DeviceID>
</Query>
デバイス側 -> GB28181 プラットフォーム
MESSAGE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.54:54193;branch=z9hG4bK649bcb2c
From: <sip:34020000001110000001@3402000000>
To: <sip:[email protected]:5060>
Call-ID: [email protected]
CSeq: 2 MESSAGE
Max-Forwards: 70
User-Agent: HTSIP UA/2.1
Content-Type: Application/MANSCDP+xml
Content-Length: 308
<?xml version="1.0"?>
<Response>
<CmdType>DeviceInfo</CmdType>
<SN>17430</SN>
<DeviceID>34020000001110000001</DeviceID>
<DeviceName>HbsDevice</DeviceName>
<Result>OK</Result>
<Manufacturer>HBStream</Manufacturer>
</Response>
3. 設備状態問い合わせ
デバイスステータスクエリにより、デバイス側はデバイスのリアルタイムステータス情報を取得できます。シグナリング相互作用のプロセスは次のとおりです。
-
デバイスは、クエリ対象のデバイスの ID を含むクエリ要求シグナリング (クエリ ステータス) をデバイス管理プラットフォームに送信します。
-
リクエストを受信したデバイス管理プラットフォームは、デバイスの状態情報(Status Info)をデバイスに返します。
デバイス ステータス クエリでは、デバイスのオンライン ステータスやネットワーク接続ステータスなどの重要な情報を取得でき、デバイスの監視と管理に役立ちます。
GB28181 プラットフォーム -> デバイス側
MESSAGE sip:34020000001110000001@3402000000 SIP/2.0
From: <sip:34020000002000000001@3402000000>;tag=bccedfd000106
To: <sip:34020000001110000001@3402000000>
Content-Length: 134
CSeq: 5 MESSAGE
Route: <sip:34020000001110000001>
Call-ID: 12345678900106
Via: SIP/2.0/UDP 192.168.1.54:5060;wlsscid=377aa9afcf1b36f;branch=123133532300106
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
<?xml version="1.0"?>
<Query>
<CmdType>DeviceStatus</CmdType>
<SN>248</SN>
<DeviceID>34020000001110000001</DeviceID>
</Query>
デバイス側 -> GB28181 プラットフォーム
MESSAGE sip:[email protected]:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.54:54193;branch=z9hG4bK649bcb2c
From: <sip:34020000001110000001@3402000000>
To: <sip:[email protected]:5060>
Call-ID: [email protected]
CSeq: 4 MESSAGE
Max-Forwards: 70
User-Agent: HTSIP UA/2.1
Content-Type: Application/MANSCDP+xml
Content-Length: 295
<?xml version="1.0"?>
<Response>
<CmdType>DeviceStatus</CmdType>
<SN>248</SN>
<DeviceID>34020000001110000001</DeviceID>
<Result>OK</Result>
<Online>ONLINE</Online>
<Status>OK</Status>
<Encode>ON</Encode>
<Record>OFF</Record>
<DeviceTime>2023-06-28T13:54:52</DeviceTime>
</Response>
4. リアルタイムビデオ
リアルタイム ビデオは、GB28181 プロトコルの中核機能の 1 つです。データ伝送プロトコルと伝送仕様要件は次のとおりです。
-
データ伝送プロトコル:
GB28181 プロトコルは、リアルタイム伝送プロトコル (RTP) とリアルタイム制御プロトコル (RTCP) という 2 つのデータ伝送プロトコルを指定します。RTP はリアルタイムのオーディオおよびビデオ データの送信を担当し、RTCP はデータ送信中のフィードバックの制御と情報の制御に使用されます。 -
伝送仕様要件:
GB28181 プロトコルでは、リアルタイム ビデオの伝送に関していくつかの仕様要件が定められています。これには、ビデオのエンコード形式、解像度、フレーム レート、ビット レート、その他のパラメータの定義、およびデータ送信時の暗号化と圧縮の要件が含まれます。
リアルタイムビデオ機能により、デバイスはデバイスのカメラでキャプチャされた画像と音声データをリアルタイムで取得でき、リアルタイム監視と遠隔視聴を実現します。
以下は、完全なリアルタイム ビデオ シグナリング インタラクション プロセスです。
-
GB28181 プラットフォームは、リアルタイム画像を表示する必要がある場合、ターゲット デバイスにリアルタイム ビデオ招待信号 (Invite) を送信します。
-
招待シグナリングを受信した後、ターゲット デバイスは確認応答シグナリング (200 OK) をデバイス管理プラットフォームに返します。
-
確認応答を受信した後、GB28181 プラットフォームは、リアルタイム ビデオ要求が成功したことを示す確認 ACK 応答シグナリングをデバイスに返します。
-
デバイスは、ビデオおよびオーディオ データを伝送する RTP データ パケットを送信し、ネットワーク経由でターゲット デバイスに送信します。
-
ターゲット デバイスは RTP パケットを受信し、ビデオ データとオーディオ データを解析して再生します。
-
デバイスまたはターゲット デバイスのいずれかが終了シグナリング (Bye) を送信して、リアルタイム ビデオを終了します。
-
相手は終了シグナリングを受信した後、確認応答シグナリング(200 OK)を返します。
-
双方がメディア データの送信を停止します。
GB28181 プラットフォーム -> デバイス側、INVITE
INVITE sip:34020000001310000001@3402000000 SIP/2.0
Call-ID: helloVideo
CSeq: 1 INVITE
From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111
To: <sip:34020000001110000001@3402000000>
Max-Forwards: 70
Contact: <sip:34020000001310000001@3402000000>
Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-bff9-4f3000109
Content-Type: application/sdp
Content-Length: 225
v=0
o=34020000001310000001 0 0 IN IP4 192.168.1.54
s=Play
c=IN IP4 192.168.1.54
t=0 0
m=video 6000 RTP/AVP 96 98 97
a=recvonly
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
y=0100000001
f=
デバイス側 -> GB28181 プラットフォーム、200OK
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-bff9-4f3000109
From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111
To: <sip:34020000001110000001@3402000000>;tag=2ea6bb3
Contact: <sip:34020000001110000001@3402000000>
Call-ID: helloVideo
CSeq: 1 INVITE
Max-Forwards: 70
Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,REFER,UPDATE,INFO
Supported: timer
Session-Expires: 200;refresher=uac
Server: Happytime Agent Ver 1.0
Content-Type: application/sdp
Content-Length: 151
v=0
o=34020000001110000001 0 0 IN IP4 192.168.1.54
s=Play
c=IN IP4 192.168.1.54
t=0 0
m=video 19002 RTP/AVP 96
a=rtpmap:96 PS/90000
a=sendonly
GB28181 プラットフォーム -> デバイス側、ACK
ACK sip:34020000001310000001@3402000000 SIP/2.0
Call-ID: helloVideo
CSeq: 1 ACK
From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111
To: <sip:34020000001110000001@3402000000>
Max-Forwards: 70
Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-00110
Content-Length: 0
さよなら
BYE sip:34020000001310000001@3402000000 SIP/2.0
From: <sip:34020000002000000001@3402000000>;tag=bccedfd0111
To: sip:34020000001110000001@3402000000;tag=2ea6bb3
CSeq: 2 BYE
Call-ID: helloVideo
Via: SIP/2.0/UDP 192.168.1.54:5060;branch=z9hG4bKee5c5d98-00111
Max-Forwards: 70
Content-Length: 0
作者のhbstream(http://haibindev.cnblogs.com)を追加してご協力ください、転載の際は作者と出典を明記してください。