当前位置: 首页 > news >正文

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

一、引言

使用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://casey.pzdurr.cn
http://amygdalae.pzdurr.cn
http://allo.pzdurr.cn
http://ankylose.pzdurr.cn
http://aline.pzdurr.cn
http://benzol.pzdurr.cn
http://butskellism.pzdurr.cn
http://aneuploid.pzdurr.cn
http://behaviour.pzdurr.cn
http://bullboat.pzdurr.cn
http://anharmonic.pzdurr.cn
http://biowarfare.pzdurr.cn
http://chromatrope.pzdurr.cn
http://agnostic.pzdurr.cn
http://alphabet.pzdurr.cn
http://antifederalist.pzdurr.cn
http://bordereau.pzdurr.cn
http://adapter.pzdurr.cn
http://aftermost.pzdurr.cn
http://ajuga.pzdurr.cn
http://anhydration.pzdurr.cn
http://bifer.pzdurr.cn
http://chronicle.pzdurr.cn
http://beckon.pzdurr.cn
http://arrant.pzdurr.cn
http://calamitous.pzdurr.cn
http://caliber.pzdurr.cn
http://bleacher.pzdurr.cn
http://appassionata.pzdurr.cn
http://capitalist.pzdurr.cn
http://www.dtcms.com/a/111382.html

相关文章:

  • LeetCode 1123.最深叶节点的最近公共祖先 题解
  • Runnable组件动态添加默认调用参数
  • 基于SpringBoot框架发生验证码
  • 【Docker项目实战】使用Docker部署MediaCMS内容管理系统
  • 脑影像分析软件推荐 | BCT(Brain Connectivity Toolbox)
  • c语言修炼秘籍 - - 禁(进)忌(阶)秘(技)术(巧)【第四式】自定义类型详解(结构体、枚举、联合)
  • Windows 11 听的见人声,但是听不见背景音乐或者听不见轻音乐等,可以这样设置
  • 【橘子大模型】Runnable和Chain以及串行和并行
  • STM32 HAL库 CANFD配置工具
  • 小程序API —— 58 自定义组件 - 创建 - 注册 - 使用组件
  • CExercise_04_1运算符_6 (扩展) 找出数组中只出现一次的唯二元素
  • 社会视频汇聚:构筑城市安全防线的智慧之眼
  • VirtualBox 配置双网卡(NAT + 桥接)详细步骤
  • 《微服务概念进阶》精简版
  • 新浪财经股票每天10点自动爬取
  • 免费送源码:Java+SSM+Android Studio 基于Android Studio游戏搜索app的设计与实现 计算机毕业设计原创定制
  • Springboot + Vue + WebSocket + Notification实现消息推送功能
  • 接口自动化学习四:全量字段校验
  • L1-100 四项全能(测试点1)
  • 计算机网络知识点汇总与复习——(三)数据链路层
  • 在VMware下Hadoop分布式集群环境的配置--基于Yarn模式的一个Master节点、两个Slaver(Worker)节点的配置
  • Leetcode 33 -- 二分查找 | 归约思想
  • 【YOLO系列(V5-V12)通用数据集-交通红黄绿灯检测数据集】
  • SpringBoot集成swagger和jwt
  • Flask学习笔记 - 模板渲染
  • 深入探究 Hive 中的 MAP 类型:特点、创建与应用
  • 【Linux系统编程】进程概念,进程状态
  • 第三期:深入理解 Spring Web MVC [特殊字符](数据传参+ 特殊字符处理 + 编码问题解析)
  • 游戏编程模式学习(编程质量提升之路)
  • 25.4.4错题分析