海康rtsp抓包分析
海康h264 rtp/rtsp/rtcp包分析
1、DESCRIBE rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream RTSP/1.0
CSeq:0
Accept:application/sdp
User-Agent:NKPlayer-1.00.00.081112
说明:DESCRIBE:命令类型
rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream:被请求的流地址
RTSP/1.0:RTSP版本,固定1.0
CSeq:命令序列号,后面的命令递增,形成完整的视频请求命令链,如果不连续,表面命令乱序
Accept:接受的负载(body)格式,这里是sdp
User-Agent:用户代理,就是用户的播放方式,这里是用海康SDK请求流抓的包,用的是NKPlayer,作用不大
2、RTSP/1.0 401 Unauthorized
CSeq: 0
WWW-Authenticate: Digest realm=“c056e3f5d007”, nonce=“17a6accbfba1e0534b5856e9c942bfd4”, stale=“FALSE”
WWW-Authenticate: Basic realm=“c056e3f5d007”
Date: Wed, Apr 06 2016 17:13:41 GMT
401:状态码
Unauthorized:对状态码的描述,这里是未鉴权的意思
CSeq:因为是回复包,所以cseq要和请求包一致
WWW-Authenticate:服务器提供的鉴权方式,这里是Digest(摘要算法)和Basic(base64)两种加密方式
Date:服务器当前时间
3、DESCRIBE rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream RTSP/1.0
CSeq:1
Accept:application/sdp
Authorization: Digest username=“admin”, realm=“c056e3f5d007”, nonce=“17a6accbfba1e0534b5856e9c942bfd4”, uri=“rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream”, response=“2593e5f13edb6b31bbe9ef4f043a93dd”
User-Agent:NKPlayer-1.00.00.081112
这个包主要是鉴权
4、RTSP/1.0 200 OK
CSeq: 1
Content-Type: application/sdp
Content-Length: 584
v=0
o=- 1459962821590000 1459962821590000 IN IP4 192.168.0.186
s=Media Presentation
e=NONE
b=AS:5100
t=0 0
a=control:*
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=recvonly
a=control:trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AH5pkAoAt/zUBAQFAAAD6AAAw1AE=,aO48gA==
m=audio 0 RTP/AVP 8
c=IN IP4 0.0.0.0
b=AS:50
a=recvonly
a=control:trackID=2
a=rtpmap:8 PCMA/8000
a=Media_header:MEDIAINFO=494D4B48010100000400010011710110401F000000FA000000000000000000000000000000000000;
a=appversion:1.0
鉴权成功,返回流的描述信息(在负载sdp中)
Content-Length:负载长度(字节)
以下是SDP中需要关心的地方
o= 主要是IN后面的,代表流拥有者的IP
t=0 0:时间范围,0代表实时,数字或ntp时间可以用来播放录像
m=video 0 RTP/AVP 96:m是流描述的起始,后面跟的都是该流的参数,直到下一个m=(另一个流)。
video:代表以下是视频流
0:发送端口,0是默认采用setup中的端口
RTP/AVP:数据传输方式,默认UDP,RTP/AVP/TCP是TCP方式
96:视频类型,文档中是动态类型,一般是H264
c=IN IP4 0.0.0.0:流的IP地址,没有的话就是默认(当前服务器的IP)
a=recvonly:只接收标志,一般都有
a=control:trackID=1:具体流的uri,这里是视频流的,在setup的时候需要配置该地址,没有rtsp://的时候,直接把control
的值加到请求流地址后面
a=rtpmap:96 H264/90000:视频流信息,96视频类型,H264/90000视频类型/采样率,时间戳的增加是以采样率的倒数为单位,
比如每秒25帧,则每两帧(不是两RTP包)的时间戳间隔是:(1/25)*90000=3600(无单位)
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AH5pkAoAt/zUBAQFAAAD6AAAw1AE=,aO48gA==
这个比较麻烦,里面是视频宽高信息,但是经过哥伦布算法计算,又经过BASE64编码:【引述】使用RTP传输H264的时候,需要
用到sdp协议描述,其中有两项:Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)需要用到,那么这两项从哪
里获取呢?答案是从H264码流中获取.在H264码流中,都是以"0x00 0x00 0x01"或者"0x00 0x00 0x00 0x01"为开始码的,找到开
始码之后,使用开始码之后的第一个字节的低5位判断是否为7(sps)或者8(pps), 及data[4] & 0x1f == 7 || data[4] & 0x1f
== 8.然后对获取的nal去掉开始码之后进行base64编码,得到的信息就可以用于sdp.sps和pps需要用逗号分隔开来。
m=audio 0 RTP/AVP 8:这里开始是音频流的描述
a=Media_header:这是海康解码器需要的解码头内容的16进制值
5、SETUP rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream/trackID=1 RTSP/1.0
CSeq:2
Authorization: Digest username=“admin”, realm=“c056e3f5d007”, nonce=“17a6accbfba1e0534b5856e9c942bfd4”, uri=“rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream”, response=“090de5bf265f6b46ef75ba1edf0ec843”
Transport:RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=0
User-Agent:NKPlayer-1.00.00.081112
setup是客户端发起的配置,服务器做适配。
setup后面的uri:代表要配置的流uri(从上一个指令中获取的)
Transport:该字段只能用于setup。第一部分是传输类型,RTP代表是RTP协议,后面没有TCP则是默认的UDP传输,第二部分是组播or多播or广播,第三部分在TCP时起作用,UDP时不需要。
当采用UDP传输时,没有interleaved参数(不起作用),而是用client-port:8000-80001,是客户端接收UDP包的端口范围
interleaved:TCP时,RTP和RTCP复用一个连接,所以用该参数区分,前一个值(0)是RTP包,后一个值(1)是RTCP包
每个RTP/RTCP包的前面都是一个4字节的rtp interleaved frame包,该包第一个字节固定“$"(dollar符),第二个字节是
interleaved值,第三四个字节代表后面的RTPorRTCP包的长度。
ssrc:校验码,不是很重要
6、RTSP/1.0 200 OK
CSeq: 2
Session: 655067628;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=270b89ec;mode=“play”
Date: Wed, Apr 06 2016 17:13:41 GMT
session:很关键,以后所有的命令都要附加该值
timeout:客户端超时时间,单位秒
ssrc:服务器返回的校验码
mode:可以是play,record,默认是play
Transport:如果是UDP,这里会回复server-port:35555-35556,代表流发送端口
7、SETUP rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream/trackID=2 RTSP/1.0
CSeq:3
Authorization: Digest username=“admin”, realm=“c056e3f5d007”, nonce=“17a6accbfba1e0534b5856e9c942bfd4”, uri=“rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream”, response=“090de5bf265f6b46ef75ba1edf0ec843”
Session:655067628;timeout=60
Transport:RTP/AVP/TCP;unicast;interleaved=2-3;ssrc=0
User-Agent:NKPlayer-1.00.00.081112
8、RTSP/1.0 200 OK
CSeq: 3
Session: 655067628;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=2-3;ssrc=4d4ecc5d;mode=“play”
Date: Wed, Apr 06 2016 17:13:41 GMT
和5.6中一样,这里是配置的另一个流(音频流)
9、PLAY rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream RTSP/1.0
CSeq:4
Authorization: Digest username=“admin”, realm=“c056e3f5d007”, nonce=“17a6accbfba1e0534b5856e9c942bfd4”, uri=“rtsp://192.168.0.186:554/mpeg4/ch01/main/av_stream”, response=“f36c8321dc8a9b379e92e68cdf33774e”
Session:655067628;timeout=60
Range:npt=0.000000-0.000000
User-Agent:NKPlayer-1.00.00.081112
play后面的uri和DESCRIBE中的一样,是流的uri,而5,6,7,8中的是对流的子通道的设置
Range:是视频播放时间,这里采用npt时间格式,实时视频都是0,录像回放是录像的时间
10、RTSP/1.0 200 OK
CSeq: 4
Session: 655067628
RTP-Info: url=trackID=1;seq=18990,url=trackID=2;seq=1788
Date: Wed, Apr 06 2016 17:13:41 GMT
RTP-Info:是服务器对子通道的描述,seq是基础包序号,从收到的第一包数据开始累加1,有时候这里会带基础时间戳,根据采样率
信息判断收到的帧的时间戳
海康rtsp抓包分析相关推荐
- Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程
整体而言,RTSP 通常工作于可靠的传输协议 TCP 之上,就像 HTTP 那样,用于发起/结束流媒体传输,交换流媒体元信息.RTP 通常工作于 UDP 之上,用于传输实际的流媒体数据,其中的载荷格式 ...
- 使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)
使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗) 目录结构 添加依赖,编写配置文件 创建Bean 创建缓存Cache 修改启动类 拉流.推流.转封装 定时任务T ...
- hls二次加密 m3u8_HLS实战之Wireshark抓包分析
0.引言 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...
- Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark
Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...
- Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述
Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...
- Wireshark数据抓包分析——网络协议篇
Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...
- 转 Wireshark和TcpDump抓包分析心得
1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...
- Linux服务器下的HTTP抓包分析
2019独角兽企业重金招聘Python工程师标准>>> 说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能 ...
- DNS抓包分析--wireshark
DNS抓包分析–wireshark DNS-(Domain Name System,域名系统),是因特网上作为余名和IP地址相互映射的一个分布式数据库,能够使用户更加方便地访问互联网,而不是去记住能够 ...
- DHCP数据抓包分析--wireshark
DHCP数据抓包分析–wireshark DHCP-(Dynamic Host Configuration Procotol,动态主机配置协议),是一个局域网的网络协议,主要用于给内部网络或网络服务供 ...
最新文章
- 人工智能技术在移动互联网发展中的应用
- 3.1_栈_顺序存储结构(数组形式)
- android 事件管理器,Android输入管理InputManager之读一次事件的流程
- elementUI vue 编辑中的input的验证残留清除
- 华为手机丢失定位网站_手机端网站优化要从网站的设计和定位开始入手
- 如何让我的mfc应用程序可以在最上面?
- Tomcat BIO . NIO . ARP 配置
- Windows系统安全从定制IP策略开始
- ajax nginx 转发 sessionid_「查缺补漏」巩固你的Nginx知识体系
- tenorflow+python程序打包成.exe(收集方法1)
- 工厂供电技术实训设备QY-PGD19
- 敏捷测试的方法和实践
- excel二极管伏安特性曲线_电视机不被烧,是因为它?一个拥有反向特性的稳压二极管...
- Html的页面演变史01
- hazelcast java_JVM内存级分布式缓存Hazelcast
- 区块链学习2——区块链浏览器的搭建
- 《东周列国志》第六十一回 晋悼公驾楚会萧鱼 孙林父因歌逐献公
- 没有免费用户却飞速发展,Uber技术栈全解析!
- Win10 系统设置共享文件
- DDR3不同型号不同位宽仿真记录