視頻監(jiān)控平臺(tái)-GB28181-語(yǔ)音對(duì)講功能
語(yǔ)音對(duì)講是在2014版本提出來(lái)的,這里詳細(xì)寫(xiě)一遍國(guó)標(biāo)28181-2016語(yǔ)音對(duì)講的功能介紹。
提前先把GB28181檢測(cè)需要注意的事項(xiàng)說(shuō)一下:
1、語(yǔ)音對(duì)講其實(shí)主要的是音頻流的輸入輸出, 輸入設(shè)備類(lèi)型是136,輸出設(shè)備類(lèi)型是137
2、目前檢測(cè)的時(shí)候,??禂z像機(jī)是定制的檢測(cè)版本有固定的137類(lèi)型id,一般??禂z像機(jī)是沒(méi)有配置音頻輸出通道的,需要自己通過(guò)SDK模擬一個(gè)音頻輸出設(shè)備或則讓??堤峁?28181檢測(cè)的固件版本。
3、檢測(cè)時(shí)候需要用筆記本電腦模擬一個(gè)136音頻輸入的設(shè)備,一般和客戶端綁定一起(或則后臺(tái)服務(wù)器配置相應(yīng)的id和客戶端綁定一起)
4、音頻輸入源一般是采用筆記本采集的音頻信號(hào),音頻采集代碼后面的博客提供。
下面看一下語(yǔ)音對(duì)講的流程:
其中, 信令 1 、
2 、 3 、 4 為語(yǔ)音廣播通知、 語(yǔ)音廣播應(yīng)答消息流程; 信令 5 、 1 2 、 1 3 、 1 4 、 1 5 、 1 6 為 S I P 服務(wù)
器接收到客戶端的呼叫請(qǐng)求通過(guò) B 2 B UA 代理方式建立語(yǔ)音流接收者與媒體服務(wù)器之間的媒體流信令
過(guò)程, 信令 6~1 1 為 S I P 服務(wù)器通過(guò)三方呼叫控制建立媒體服務(wù)器與語(yǔ)音流發(fā)送者之間的媒體流信令
過(guò)程, 信令 1 7~2 0 為 S I P 服務(wù)器斷開(kāi)語(yǔ)音流接收者與媒體服務(wù)器之間的媒體流信令過(guò)程, 信令 2 1~2 4
6 4
G B / T2 8 1 8 1 — 2 0 1 6
為 S I P 服務(wù)器斷開(kāi)媒體服務(wù)器與語(yǔ)音流發(fā)送者之間的媒體流信令過(guò)程。
命令流程描述如下:
a ) 1 : S I P 服務(wù)器向語(yǔ)音流接收者發(fā)送語(yǔ)音廣播通知消息, 消息中通過(guò) T o 頭域標(biāo)明作為目的地址
的語(yǔ)音流接收者 I D , 消息采用 M e s s a g e 方法攜帶。
b ) 2 : 語(yǔ)音流接收者收到語(yǔ)音廣播通知消息后, 向 S I P 服務(wù)器發(fā)送 2 0 0OK 響應(yīng)。
c ) 3 : 語(yǔ)音流接收者向 S I P 服務(wù)器發(fā)送語(yǔ)音廣播應(yīng)答消息, 消息中通過(guò) T o 頭域標(biāo)明作為目的地
址的 S I P 服務(wù)器 I D , 消息采用 M e s s a g e 方法攜帶。
d ) 4 : S I P 服務(wù)器收到語(yǔ)音廣播應(yīng)答消息后, 向語(yǔ)音流接收者發(fā)送 2 0 0OK 響應(yīng)。
e ) 5 : 語(yǔ)音流接收者向 S I P 服務(wù)器發(fā)送 I n v i t e 消息, 消息中通過(guò) T o 頭域標(biāo)明作為目的地址的語(yǔ)音
流發(fā)送者 I D , 消息頭域中攜帶 S u b j e c t 字段, 表明請(qǐng)求的語(yǔ)音流發(fā)送者 I D 、 發(fā)送方媒體流序列
號(hào)、 語(yǔ)音流接收者 I D 、 接收方媒體流序列號(hào)等參數(shù), S D P 消息體中 s 字段為“ P l a y ” 代表實(shí)時(shí)點(diǎn)
播, m 字段中媒體參數(shù)標(biāo)識(shí)為“
a u d i o ” 表示請(qǐng)求語(yǔ)音媒體流。
f ) 6 : S I P 服務(wù)器收到 I n v i t e 請(qǐng)求后, 通過(guò)三方呼叫控制建立媒體服務(wù)器和語(yǔ)音流發(fā)送者之間的
媒體連接。向媒體服務(wù)器發(fā)送 I n v i t e 消息, 此消息不攜帶 S D P 消息體。
g ) 7 : 媒體服務(wù)器收到 S I P 服務(wù)器的 I n v i t e 請(qǐng)求后, 回復(fù) 2 0 0OK 響應(yīng), 攜帶 S D P 消息體, 消息體
中描述了媒體服務(wù)器接收媒體流的 I P 、 端口、 媒體格式等內(nèi)容。
h ) 8 : S I P 服務(wù)器收到媒體服務(wù)器返回的 2 0 0OK 響應(yīng)后, 向語(yǔ)音流發(fā)送者發(fā)送 I n v i t e 請(qǐng)求, 消息
中通過(guò) T o 頭域標(biāo)明作為目的地址的語(yǔ)音流發(fā)送者 I D , 消息頭域中攜帶 S u b j e c t 字段, 表明請(qǐng)
求的語(yǔ)音流發(fā)送者 I D 、 發(fā)送方媒體流序列號(hào)、 語(yǔ)音流接收者 I D 、 接收方媒體流序列號(hào)等參數(shù),
請(qǐng)求中攜帶消息 7 中媒體服務(wù)器回復(fù)的 2 0 0OK 響應(yīng)消息體, s 字段為“ P l a y ” 代表實(shí)時(shí)點(diǎn)播,
m 字段中媒體參數(shù)標(biāo)識(shí)為“ a u d i o ” 表示請(qǐng)求語(yǔ)音媒體流, 增加 y 字段描述 S S R C 值, f 字段描述
媒體參數(shù)。
i ) 9 : 語(yǔ)音流發(fā)送者收到 S I P 服務(wù)器的 I n v i t e 請(qǐng)求后, 回復(fù) 2 0 0OK 響應(yīng), 攜帶 S D P 消息體, 消息
體中描述了媒體流發(fā)送者發(fā)送媒體流的 I P 、 端口、 媒體格式、 S S R C 字段等內(nèi)容, s 字段為
“
P l a y ” 代表實(shí)時(shí)點(diǎn)播,
m 字段中媒體參數(shù)標(biāo)識(shí)為“ a u d i o ” 表示請(qǐng)求語(yǔ)音媒體流。
j ) 1 0 : S I P 服務(wù)器收到語(yǔ)音流發(fā)送者返回的 2 0 0OK 響應(yīng)后, 向媒體服務(wù)器發(fā)送 A C K 請(qǐng)求, 請(qǐng)求
中攜帶消息 9 中語(yǔ)音流發(fā)送者回復(fù)的 2 0 0OK 響應(yīng)消息體, 完成與媒體服務(wù)器的 I n v i t e 會(huì)話
建立過(guò)程。
k ) 1 1 : S I P 服務(wù)器收到語(yǔ)音流發(fā)送者返回的 2 0 0OK 響應(yīng)后, 向語(yǔ)音流發(fā)送者發(fā)送 A C K 請(qǐng)求, 請(qǐng)
求中不攜帶消息體, 完成與語(yǔ)音流發(fā)送者的 I n v i t e 會(huì)話建立過(guò)程。
l ) 1 2 : 完成三方呼叫控制后, S I P 服務(wù)器通過(guò) B 2 B UA 代理方式建立語(yǔ)音流接收者和媒體服務(wù)器
之間的媒體連接。在消息 5 中增加 S S R C 值, 轉(zhuǎn)發(fā)給媒體服務(wù)器。
m ) 1 3 : 媒體服務(wù)器收到 I n v i t e 請(qǐng)求, 回復(fù) 2 0 0OK 響應(yīng), 攜帶 S D P 消息體, 消息體中描述了媒體服
務(wù)器發(fā)送媒體流的 I P 、 端口、 媒體格式、 S S R C 值等內(nèi)容,
s 字段為“ P l a y ” 代表實(shí)時(shí)點(diǎn)播, m 字段
中媒體參數(shù)標(biāo)識(shí)為“
a u d i o ” 表示請(qǐng)求語(yǔ)音媒體流。
n ) 1 4 : S I P 服務(wù)器將消息 1 3 轉(zhuǎn)發(fā)給語(yǔ)音流接收者。
o ) 1 5 : 語(yǔ)音流接收者收到 2 0 0OK 響應(yīng)后, 回復(fù) A C K 消息, 完成與 S I P 服務(wù)器的 I n v i t e 會(huì)話建立
過(guò)程。
p ) 1 6 : S I P 服務(wù)器將消息 1 5 轉(zhuǎn)發(fā)給媒體服務(wù)器, 完成與媒體服務(wù)器的 I n v i t e 會(huì)話建立過(guò)程。
q ) 1 7 : S I P 服務(wù)器向語(yǔ)音流接收者發(fā)送 B Y E 消息, 斷開(kāi)消息 5 、 1 4 、 1 5 建立的 I n v i t e 會(huì)話。
r ) 1 8 : 語(yǔ)音流接收者收到 B Y E 消息后回復(fù) 2 0 0OK 響應(yīng), 會(huì)話斷開(kāi)。
s ) 1 9 : S I P 服務(wù)器向媒體服務(wù)器發(fā)送 B Y E 消息, 斷開(kāi)消息 1 2 、 1 3 、 1 6 建立的同媒體服務(wù)器的
I n v i t e 會(huì)話。
上面是28181協(xié)議里面規(guī)定的流程,直接照搬過(guò)來(lái),不管怎么實(shí)現(xiàn)語(yǔ)音對(duì)講也要根據(jù)流程走。
下面我把抓包詳情粘貼下:
MESSAGE sip:34020000001370000001@192.168.1.81:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.93:5060;rport;branch=z9hG4bK-3d09000-1047e076-A8X5JYC1
From: <sip:64000000002000000001@192.168.1.93:5060>;tag=CN2Ei3Vu
To: <sip:34020000001370000001@192.168.1.81:5060>
Call-ID: 5c0d74ae-4352-df11-aa52-56a46c795625@192.168.1.93
CSeq: 55 MESSAGE
Contact: <sip:192.168.1.93:5060>
Content-Type: Application/MANSCDP+xml
Max-Forwards: 70
User-Agent: iVMS 1.0
Content-Length: 173
<?xml version="1.0"?>
<Notify>
<CmdType>Broadcast</CmdType>
<SN>20</SN>
<SourceID>64000000001360000001</SourceID>
<TargetID>34020000001370000001</TargetID>
</Notify>
SIP/2.0 200 OK
To: <sip:34020000001370000001@192.168.1.81:5060>;tag=75600014_53173353_c376baa4-b5f9-4f2a-a739-653dc3299ae1
Via: SIP/2.0/UDP 192.168.1.93:5060;rport=5060;branch=z9hG4bK-3d09000-1047e076-A8X5JYC1;received=192.168.1.93
CSeq: 55 MESSAGE
Call-ID: 5c0d74ae-4352-df11-aa52-56a46c795625@192.168.1.93
From: <sip:64000000002000000001@192.168.1.93:5060>;tag=CN2Ei3Vu
Content-Length: 0
MESSAGE sip:64000000002000000001@6400000000 SIP/2.0
Call-ID: 2cf6a25ea9b4f63ca255f60faefb584d@0.0.0.0
CSeq: 1 MESSAGE
From: <sip:34020000002000000001@3402000000>;tag=78679367_53173353_5e822bd3-744e-4d50-a7ae-3dcb31308ad5
To: <sip:64000000002000000001@6400000000>
Max-Forwards: 70
Content-Encoding: GB2312
Content-Type: Application/MANSCDP+xml
Route: <sip:64000000002000000001@192.168.1.93:5060;lr>
Via: SIP/2.0/UDP 192.168.1.81:5060;branch=z9hG4bK5e822bd3-744e-4d50-a7ae-3dcb31308ad5_53173353_28675579067886
Content-Length: 147
<?xml version="1.0"?>
<Response>
<CmdType>Broadcast</CmdType>
<SN>20</SN>
<DeviceID>34020000001370000001</DeviceID>
<Result>OK</Result>
</Response>SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.81:5060;branch=z9hG4bK5e822bd3-744e-4d50-a7ae-3dcb31308ad5_53173353_28675579067886
From: <sip:34020000002000000001@3402000000>;tag=78679367_53173353_5e822bd3-744e-4d50-a7ae-3dcb31308ad5
To: <sip:64000000002000000001@6400000000>;tag=nVa5oJ2n
Call-ID: 2cf6a25ea9b4f63ca255f60faefb584d@0.0.0.0
CSeq: 1 MESSAGE
Contact: <sip:64000000002000000001@192.168.1.93:5060>
Content-Length: 0
INVITE sip:64000000001360000001@6400000000 SIP/2.0
Call-ID: a0ce1d2417f6cb64571120b90c2243c1@0.0.0.0
CSeq: 1 INVITE
From: <sip:34020000002000000001@3402000000>;tag=84133916_53173353_4063c926-989f-4a9a-af9c-867f8219c6ab
To: <sip:64000000001360000001@6400000000>
Max-Forwards: 70
Contact: "34020000002000000001" <sip:192.168.1.81:5060>
Subject: 64000000001360000001:0-4-0,34020000002000000001:1
Content-Type: application/sdp
Route: <sip:64000000001360000001@192.168.1.93:5060;lr>
Via: SIP/2.0/UDP 192.168.1.81:5060;branch=z9hG4bK4063c926-989f-4a9a-af9c-867f8219c6ab_53173353_28675585450209
Content-Length: 171
v=0
o=64010000002020000001 0 0 IN IP4 192.168.1.81
s=Play
c=IN IP4 192.168.1.81
t=0 0
m=audio 8000 RTP/AVP 96
a=recvonly
a=rtpmap:96 PS/90000
y=0100000001
f=v/a/1/8/1
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 192.168.1.81:5060;branch=z9hG4bK4063c926-989f-4a9a-af9c-867f8219c6ab_53173353_28675585450209
From: <sip:34020000002000000001@3402000000>;tag=84133916_53173353_4063c926-989f-4a9a-af9c-867f8219c6ab
To: <sip:64000000001360000001@6400000000>
Call-ID: a0ce1d2417f6cb64571120b90c2243c1@0.0.0.0
CSeq: 1 INVITE
Content-Length: 0
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.1.81:5060;branch=z9hG4bK4063c926-989f-4a9a-af9c-867f8219c6ab_53173353_28675585450209
Record-Route: <sip:64000000002000000001@192.168.1.93:5060;lr>
From: <sip:34020000002000000001@3402000000>;tag=84133916_53173353_4063c926-989f-4a9a-af9c-867f8219c6ab
To: <sip:64000000001360000001@6400000000>;tag=Wn1J54GK
Call-ID: a0ce1d2417f6cb64571120b90c2243c1@0.0.0.0
CSeq: 1 INVITE
Contact: <sip:64000000001360000001@192.168.1.93:5060>
Content-Type: application/sdp
Content-Length: 180
v=0
o=64000000001360000001 0 0 IN IP4 192.168.1.93
s=Play
c=IN IP4 192.168.1.93
t=0 0
m=audio 20104 RTP/AVP 8
a=sendonly
a=rtpmap:8 PS/90000
y=0100000001
f=v/a/1/8/1
ACK sip:64000000001360000001@192.168.1.93:5060 SIP/2.0
Call-ID: a0ce1d2417f6cb64571120b90c2243c1@0.0.0.0
CSeq: 1 ACK
From: <sip:34020000002000000001@3402000000>;tag=84133916_53173353_4063c926-989f-4a9a-af9c-867f8219c6ab
To: <sip:64000000001360000001@6400000000>;tag=Wn1J54GK
Max-Forwards: 70
Route: <sip:64000000002000000001@192.168.1.93:5060;lr>
Via: SIP/2.0/UDP 192.168.1.81:5060;branch=z9hG4bK4063c926-989f-4a9a-af9c-867f8219c6ab_53173353_28675725931057
Content-Length: 0
流程抓包截圖:
音頻流采用的G711格式