以下仅代表个人理解,仅供参考,欢迎大佬纠正!!!

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

大华接入gb28181平台接入

java 开发sip协议电话 java sip服务器_java 开发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:34020000002000000001@192.168.1.201: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