音视频入门基础:RTP专题(21)——使用Wireshark分析海康网络摄像机RTSP的RTP流

news2025/4/7 20:28:40

一、引言

使用vlc等播放器可以播放海康网络摄像机的RTSP流:

网络摄像机的RTSP流中,RTSP主要用于控制媒体流的传输,如播放、暂停、停止等操作。RTSP本身并不用于转送媒体流数据,而是会通过PLAY方法使用RTP来传输实际的音视频数据。所以播放器播放RTSP流,实际播放的是里面的RTP音视频数据。

 二、Wireshark抓包分析

播放器播放摄像机的rtsp流时,对摄像机的数据进行抓包。以我使用的海康摄像机为例:

(一)区分RTSP客户端和服务器

首先我们得搞清楚一个概念:播放器和摄像机哪个是客户端,哪个是服务器。

对于RTSP,其通常使用TCP进行传输,因为它需要可靠的连接来确保控制命令的可靠性:

如下图所示,172.16.25.64是摄像机的ip,172.16.25.63是播放器所在电脑的ip。大家都知道,TCP握手的第一次握手总是:客户端向服务器发送一个SYN报文段。所以从下图的TCP三次握手可以看出来,播放器是TCP(RTSP)客户端,摄像机是TCP(RTSP)服务器:

但是对于传输实际音视频数据的RTP,则是反过来的:播放器是UDP(RTP)服务器,摄像机是UDP(RTP)客户端。具体可以参考:《音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现》。

(二)SDP分析

RTSP协议中,RTSP(TCP)客户端向RTSP服务器端发送DESCRIBE方法,用于得到URI所指定的媒体描述信息,一般是SDP信息(关于SDP协议可以参考:《音视频入门基础:RTP专题(3)——SDP简介》)。选中RTSP的DESCRIBE方法,右键 -> “追踪流” -> “TCP Stream”:

从SDP信息中,可以看到,

对于视频:a=rtpmap:96 H264/90000表示映射PT值为96的负载类型到H.264编码,采样率为90000 Hz。packetization-mode=1表示采用Non-interleaved mode(非交错模式)。

对于音频:a=rtpmap:104 mpeg4-generic/16000/1表示映射PT值为104的负载类型到AAC编码,音频的采样频率为16000Hz,音频声道数为2:

根据SDP找到PT(payload type)值为96的RTP包如下,该RTP包的payload即为H.264格式:

根据SDP找到PT(payload type)值为104的RTP包如下,该RTP包的payload即为AAC格式:

(三)RTP封装H.264时,视频的有效载荷结构

由《音视频入门基础:RTP专题(13)——SDP的packetization-mode》可以知道,当packetization-mode参数的值等于1时,表示使用Non-Interleaved Mode(非交错模式)。它主要用于低延迟应用,只能使用Single NAL Unit Packet、STAP-A和FU-A,不得使用STAP-B、MTAP(MTAP16、MTAP24)和FU-B。NAL单元的传输顺序必须符合 NAL单元解码顺序。通过Wireshark进行抓包,我们可以发现确实如此:

关于Single NAL Unit Packet、STAP-A和FU-A的概念,见《音视频入门基础:RTP专题(12)——RTP封装H.264时,视频的有效载荷结构》。

(四)提取出H.264裸流

通过Wireshark可以提取出摄像机RTP流中的H.264裸流,具体可以参考:《音视频入门基础:RTP专题(8)——使用Wireshark分析RTP》。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2329331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

04.游戏开发-unity编辑器详细-工具栏、菜单栏、工作识图详解

04.游戏开发,unity编辑器详细-工具栏、菜单栏、工作识图详解 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有:学习and理解的关联性,希…

QGIS中第三方POI坐标偏移的快速校正-百度POI

1.百度POI: name,lng,lat,address 龙记黄焖鸡米饭(共享区店),121.908315,30.886636,南汇新城镇沪城环路699弄117号(A1区110室) 好福记黄焖鸡(御桥路店),121.571409,31.162292,沪南路2419弄26号1层B间 御品黄焖鸡米饭(安亭店),121.160322,31.305977,安亭镇新源路792号…

Pycharm 启动时候一直扫描索引/更新索引 Update index/Scanning files to index

多个项目共用一个虚拟环境,有助于加快PyCharm 启动吗 chatgpt 4o认为很有帮助,gemini 2.5pro认为没鸟用,我更认可gemini的观点。不知道他们谁在一本正经胡说八道。 -------- 打开pycharm的时候,下方的进度条一直显示在扫描文件…

Vanna:用检索增强生成(RAG)技术革新自然语言转SQL

引言:为什么我们需要更智能的SQL生成? 在数据驱动的业务环境中,SQL 仍然是数据分析的核心工具。然而,编写正确的 SQL 查询需要专业知识,而大型语言模型(LLM)直接生成的 SQL 往往存在**幻觉&…

CKPT文件是什么?

检查点(Checkpoint,简称ckpt)是一种用于记录系统状态或数据变化的技术,广泛应用于数据库管理、机器学习模型训练、并行计算以及网络安全等领域。以下将详细介绍不同领域中ckpt检查点的定义、功能和应用场景。 数据库中的ckpt检查点…

Android使用OpenGL和MediaCodec录制

目录 一,什么是opengl 二,什么是Android OpenGL ES 三, OpenGL 绘制流程 四, OpenGL坐标系 五, OpenGL 着色器 六, GLSL编程语言 七,使用MediaCodec录制在Opengl中渲染架构 八,代码实现 8.1 自定义渲染view继承GLSurfaceView 8.2 自定义渲染器TigerRender 8.3 创建编…

《如何避免虚无》速读笔记

文章目录 书籍信息概览躺派(出世)卷派(入世)虚无篇:直面虚无自我篇:认识自我孤独篇:应对孤独幸福篇:追寻幸福超越篇:超越自我 书籍信息 书名:《如何避免虚无…

哈尔滨工业大学:大模型时代的具身智能

大家好,我是樱木。 机器人在工业领域,已经逐渐成熟。具身容易,智能难。 机器人-》智能机器人,需要自主能力,加上通用能力。 智能机器人-》人类,这个阶段就太有想象空间了。而最受关注的-类人机器人。 如何…

理解OSPF 特殊区域NSSA和各类LSA特点

本文基于上文 理解OSPF Stub区域和各类LSA特点 在理解了Stub区域之后,我们再来理解一下NSSA区域,NSSA区域用于需要引入少量外部路由,同时又需要保持Stub区域特性的情况 一、 网络总拓扑图 我们在R1上配置黑洞路由,来模拟NSSA区域…

如何通过优化HMI设计大幅提升产品竞争力?

一、HMI设计的重要性与竞争力提升 HMI(人机交互界面)设计在现代产品开发中扮演着至关重要的角色。良好的HMI设计不仅能够提升用户体验,还能显著增强产品的竞争力。在功能趋同的市场环境中,用户体验成为产品竞争的关键。HMI设计通…

Linux信号——信号的处理(3)

信号是什么时候被处理? 进程从内核态,切换到用户态的时候,信号会被检测处理。 内核态:操作系统的状态,权限级别高 用户态:你自己的状态 内核态和用户态 进程地址空间第三次 所谓的系统调用本质其实是一堆…

Pod的调度

在默认情况下,一个Pod在哪个Node节点上运行,是由Scheduler组件采用相应的算法计算出来的,这个过程是不受人工控制的。但是在实际使用中,这并不满足的需求,因为很多情况下,我们想控制某些Pod到达某些节点上&…

LabVIEW面向对象编程设计方法

一、概述 面向对象编程(OOP)在软件开发中占据重要地位,尤其是在大规模软件项目中。它与小型程序开发思路不同,更注重未来功能的升级与扩展。在设计阶段,需思考如何构建既灵活又稳定的系统,这涉及众多设计方…

Dify票据识别遇到的分支判断不准确问题

已测试这篇文章中 https://zhuanlan.zhihu.com/p/5465385787 使用多分支条件判断使用不同的大模型识别图片内容 发现了细节问题。在使用时若不注意,分支会出现走向不准的问题。 需要关注部分 下方红框处。1,2后不能跟点。否则会出问。除此之外&#xff0…

《全栈+双客户端Turnkey方案》架构设计图

今天分享一些全栈双客户端Turnkey方案的架构与结构图。 1:三种分布式部署方案:网关方案,超级服务器单服方案,直连逻辑服方案 2: 单服多线程核心架构: 系统服务逻辑服服务 3: 系统服务的多线程池调度设计 4:LogicServer Update与ECS架构&…

某碰瓷国赛美赛,号称第三赛事的数模竞赛

首先我非常不能理解的就是怎么好意思自称第三赛事的呢?下面我们进行一个简单讨论,当然这里不对国赛和美赛进行讨论。首先我们来明确一点,比赛的含金量由什么来定?这个可能大家的评价指标可能不唯一,我通过DeepSeek选取…

【大模型深度学习】如何估算大模型需要的显存

一、模型参数量 参数量的单位 参数量指的是模型中所有权重和偏置的数量总和。在大模型中,参数量的单位通常以“百万”(M)或“亿”(B,也常说十亿)来表示。 百万(M):表示…

Mysql 数据库编程技术01

一、数据库基础 1.1 认识数据库 为什么学习数据库 瞬时数据:比如内存中的数据,是不能永久保存的。持久化数据:比如持久化至数据库中或者文档中,能够长久保存。 数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长…

Mysql慢查询设置 和 建立索引

1 .mysql慢查询的设置 slow_query_log ON //或 slow_query_log_file /usr/local/mysql/data/slow.log long_query_time 2 修改后重启动mysql 1.1 查看设置后的参数 mysql> show variables like slow_query%; --------------------------------------------------…

【Android】界面布局-相对布局RelativeLayout-例子

题目 完成下面相对布局&#xff0c;要求&#xff1a; 中间的button在整个屏幕的中央&#xff0c;其他的以它为基准排列。Hints&#xff1a;利用layout_toEndof,_toRightof,_toLeftof,_toStartof完成。 结果演示 代码实现 <?xml version"1.0" encoding"u…