海康rtsp抓包分析

2023-10-30

海康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,有时候这里会带基础时间戳,根据采样率
信息判断收到的帧的时间戳
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

海康rtsp抓包分析 的相关文章

  • GB28181-2022相对2016版“基于TCP协议的视音频媒体传输要求“调整

    规范解读 GB28181 2022针对 基于TCP协议的视音频媒体传输 实时点播 历史视频回放与下载中 TCP媒体传输重连机制 做了说明 修改后的 基于TCP协议的视音频媒体传输要求 如下 实时视频点播 历史视频回放与下载的TCP媒体传输应
  • Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?

    我们在做Android平台RTMP推送和GB28181设备对接的时候 遇到这样的问题 有的设备 麦克风采集出来的audio 音量过高或过低 特别是有些设备 采集到的麦克风声音过低 导致播放端听不清前端采集的audio 这时候 就需要针对采集
  • OBS推流工具介绍及桌面录屏推流功能实现

    OBS推流工具介绍及桌面录屏推流功能实现 文章目录 OBS推流工具介绍及桌面录屏推流功能实现 1 OBS工具介绍 2 OBS工具安装及简单使用 2 1 安装步骤 2 2 简单使用介绍 3 OBS实现桌面录屏推流工具实现 4 总结 流媒体开发
  • Android GB28181设备接入端语音广播和语音对讲技术实现探究

    上篇文章提到Android端GB28181接入端的语音广播和语音对讲的实现 从spec角度大概介绍了下流程和简单的接口设计 好多开发者私信我 希望展开说一下 其实这块难度不大 只是广播和对讲涉及到双向实现 如果之前没有相关的积累 从头实现麻
  • 国网B接口资源上报(Push_Resourse)接口描述和消息示例

    上篇blog 梳理了国网B接口的REGISTER接口描述和消息示例 前端系统加电启动并初次注册成功后 向平台上报前端系统的设备资源信息 包括 视频服务器 DVR DVS 摄像机 告警设备 环境量采集设备等模拟或数字信号采集设备信息 前端系统
  • 音视频绕不开的话题之WebRTC

    什么是WebRTC 闲来无事 我们今天探讨下音视频绕不开的一个话题 WebRTC WebRTC之于音视频行业 无异于FFMpeg 可以说WebRTC的开源 让音视频行业大跨步进入发展快车道 WebRTC是一个支持实时音视频通信的开源项目 它
  • VLC相关参数中文说明!

    用法 vlc 选项 流 您可以在命令行中指定多个流 它们将被加入播放列表队列 指定的首个项目将被首先播放 选项样式 选项 用于设置程序执行期间的全局选项 选项 单字母版本的全局 选项 选项 一个仅在流之前应用的选项 且将覆盖先前的设置 流
  • RTSP和RTP、RTCP协议介绍

    一 RTSP 1 简介 RTSP Real Time Stream Protocol 协议是一个基于文本的多媒体播放控制协议 属于应用层 RTSP以客户端方式工作 对流媒体提供播放 暂停 后退 前进等操作 它主要用来控制具有实时特性的数据的
  • Android平台GB28181设备接入端如何实时更新经纬度实现国标平台侧电子地图位置标注

    技术背景 我们在做GB28181设备接入端的时候 其中有个功能 不难但非常重要 那就是GB28181实时位置的订阅 mobileposition subscribe 和上报 notify 特别是执法记录仪 智能安全帽 车载终端等场景下 现场
  • 【无标题】ZLM和wvp配置

    ZLM配置 wvp对zlm要求的配置只有一个 具体值随便设置 以9080为例 http port 9080 wvp配置 确保media gt ip为zlm的IP media gt port为刚才配置的9080 其他wvp配置参考配置说明按需
  • FFmpeg学习(11)——视频转码之-crf参数详解

    什么是固定码率因子crf Constant Rate Factor 固定码率因子 CRF 是 x264 和 x265 编码器的默认质量 和码率控制 设置 取值范围是 0 到 51 这其中越低的值 结果质量越好 同时输出文件越大 越高的值意味
  • Android平台GB28181设备接入模块相关博客概览

    Android平台GB28181设备接入模块 可实现不具备国标音视频能力的 Android终端 通过平台注册接入到现有的GB T28181 2016服务 可用于如智能监控 智慧零售 智慧教育 远程办公 生产运输 智慧交通 车载或执法记录仪等
  • 深入理解Google Cast(三)探寻原理

    如何开发一个receiver application 先来简单说一下这个话题 Receiver本质就是一个网页 由html CSS和jacascript开发 如果要自定义receiver application 需要在 Google Cas
  • 公网可用的RTMP、RTSP测试地址(更新于2021年3月)

    好多博客提到的公网可测试的RTSP和RTMP URL大多都不用了 以下是大牛直播SDK Github 于2021年3月亲测可用的几个URL 有其他可用的URL 也欢迎大家在评论区回复 RTMP流地址 湖南卫视 rtmp 58 200 131
  • GB/T 28181联网系统通信协议结构和技术实现

    技术回顾 在本文开头 我们先一起回顾下GB T28181联网系统通信协议结构 联网系统在进行视音频传输及控制时应建立两个传输通道 会话通道和媒体流通道 会话通道用于在设备之间建立会话并传输系统控制命令 媒体流通道用于传输视音频数据 经过压缩
  • GB28181控制、传输流程和协议接口之注册

    注册和注销基本要求 SIP客户端 网关 SIP设备 联网系统等 SIP代理 SIP UA 使用IETFRFC3261中定义的方法 15 GB T28181 2016Register进行注册和注销 注册和注销时应进行认证 认证方式应支持数字摘
  • 最新VLC命令行参数大全(一)

    用法 vlc 选项 流 您可以在命令行中指定多个流 它们将被加入播放列表队列 指定的首个项目将被首先播放 选项风格 选项 用于设置程序执行期间的全局选项 选项 单字母版本的全局 选项 选项 仅对此选项之前的单条流生效 且优先级高于先前的设置
  • Android平台GB28181设备接入侧(编码前

    在之前 我有写过Android平台GB28181设备接入模块的好多blog 包括参数设置 功能支持与扩展等 以数据接入为例 支持的数据类型涉及编码前 编码后或直接流数据 RTSP或RTMP流 可用于如智能监控 智慧零售 智慧教育 远程办公
  • GB28181状态信息报送解读及Android端国标设备接入技术实现

    今天主要聊聊GB T28181状态信息报送这块 先回顾下协议规范相关细节 然后再针对代码实现 做个简单的说明 状态消息报送基本要求 当源设备 包括网关 SIP设备 SIP客户端或联网系统 发现工作异常时 应立即向本 SIP监控域 的SIP服
  • 海康、大华IpCamera RTSP地址和格式

    大家注意 我下面文章描述的都是海康老款摄像机的RTSP规则 现在新的DS 系列 摄像机型号为DS 开头的 的摄像机RTSP规则为 http blog csdn net xiejiashu article details 71786187 海

随机推荐

  • 解决element-ui中table表格row-style改变当前行样式失效问题

    前言 这个问题点 要注意的是element ui版本 版本不同解决方案也不同 我也收到好多私信说没解决 后来自己测试了一下 发现的确受版本影响 大家使用时仔细看element ui文档中的 是不是object格式的 最近在使用vue ele
  • 操作系统接口--OS

    操作系统接口 接口 连接两个东西 信号转换 屏蔽细节 接口需要实现什么 要知道调用它的是什么东西 背后是怎么完成这件事情的 计算机调用接口的三种方式 1 命令行 命令行 其实就是一个c函数 当我们操作系统启动后 会执行一个函数 该函数在目录
  • 【深度学习】logistic回归模型

    目录 神经网络 数据 符号准备 logistic回归 损失函数和代价函数 梯度下降法 向量化 神经网络 我们学习深度学习的目的就是用于去训练神经网络 而神经网络是什么呢 我们先来看下面一个基础的生物上的神经元的图片 通常来说 神经元就是处理
  • feign 传输文件

    1 pom文件
  • android源码分析!程序员怎样优雅度过35岁中年危机?送大厂面经一份!

    最近跟我的一些读者交流 有一位读者的经历让我记忆深刻 有一次和大学同学聚会 和几个在BAT的同学聊了聊技术 发现自己在创业公司这几年 完全是吃老本的状态 没有什么机会精进技术 同样是工作了三年 和同学的差距越来越大 我继续问他 他说真正让他
  • StringBuilder的用法

    StringBuilder简介 StringBuilder 最早出现在JDK1 5 是一个字符拼接的工具类 它和StringBuffer一样都继承自父类AbstractStringBuilder 在AbstractStringBuilder
  • “华为杯”研究生数学建模竞赛2020年-【华为杯】B题:降低汽油精制过程中的辛烷值损失模型(附优秀论文及python代码)

    目录 摘 要 1 问题重述 1 1 问题背景 1 2 需要解决问题 2 问题假设 3 符号说明
  • 第二章 感知机

    感知机 perceptron 是二类分类的线性分类模型 它包括输入空间 输出空间 模型结构 参数空间和假设空间 感知机学习旨在求出将训练数据进行线性划分的分离超平面 为此导入基于误分类的损失函数 利用梯度下降法对损失函数进行极小化 求得感知
  • STL的一些基本背景了解。

    STL源代码的头文件一般都是内联模式的 现在简单的把stl的集中类型进行分类说明一下 1 容器类 一般分为关联式容器和顺序式容器 典型的例子的就是vector为典型的顺序式容器 对于stl来说主要采用向量 链表 二叉树以及他们的组合为底层存
  • pandas中iloc()函数

    pandas中iloc 函数 DataFrame iloc 纯基于整数位置的索引 import pandas as pd mydict a 1 b 2 c 3 d 4 a 100 b 200 c 300 d 400 a 1000 b 200
  • TensorFlow数据归一化

    TensorFlow数据归一化 1 tf nn l2 normalize l2 normalize x dim epsilon 1e 12 name None output x sqrt max sum x 2 epsilon 2 使用sc
  • 【送书活动】深入浅出SSD:固态存储核心技术、原理与实战

    前言 作者主页 雪碧有白泡泡 个人网站 雪碧的个人网站 推荐专栏 java一站式服务 React从入门到精通 前端炫酷代码分享 从0到英雄 vue成神之路 uniapp 从构建到提升 从0到英雄 vue成神之路 解决算法 一个专栏就够了 架
  • 博士研究生如何做创新性研究?(蒲慕明院士)

    读文献不要只看文献描述的工作 What was done 还有四个 W 你也应知道 是谁做的 Who did it 什么时候做的 When 在哪里做的 Where 为什么会做这工作 Why 想了解重要的创新工作的来龙去脉 你就要读科学史 读
  • 全面深入了解python(一)

    全面深入了解python 一 写在开始前 此教程不是基础教程 在看之前你需要有一定的python基础 不然你可能无法理解教程到底教了哪些东西 环境 python版本是3 6 5 gt 3 4即可 1 Python数据模型 数据模型其实是对P
  • 高级排序技巧:提升Python中排序算法的效率和灵活性

    排序是计算机科学中常见的操作之一 它可以对数据进行按照特定顺序排列的操作 Python提供了多种排序算法 如冒泡排序 插入排序 选择排序等 然而 在处理大规模数据或对特定需求有限制时 我们需要使用更高级的排序技巧来提高算法的效率和灵活性 本
  • 7、ListView的几种适配器及自定义适配器

    span style font family none background color rgb 255 255 255 ListView是我们在Android应用开发中常用的组件 它通过列表的形式展示数据 具有很强的可扩展性 通常使用还会
  • npm查看一个包的版本信息

    我们npm install安装一个包之后 怎么查看这个包的版本信息呢 过一段时间之后 如何查看这个包最新的版本信息呢 下面将做一个全面的总结 1 查看项目中安装的所有的包 npm list 结果如下 vue2 0 test 0 1 0 C
  • scrapy 最简易爬虫

    创建一个项目 scrapy startproject baidu 这后面是名字 运行项目 要cd 进入项目才可以运行 scrapy crawl baidu import scrapy from bs4 import BeautifulSou
  • 关于OSB执行管道outbound的Content-Type自动添加charset=utf-8解决办法

    一 问题描述 在执行Content Type application x www form urlencoded类型的接口的管道时outbound自动添加charset utf 8 如下图所示 二 解决办法 将所有服务器都停掉 1 打补丁
  • 海康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 s