音视频入门基础: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》。

相关推荐
M158227690555 小时前
跨协议互通利器|SG-PN-EIP (S)-220 Profinet 转 EtherNet/IP 网关,打通欧美 PLC 通讯壁垒
网络·网络协议·tcp/ip
北龙云海6 小时前
案例分享 | 面向公网业务系统境内访问白名单配置实操方案
运维·网络·安全·网络安全·告警·数据泄露·入侵攻击
闲猫7 小时前
Spring AI对接Deepseek 使用Charles代理api.deepseek.com 拦截报文,查看Tool和Skill的本质
网络·网络协议·http
tedcloud1237 小时前
OmniRoute怎么部署?开源AI模型路由平台Linux部署教程
linux·服务器·人工智能·开源·音视频
niaiheni8 小时前
Fastjson 1.2.83 “Gadget-Free“ RCE
网络·安全·web安全
意疏9 小时前
远程办公软件哪个安全性高?UU远程8项安全防线全覆盖
网络·安全
牛马之星9 小时前
气体涡轮流量计如何维护
网络·经验分享
MonolithIoT9 小时前
实战方案|设备备件无人值守仓库:连续化产线运维备件 7×24 小时数字化管控方案
运维·网络·数据库
三84410 小时前
BGP/GRE练习
网络
agathakuan11 小时前
Wireshark 解密並導出TLS 1.2 / TLS 1.3 明文的方法(可控制 Client 端)
c语言·wireshark·ssl·openwrt