java socket保活_gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流...
//推流需要发起invite请求 如果是大华的话这里的所有设备编号要换为通道id编号,所以为了方便起见,直接设置设备编号和通道id编号一样,海康的通道id无法设置,所以直接发设备编号也可以获取到流
INVITE sip:34020000001110000003@192.168.1.8:5060;transport=udp SIP/2.0
Call-ID: 34020000001110000003
CSeq: 1 INVITE
From: <34020000002000000001>;tag=live34020000002000000001>
To: "34020000001110000003" <34020000001110000003> //to这里不要加tag,加了的话海康会返回找到id,大华则没事34020000001110000003>
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=branchlive
Max-Forwards: 70
Content-Type: Application/sdp //消息类型
Contact: <34020000002000000001>34020000002000000001>
Supported: 100re1 //这个好像不影响,百度的
Subject: 34020000001110000003:0100000003,34020000002000000001:0 //海康要加该请求头
User-Agent: fyl //自定义的一些信息
Content-Length: 232 //这里要计算的消息体大小
v=0
o=34020000001110000003 0 0 IN IP4 192.168.1.201
s=Play
c=IN IP4 192.168.1.201 //流媒体服务器ip
t=0 0
m=video 10002 TCP/RTP/AVP 96 98 97 //这里的TCP/RTP/AVP代表是tcp推流模式(tcp分为主动tcp和被动tcp,默认直接就是摄像头推流),udp推流为RTP/AVP 10002是流媒体服务器的端口号,建议偶数端口
a=recvonly
a=rtpmap:96 PS/90000
a=rtpmap:98 H264/90000
a=rtpmap:97 MPEG4/90000
y=0100000003 //这里y是ssrc信息,采用多个设备共享一个推流端口时需要使用这个标识来判断是那个摄像头的流
f=
//当我们发起推流请求之后,摄像头会回复3次信息,海康只回复2次,我们看最后一次信息回复就行
SIP/2.0 100 Trying
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=branchlive;received=192.168.1.201
From: <34020000002000000001>;tag=live34020000002000000001>
To: "34020000001110000003" <34020000001110000003>34020000001110000003>
Call-ID: 34020000001110000003
CSeq: 1 INVITE
User-Agent: Dahua SIP UAS V1.0
Content-Length: 0
//第二次回复,测试的海康摄像头没有这个信息回复
SIP/2.0 101 Dialog Establishement
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=branchlive;received=192.168.1.201
From: <34020000002000000001>;tag=live34020000002000000001>
To: "34020000001110000003" <34020000001110000003>;tag=2993764134020000001110000003>
Call-ID: 34020000001110000003
CSeq: 1 INVITE
Contact: <34020000001110000003>34020000001110000003>
User-Agent: Dahua SIP UAS V1.0
Content-Length: 0
//最后一次回复,注意这次回复,如果是200说明请求成功,只要我们回复ack摄像头就会开始推流,如果不是200说明信息有误,一般都是设备编号或者通道编号,再或者tag的一些信息有误,海康对tag比较敏感
SIP/2.0 200 OK
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=branchlive;received=192.168.1.201
From: <34020000002000000001>;tag=live //这个字段要保存起来34020000002000000001>
To: "34020000001110000003" <34020000001110000003>;tag=29937641 //这个字段要也保存起来,可以看到tag是摄像头生成的34020000001110000003>
Call-ID: 34020000001110000003 //同上
CSeq: 1 INVITE //注意这里的标识,这个标识跟推流请求一样说明是对应推流的回复
Contact: <34020000001110000003>34020000001110000003>
User-Agent: Dahua SIP UAS V1.0
Content-Type: application/sdp
Content-Length: 260
v=0
o=34020000001110000003 0 0 IN IP4 192.168.1.8
s=Play
i=VCam Live Video
c=IN IP4 192.168.1.8
t=0 0
m=video 9702 TCP/RTP/AVP 96
a=sendonly
a=rtpmap:96 PS/90000
a=streamprofile:0
a=setup:active
a=connection:new
y=0100000003
f=v/0/0/0/0/0a/0/0/0
//收到200回复之后,保存from,to和Call-ID 这三个字段在断流时需要用到,如果三个字段有变动都无法进行断流,特别是海康,差一点都不行,会回复找不到callid
ACK sip:34020000001110000003@192.168.1.8:5060 SIP/2.0
Call-ID: 34020000001110000003
CSeq: 1 ACK
Via: SIP/2.0/UDP 34020000002000000001:5060;branch=z9hG4bK-353633-cc1d42f582e2ec40dfedb6812f9ab1b8
From: <34020000002000000001>;tag=live34020000002000000001>
To: "34020000001110000003" <34020000001110000003>;tag=2993764134020000001110000003>
Max-Forwards: 70
Content-Length: 0
//结束推流请求 把上面保存的值放进来
BYE sip:34020000001110000003@192.168.1.8:5060;transport=udp SIP/2.0
Call-ID: 34020000001110000003
CSeq: 6 BYE
From: <34020000002000000001>;tag=live34020000002000000001>
To: "34020000001110000003" <34020000001110000003>;tag=2993764134020000001110000003>
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=branchbye
Contact: <34020000002000000001>34020000002000000001>
Max-Forwards: 70
Content-Length: 0
//摄像头回复200说明断流成功
SIP/2.0 200 OK
Via: SIP/2.0/UDP 0.0.0.0:5060;branch=branchbye;received=192.168.1.201
From: <34020000002000000001>;tag=live34020000002000000001>
To: "34020000001110000003" <34020000001110000003>;tag=2993764134020000001110000003>
Call-ID: 34020000001110000003
CSeq: 6 BYE
User-Agent: Dahua SIP UAS V1.0
Content-Length: 0
java socket保活_gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流...相关推荐
- gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流
心跳文本 //摄像头发送过来的Keepalive保活信息 MESSAGE sip:34020000002000000001@192.168.1.201:5060 SIP/2.0 //MESSAGE 方 ...
- java socket简,javasocket简单示例
简单Socket测试_计算机软件及应用_IT/计算机_专业资料.简单的聊天小测试 服务端 importjava.io.DataInputStream; importjava.io.DataOutput ...
- gb28181简单实现sip信令服务器(java版基于springboot):一、netty创建udp服务器
以下仅代表个人理解,仅供参考,欢迎大佬纠正!!! maven依赖 <!-- springboot配置依赖 --> <dependency><groupId>org. ...
- java socket 断开连接_Socket断开不报错(Java)
网上看了很多关于Socket的Demo,用起来挺好用也简单,不过都在断开连接时,都没有做好相关处理,导致每次主动断开时,会报错 如: java.net.SocketException: Socket ...
- java socket多人聊天室_如何运用Java socket实现多人聊天室功能
如何运用Java socket实现多人聊天室功能 导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构 ...
- java socket ascii_TCP套接字上的ASCII - java
有人可以给我传递通过TCP发送Ascii消息的示例吗(在网上找不到示例) 谢谢, 射线. 参考方案 写入和读取回显服务器的Here's an example. 简化摘录: Socket echoSoc ...
- java socket程序_java 简单的java socket程序
//服务器端:ServerDemo.java import java.io.DataInputStream; import java.io.DataOutputStream; import java. ...
- java socket 路由_JAVA简单的Socket网络编程!CS
好久没写socket代码了,也忘了八九成了--话不多说!直接上代码吧! Server服务 package test1; import java.io.*; import java.net.*; pub ...
- Java Socket笔记-udpSocket简单收发包
目录 基本概念 代码与实例 基本概念 这里主要是使用了DatagramSocket可以打开本地端口,构建Socket,同时这个类还可以给指定IP和端口发送数据包. 如下,打开本地端口并接收数据: Da ...
- 使用java socket实现一个简单的一对多聊天室
socket就是指两个应用程序之间通信的抽象对象,我们可以使用socket实现网络应用程序.例如一个多人聊天室. 目录 先从服务端开始 创建一个窗口类 创建一些方法,用于管理服务端链接,或者进行消息的 ...
最新文章
- 2017秋-软件工程第十二次作业(三)-版本控制报告(个人)
- chrome插件下载
- 函数函数sigaction、signal
- 关于反射Assembly.Load(程序集).CreateInstance(命名空间.类)
- element手机验证格式_Laravel 自定义封装表单验证类
- 数楼梯(洛谷-P1255)
- 002 selenium 元素定位
- HTML基础第九讲---表单
- dispaly 的block与inline-block的用法
- Java版进销存ERP管理系统源码
- 2022-2028年全球与中国MEMS话筒行业竞争格局与投资战略研究
- 手机qq如何绑定qq邮箱服务器,iphone怎么绑定qq邮箱
- 信息化与业务流程再造
- Django2.0+小程序技术打造微信小程序助手百度云
- Python站内文章精选大集合!
- Ubuntu下Logi MX Ergo自定义按键
- 区块链集体癫狂的背后是互联网行业缺乏创新的焦虑
- java excel导出 jxl_JAVA利用JXL导出/生成 EXCEL
- 前馈神经网络之神经元及激活函数简介
- Swift协议(Protocols)
热门文章
- SuiteCRM图片上传(自定义控制器)
- PostgreSQL 字典表设计
- 神泣单机服务器维护,神泣单机版
- 深度学习与计算机视觉教程(5) | 卷积神经网络(CV通关指南·完结)
- 微信小程序选项卡切换
- VS201编译jpeg
- 微信小程序自定义tabbar 图标凸出效果
- 【3dmax千千问】初学3dmax插件神器第15课|打开疯狂模渲大师已归档效果图的模型场景,弹窗提示“无法创建备份文件”报错,室内设计师应该怎么办?
- oracle for扫描行,请教索引范围扫描具体IO行为?
- python地理空间_Python批量下载地理空间数据云数据!Python无所不能!-站长资讯中心...