海康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抓包分析相关推荐

  1. Wireshark 抓包分析 RTSP/RTP/RTCP 基本工作过程

    整体而言,RTSP 通常工作于可靠的传输协议 TCP 之上,就像 HTTP 那样,用于发起/结束流媒体传输,交换流媒体元信息.RTP 通常工作于 UDP 之上,用于传输实际的流媒体数据,其中的载荷格式 ...

  2. 使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗)

    使用JavaCV实现海康rtsp转rtmp实现无插件web端直播(无需转码,低资源消耗) 目录结构 添加依赖,编写配置文件 创建Bean 创建缓存Cache 修改启动类 拉流.推流.转封装 定时任务T ...

  3. hls二次加密 m3u8_HLS实战之Wireshark抓包分析

    0.引言 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...

  4. Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark

    Wireshark数据抓包分析(网络协议篇)1.2安装Wireshark Wireshark(前称Ethereal)是一个网络包分析工具.该工具主要是用来捕获网络包,并显示包的详细情况.本节将分别介绍 ...

  5. Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述

    Wireshark数据抓包分析(网络协议篇)第1章网络协议抓包概述 网络协议是用于不同计算机之间进行网络通信的.网络协议是网络上所有设备(如网络服务器.计算机.交换机.路由器等)之间通信规则的集合,它 ...

  6. Wireshark数据抓包分析——网络协议篇

    Wireshark数据抓包分析--网络协议篇 Wireshark是目前最受欢迎的抓包工具.它可以运行在Windows.Linux及MAC OS X操作系统中,并提供了友好的图形界面.同时,Wiresh ...

  7. 转 Wireshark和TcpDump抓包分析心得

    1. Wireshark与tcpdump介绍 Wireshark是一个网络协议检测工具,支持Windows平台和Unix平台,我一般只在Windows平台下使用Wireshark,如果是Linux的话 ...

  8. Linux服务器下的HTTP抓包分析

    2019独角兽企业重金招聘Python工程师标准>>> 说到抓包分析,最简单的办法莫过于在客户端直接安装一个Wireshark或者Fiddler了,但是有时候由于客户端开发人员(可能 ...

  9. DNS抓包分析--wireshark

    DNS抓包分析–wireshark DNS-(Domain Name System,域名系统),是因特网上作为余名和IP地址相互映射的一个分布式数据库,能够使用户更加方便地访问互联网,而不是去记住能够 ...

  10. DHCP数据抓包分析--wireshark

    DHCP数据抓包分析–wireshark DHCP-(Dynamic Host Configuration Procotol,动态主机配置协议),是一个局域网的网络协议,主要用于给内部网络或网络服务供 ...

最新文章

  1. 人工智能技术在移动互联网发展中的应用
  2. 3.1_栈_顺序存储结构(数组形式)
  3. android 事件管理器,Android输入管理InputManager之读一次事件的流程
  4. elementUI vue 编辑中的input的验证残留清除
  5. 华为手机丢失定位网站_手机端网站优化要从网站的设计和定位开始入手
  6. 如何让我的mfc应用程序可以在最上面?
  7. Tomcat BIO . NIO . ARP 配置
  8. Windows系统安全从定制IP策略开始
  9. ajax nginx 转发 sessionid_「查缺补漏」巩固你的Nginx知识体系
  10. tenorflow+python程序打包成.exe(收集方法1)
  11. 工厂供电技术实训设备QY-PGD19
  12. 敏捷测试的方法和实践
  13. excel二极管伏安特性曲线_电视机不被烧,是因为它?一个拥有反向特性的稳压二极管...
  14. Html的页面演变史01
  15. hazelcast java_JVM内存级分布式缓存Hazelcast
  16. 区块链学习2——区块链浏览器的搭建
  17. 《东周列国志》第六十一回 晋悼公驾楚会萧鱼 孙林父因歌逐献公
  18. 没有免费用户却飞速发展,Uber技术栈全解析!
  19. Win10 系统设置共享文件
  20. DDR3不同型号不同位宽仿真记录

热门文章

  1. Wolfram Mathematic流程控制
  2. XRD如何分析残余应力
  3. Oracle终极彻底卸载的完整步骤
  4. Excel自学详细视频教程百度网盘分享
  5. 概率论与计算机的关系小论文,概率论与数理统计论文
  6. 华为手机碎屏后如何导出数据_手机屏幕坏了怎么把数据导出来
  7. js 导出Excel
  8. 数据可视化BI平台--CBoard的使用
  9. MTK MT2503 11B讲义-01编译
  10. 通过更改cmake的源码实现使用代理的下载命令