欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

gb28181简单实现sip信令服务器(java版基于springboot):二、sip摄像头注册(信令解读)

程序员文章站 2022-03-17 14:14:39
...
以下仅代表个人理解,仅供参考,欢迎大佬纠正!!!

摄像头注册流程大概为:
       摄像头发起第一次注册—>sip服务器回复401请求校验信息—>摄像头发起第二次注册—>sip服务器验证信息,然后回复200代表注册成功,之后摄像头会定时发送心跳信息。需要注意的是注册成功后隔段时间摄像头还会发起注册,这时不需要回复401了,直接回复200,否则会造成摄像头推流断开

大华接入gb28181平台接入

gb28181简单实现sip信令服务器(java版基于springboot):二、sip摄像头注册(信令解读)
       大华摄像头在发起推流指令时一定需要指定通道id,而海康的好像不用,直接填写设备id就可以发起推,所以这里把设备id和通道id设置一样

点击打开接入之后,摄像头会开始向填写的服务ip和端口注册,下面先过一遍注册信息流程

//摄像头发起的第一次注册信息
REGISTER sip:34020000002000000001@192.168.1.201:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5060;rport;branch=z9hG4bK1945009904
Route: <sip:34020000001110000003@192.168.1.201:5060;lr>
From: <sip:34020000001110000003@192.168.1.4:5060>;tag=321443940 //在这里我们可以拿到设备的id
To: <sip:34020000001110000003@192.168.1.4:5060>
Call-ID: 214776626@192.168.1.4 //这个是会话的唯一标识,回复时一定要带这个,要不然报错
CSeq: 1 REGISTER //这里代表第一次注册,按照国际惯例是先回复401请求校验信息,回复信息也要携带
Contact: <sip:34020000001110000003@192.168.1.4:5060>
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0 //厂商信息
Expires: 3600 //注册有效时间,不为代表注册,为0时代表注销
Content-Length: 0 //请求体长度为0,说明下面没有数据了,没有携带消息体

//服务器回复401校验
SIP/2.0 401 Unauthorized
CSeq: 1 REGISTER //回复第一次注册
Call-ID: 214776626@192.168.1.4 //会话id
From: <sip:34020000001110000003@192.168.1.4:5060>;tag=793568880
To: <sip:34020000001110000003@192.168.1.4:5060>
Via: SIP/2.0/UDP 192.168.1.4:5060;rport;branch=z9hG4bK45766126 //这个字段直接拷贝上面的来回复
WWW-Authenticate: Digest realm="3402000000",nonce="962535b552b6e29883ff988c0065ddc2" //这里表明验证参数,nonce这里是Call-ID+设备id的md5 ,这个值只是提供校验的随机数,对于怎么进行校验,下面代码详解
Content-Length: 0

//摄像头第二次注册
REGISTER sip:34020000002000000001@192.168.1.201:5060 SIP/2.0 //留意该文本,按照空格切割,uri为第二个字符串,第一个是方法,第三个是请求版本号,类似HTTP/1.1
Via: SIP/2.0/UDP 192.168.1.4:5060;rport;branch=z9hG4bK1647127273
Route: <sip:34020000001110000003@192.168.1.201:5060;lr>
From: <sip:34020000001110000003@192.168.1.4:5060>;tag=793568880
To: <sip:34020000001110000003@192.168.1.4:5060>
Call-ID: 214776626@192.168.1.4
CSeq: 2 REGISTER //第二次注册
Contact: <sip:34020000001110000003@192.168.1.4:5060>
Authorization: Digest username="34020000001110000003", realm="3402000000", nonce="962535b552b6e29883ff988c0065ddc2", uri="sip:aaa@qq.com:5060", response="77ed0f6d00ab1e0c1a871dd5e03edb65", algorithm=MD5 //加密算法 以及检验的参数
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0
Expires: 3600
Content-Length: 0


//第二次校验成功的话直接响应200 之后摄像头会发起心跳保活
SIP/2.0 200 OK
CSeq: 2 REGISTER //回复第二次注册
Call-ID: 214776626@192.168.1.4 //唯一会话id
From: <sip:34020000001110000003@192.168.1.4:5060>;tag=793568880
To: <sip:34020000001110000003@192.168.1.4:5060>
Via: SIP/2.0/UDP 192.168.1.4:5060;rport;branch=z9hG4bK1647127273
Expires: 3600
Date: Fri, 10 Apr 2020 08:24:49 GMT
Content-Length: 0


//摄像头回复注销信息 这里注意Expires字段,为0代表注销 服务器收到后直接做业务操作回复200
REGISTER sip:34020000002000000001@192.168.1.201:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.1.4:5060;rport;branch=z9hG4bK399301364
Route: <sip:34020000001110000003@192.168.1.201:5060;lr>
From: <sip:34020000001110000003@192.168.1.4:5060>;tag=793568880
To: <sip:34020000001110000003@192.168.1.4:5060>
Call-ID: 214776626@192.168.1.4
CSeq: 3 REGISTER //第三次注册
Contact: <sip:34020000001110000003@192.168.1.4:5060>
Max-Forwards: 70
User-Agent: Dahua SIP UAS V1.0
Expires: 0 //注销
Content-Length: 0