海康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抓包分析 的相关文章

  • Android平台RTMP推送或GB28181设备接入端如何实现采集audio音量放大?

    我们在做Android平台RTMP推送和GB28181设备对接的时候 遇到这样的问题 有的设备 麦克风采集出来的audio 音量过高或过低 特别是有些设备 采集到的麦克风声音过低 导致播放端听不清前端采集的audio 这时候 就需要针对采集
  • 基于libVLC的视频播放器(支持RTSP协议)

    VLC Media Player是一款优秀的播放器 大多数多媒体开发人员都使用过 VLC是一款开源的 跨平台的 可扩展的 多媒体播放器 流媒体服务器及框架 可播放大多数多媒体文件 以及DVD 音频CD VCD及各类流媒体协议 现更名为VLC
  • ffprobe -show_packets和-show_frames之间的区别

    一 show packets 我们只查看视频的packets ffprobe show packets rtmp jdpull jd com live 14042733 of xml grep video 结果如下
  • 国网B接口资源上报(Push_Resourse)接口描述和消息示例

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

    一 准备工作 1 下载并安装优酷客户端 2 下载ffmpeg可执行文件 解压可用 不需要下载源码自己编译 ffmpeg可执行文件下载链接 http download csdn net detail caoshangpa 9492758 二
  • wireshark提取视频数据之RTP包中提取H264和H265

    wireshark提取视频数据之RTP包中提取H264和H265 文章目录 wireshark提取视频数据之RTP包中提取H264和H265 1 背景 2 提取前工作 3 H264视频从RTP包中提取步骤 4 H265视频从RTP包中提取步
  • H264 NALU 使用PS封装 RTP发送

    最近由于项目平台需求 要将H264 NALU封装为PS再用RTP发送 PS封装按照ISO DEC 13818 1标准 一个PS包包含PS Header PES Header PS system header PS system map等 针
  • FFmpeg入门详解之92:Live555学习之(一)-------Live555的基本介绍

    Live555学习之 一 Live555的基本介绍 前一阵子 因为项目需要 研究了一下Live555开源框架 研究的不是很深入 基本上把Live555当做API用了一下 但是毕竟也是本人看的第一个开源框架 在此记录总结一下 Live555是
  • 如何快速实现Android平台前端设备接入能力

    技术背景 SIP 会话初始化协议 是在 IP网络上进行多媒体通信的应用层控制协议 以几种RFC的形式提供 其中最重要的是包含核心协议规范的RFC3261 该协议用于创建 修改和终止与一个或多个参与者的会话 通过会话 我们了解了一组进行通信的
  • Android平台GB28181设备接入模块分辨率发生变化怎么办?

    技术背景 我们在做Android平台gb28181设备接入模块的时候 遇到这样的情况 比如横竖屏分辨率不锁定 采集摄像头的时候 可以实现 横屏状态采集横屏 竖屏状态采集竖屏 简单来说 横屏状态比如采集的1280 720的 竖屏状态 采集的数
  • 使用 Live555 搭建流媒体服务器

    搭建环境为Centos 7 2 64bit 一 安装gcc编译器 yum install gcc c 二 安装live555 wget http www live555 com liveMedia public live555 latest
  • FFmpeg学习(11)——视频转码之-crf参数详解

    什么是固定码率因子crf Constant Rate Factor 固定码率因子 CRF 是 x264 和 x265 编码器的默认质量 和码率控制 设置 取值范围是 0 到 51 这其中越低的值 结果质量越好 同时输出文件越大 越高的值意味
  • Andorid平台GB28181设备接入端如何生成黑帧并推送至国标平台

    我们在做Android平台GB28181设备接入模块的时候 遇到这样的需求 做移动对讲的时候 是不需要视频数据的 但是国标平台侧 没有视频的话 大多平台又无法播纯音频打包的数据 网页端大多基于http flv或webrtc实现 基于此 我们
  • Android平台GB28181设备接入端如何调节实时音量?

    我们在对接Android平台GB28181设备接入端的时候 有开发者提出这样的疑惑 如何调整设备接入端的实时音量 实际上 这块我们前几年在做RTMP直播推送模块的时候 已经发布了相关的接口 这里再回顾下 SmartPublisherJniV
  • 前端实现预览功能,播放rtsp视频流(node.js+ffmpeg+flv.js)

    实现思路 获取摄像头rtsp流 通过node js ffmpeg转码 通过哔哩哔哩flv js播放 1 获取摄像机RTSP流 之前文章有说明不多阐述 2 配置流媒体服务器 1 下载安装node js 运行node js 网上教程很多自行下载
  • GB/T28181-2022图像抓拍规范解读及技术实现

    规范解读 GB28181 2022相对2016 增加了设备软件升级 图像抓拍信令流程和协议接口 我们先回顾下规范说明 图像抓拍基本要求 源设备向目标设备发送图像抓拍配置命令 携带传输路径 会话ID等信息 目标设备完成图像传输后 发送图像抓拍
  • 基于SRS的视频直播服务器搭建

    srs提供的一个demo实例 包括实时流的rtmp播放 hls播放 视频会议 ffmpeg视频变换 jwplayer播放 OSMF播放 vlc播放等等功能 下面是在Centos 6 x环境下的编译搭建流程 1 下载或更新源码或者使用git更
  • 格式工厂5.10.0版本安装

    目前格式工厂有很多 大多都可以进行视频转换 之前遇到一个用ffmpeg拉流保存的MP4在vlc和迅雷都无法正常播放的问题 发现视频长度不对 声音也不对 最后换到了格式工厂的格式播放器是可以正常播放的 格式工厂下载之家的地址 https ww
  • GB/T 28181联网系统通信协议结构和技术实现

    技术回顾 在本文开头 我们先一起回顾下GB T28181联网系统通信协议结构 联网系统在进行视音频传输及控制时应建立两个传输通道 会话通道和媒体流通道 会话通道用于在设备之间建立会话并传输系统控制命令 媒体流通道用于传输视音频数据 经过压缩
  • 深入理解Google Cast(一)基本概念

    什么是google cast google cast允许用户将手机上的内容投影到TV上 然后用户可以将手机作为遥控器来控制TV上的媒体播放 Google cast SDK用于扩展你的app 使其支持google cast功能 一个Cast

随机推荐

  • 解决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