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

GB28181录像回放实战:从SIP信令到PS流解析,一个完整抓包案例的拆解

GB28181录像回放全链路解析从SIP信令到PS流解包实战手册在视频监控系统集成领域GB28181协议堪称普通话级别的存在。但当我们真正动手实现录像回放功能时往往会陷入协议细节的迷宫——为什么设备不响应我的时间范围请求PS流里的时间戳到底怎么解析INFO消息控制播放暂停的机制是什么这些问题在文档中往往语焉不详。本文将带您亲历一次完整的协议侦探之旅。我们从一个真实的Wireshark抓包文件出发逐帧拆解从发起回放请求到接收媒体流的全过程。不同于简单的流程复述这里每个环节都配有原始报文截图和关键字段注释最后还会用Python代码演示如何拆解PS流中的视频帧。准备好您的协议分析工具我们开始这次逆向工程。1. 环境准备与抓包配置在开始抓包前需要确保测试环境具备以下要素网络拓扑摄像机IPC与客户端处于同一局域网IPC已注册到SIP服务器抓包工具Wireshark 3.6支持GB28181解析插件过滤规则(sip || rtp || rtcp) ip.addr 192.168.1.100替换为您的设备IP关键配置技巧# 在Linux系统下建议使用dumpcap降低丢包率 dumpcap -i eth0 -f udp port 5060 or udp portrange 30000-60000 -w gb28181.pcapng提示GB28181通常使用UDP传输SIP信令RTP流端口范围建议设置为30000-600002. SIP信令交互全解析2.1 INVITE请求时间范围的艺术客户端发起INVITE请求时最关键的差异体现在SDP报文中的两个字段INVITE sip:34020000001320000001192.168.1.100 SIP/2.0 ... Content-Type: application/sdp v0 o34020000002000000001 0 0 IN IP4 192.168.1.50 sPlayback cIN IP4 192.168.1.50 t1697264152 1697266715 ← 这里 mvideo 6000 RTP/AVP 96 artpmap:96 PS/90000时间戳字段详解字段示例值说明t1697264152起始时间Unix时间戳格式1697266715结束时间0表示实时流在实时点播中这个字段通常显示为t0 0而回放模式必须指定具体时间范围。时间戳转换技巧from datetime import datetime start datetime.fromtimestamp(1697264152) # 输出2023-10-14 14:15:522.2 设备响应200 OK的玄机设备返回的200 OK响应中SDP的afilesize字段常被忽视SIP/2.0 200 OK ... v0 o34020000001320000001 1080 1080 IN IP4 192.168.1.100 sPlayback afilesize:1893027 ← 录像文件大小字节 mvideo 15060 RTP/AVP 96 asendonly状态码对照表状态码含义常见原因200成功-400无效时间范围结束时间早于开始时间481录像不存在指定时间段无录像数据488不接受的媒体格式不支持的RTP payload类型3. 媒体流控制INFO消息详解播放控制通过SIP INFO消息实现其消息体采用XML格式?xml version1.0? Notify CmdTypePlayback/CmdType SN174/SN DeviceID34020000001320000001/DeviceID OperateTypePause/OperateType ← 控制类型 Scale1.0/Scale /Notify控制类型对照OperateType等效RTSP命令说明PlayPLAY开始播放可带ScalePausePAUSE暂停播放StopTEARDOWN停止播放ContinuePLAY从暂停恢复注意Scale参数支持0.25-4.0的倍速播放但需要设备端支持4. PS流解析实战接收到的RTP负载是PS封装数据解析流程如下RTP重组根据序列号处理乱序包PS头解析定位系统头和PES包视频提取分离H.264/H.265裸流Python解析示例import struct def parse_ps_header(ps_packet): # 解析PS头 start_code, struct.unpack(!I, ps_packet[0:4]) if start_code ! 0x000001ba: # PS头魔术字 raise ValueError(Invalid PS packet) # 解析系统头 sys_header ps_packet[14:] while True: pes_start sys_header.find(b\x00\x00\x01) if pes_start -1: break stream_id sys_header[pes_start3] if stream_id in (0xe0, 0xc0): # 视频/音频流 pes_header sys_header[pes_start:pes_start9] payload_len int.from_bytes(pes_header[4:6], big) print(fFound PES: stream_id{hex(stream_id)}, len{payload_len})PS流结构示意图RTP Packet ├── RTP Header (12 bytes) └── PS Payload ├── PS Header (14 bytes) ├── System Header (可变) └── PES Packets ├── Video PES (H.264/H.265) └── Audio PES (G.711/AAC)5. 常见问题排查指南问题1设备返回488 Not Acceptable Here检查SDP中的artpmap是否匹配设备能力尝试将96 PS/90000改为98 H264/90000问题2能收到RTP包但无法播放用rtpdump工具验证负载类型rtpdump -F payload -f capture.pcap | head -n 20检查RTP时间戳是否连续# Wireshark导出CSV后分析 df pd.read_csv(rtp.csv) df[delta] df[rtp.timestamp].diff() print(df[df[delta] 3600]) # 90000Hz时钟下1秒90000问题3播放控制无响应确认INFO消息的Content-Type正确Content-Type: Application/MANSCDPxml检查XML中的CmdType是否为Playback在完成本次抓包分析后我习惯用tshark统计关键指标作为验收依据tshark -r gb28181.pcapng -qz io,stat,1,\ COUNT(frame) frame,COUNT(rtp.pkt) rtp,COUNT(rtcp) rtcp这能清晰展示信令与媒体流的比例关系对性能调优很有帮助。

相关文章:

GB28181录像回放实战:从SIP信令到PS流解析,一个完整抓包案例的拆解

GB28181录像回放全链路解析:从SIP信令到PS流解包实战手册 在视频监控系统集成领域,GB28181协议堪称"普通话"级别的存在。但当我们真正动手实现录像回放功能时,往往会陷入协议细节的迷宫——为什么设备不响应我的时间范围请求&…...

别再死记硬背AUTOSAR分层了!用Vector Davinci工具链,手把手带你走通一个ECU配置实例

用Vector Davinci工具链实战AUTOSAR:从SWC设计到代码生成的完整指南 第一次打开Vector Davinci Configurator时,满屏的配置选项和术语让人望而生畏——这恐怕是大多数汽车电子工程师接触AUTOSAR工具链的共同体验。传统教材里那些分层架构图和方法论流程图…...

angular-calendar样式定制终极教程:从主题到细节的全面掌控

angular-calendar样式定制终极教程:从主题到细节的全面掌控 【免费下载链接】angular-calendar A flexible calendar component for angular 20.2 that can display events on a month, week or day view. 项目地址: https://gitcode.com/gh_mirrors/an/angular-c…...

别再手动去水加氢了!AutoDockTools保姆级预处理教程(含PubChem下载+OpenBabel转换)

AutoDock分子对接预处理全流程:从PubChem到可计算结构的完美转换 第一次接触分子对接的研究生们往往会在预处理阶段栽跟头——那些教程里一笔带过的"简单步骤",实际操作时却可能耗费数小时甚至数天。本文将彻底解决这个痛点,打造一…...

html-css-javascript-projects游戏开发实战:15个趣味JavaScript游戏项目

html-css-javascript-projects游戏开发实战:15个趣味JavaScript游戏项目 【免费下载链接】html-css-javascript-projects 100 mini web projects using HTML, CSS and JavaScript. 项目地址: https://gitcode.com/gh_mirrors/ht/html-css-javascript-projects …...

Manim CE v.. 发布:动画构建更丝滑,随机性终于“可控”了!

1. 前言 本文详细介绍如何使用 kylin v10 iso 文件构建出 docker image,docker 版本为 20.10.7。 2. 构建 yum 离线源 2.1. 挂载 ISO 文件 mount Kylin-Server-V10-GFB-Release-030-ARM64.iso /media 2.2. 添加离线 repo 文件 在/etc/yum.repos.d/下创建kylin-local…...

hcxdumptool完整教程:从零开始掌握无线安全测试

hcxdumptool完整教程:从零开始掌握无线安全测试 【免费下载链接】hcxdumptool Small tool to capture packets from wlan devices. 项目地址: https://gitcode.com/gh_mirrors/hc/hcxdumptool hcxdumptool是一款专业的无线安全测试工具,能够捕获W…...

OneDev物联网开发终极指南:嵌入式系统的CI/CD与OTA更新完整方案

OneDev物联网开发终极指南:嵌入式系统的CI/CD与OTA更新完整方案 【免费下载链接】onedev Git Server with CI/CD, Kanban, and Packages. Seamless integration. Unparalleled experience. 项目地址: https://gitcode.com/gh_mirrors/on/onedev OneDev是一款…...

专业级Windows风扇控制:Fan Control如何解决您的散热与噪音平衡难题

专业级Windows风扇控制:Fan Control如何解决您的散热与噪音平衡难题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHu…...

Maccy夜间模式终极指南:保护眼睛健康的5个简单配色方案

Maccy夜间模式终极指南:保护眼睛健康的5个简单配色方案 【免费下载链接】Maccy Lightweight clipboard manager for macOS 项目地址: https://gitcode.com/gh_mirrors/ma/Maccy Maccy作为一款轻量级macOS剪贴板管理器,不仅能帮你高效管理复制历史…...

3分钟终极汉化:免费中文语言包让Axure RP界面秒变母语

3分钟终极汉化:免费中文语言包让Axure RP界面秒变母语 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn 还在为Axure R…...

终极FOSRestBundle实战教程:从零开始构建企业级RESTful API

终极FOSRestBundle实战教程:从零开始构建企业级RESTful API 【免费下载链接】FOSRestBundle This Bundle provides various tools to rapidly develop RESTful APIs with Symfony 项目地址: https://gitcode.com/gh_mirrors/fo/FOSRestBundle FOSRestBundle是…...

终极Html Agility Pack实战指南:5种轻松解决HTML乱码的高效方法

终极Html Agility Pack实战指南:5种轻松解决HTML乱码的高效方法 【免费下载链接】html-agility-pack Html Agility Pack (HAP) is a free and open-source HTML parser written in C# to read/write DOM and supports plain XPATH or XSLT. It is a .NET code libra…...

Html Agility Pack终极指南:如何快速解析任意HTML文档的10个技巧

Html Agility Pack终极指南:如何快速解析任意HTML文档的10个技巧 【免费下载链接】html-agility-pack Html Agility Pack (HAP) is a free and open-source HTML parser written in C# to read/write DOM and supports plain XPATH or XSLT. It is a .NET code libr…...

如何快速掌握Hpple:Objective-C XML/HTML解析器的完整指南

如何快速掌握Hpple:Objective-C XML/HTML解析器的完整指南 【免费下载链接】hpple An XML/HTML parser for Objective-C, inspired by Hpricot. 项目地址: https://gitcode.com/gh_mirrors/hp/hpple Hpple是一款专为Objective-C开发者设计的XML/HTML解析工具…...

SwiftUIX终极指南:开发者最常问的50个问题与解决方案

SwiftUIX终极指南:开发者最常问的50个问题与解决方案 【免费下载链接】SwiftUIX An exhaustive expansion of the standard SwiftUI library. 项目地址: https://gitcode.com/gh_mirrors/sw/SwiftUIX SwiftUIX是标准SwiftUI库的全面扩展,为开发者…...

终极指南:Twitter4J与Gradle/Maven集成的完整依赖管理解决方案

终极指南:Twitter4J与Gradle/Maven集成的完整依赖管理解决方案 【免费下载链接】Twitter4J Twitter4J is an open-source Java library for the Twitter API. 项目地址: https://gitcode.com/gh_mirrors/tw/Twitter4J Twitter4J是一款强大的开源Java库&#…...

FOSRestBundle安全最佳实践:API认证与授权完整解决方案

FOSRestBundle安全最佳实践:API认证与授权完整解决方案 【免费下载链接】FOSRestBundle This Bundle provides various tools to rapidly develop RESTful APIs with Symfony 项目地址: https://gitcode.com/gh_mirrors/fo/FOSRestBundle FOSRestBundle作为S…...

Faster-Whisper-GUI终极指南:3分钟实现专业级语音转文字

Faster-Whisper-GUI终极指南:3分钟实现专业级语音转文字 【免费下载链接】faster-whisper-GUI faster_whisper GUI with PySide6 项目地址: https://gitcode.com/gh_mirrors/fa/faster-whisper-GUI 还在为会议录音整理而头疼吗?还在为视频字幕制作…...

终极验证码识别技术对决:CNN与CTC方法性能全面评测

终极验证码识别技术对决:CNN与CTC方法性能全面评测 【免费下载链接】captcha_break 验证码识别 项目地址: https://gitcode.com/gh_mirrors/ca/captcha_break 验证码识别技术在当今数字化时代扮演着至关重要的角色,而GitHub加速计划的captcha_bre…...

终极指南:如何用zteOnu快速开启中兴光猫工厂模式

终极指南:如何用zteOnu快速开启中兴光猫工厂模式 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 对于网络管理者和技术爱好者来说,中兴光猫的工厂模式一直是一个…...

3大核心功能解析:如何用KKManager一站式管理你的Illusion游戏模组

3大核心功能解析:如何用KKManager一站式管理你的Illusion游戏模组 【免费下载链接】KKManager Mod, plugin and card manager for games by Illusion that use BepInEx 项目地址: https://gitcode.com/gh_mirrors/kk/KKManager 你是否曾为管理多个Illusion游…...

终极指南:如何为你的项目选择最佳计算机视觉模型

终极指南:如何为你的项目选择最佳计算机视觉模型 【免费下载链接】notebooks A collection of tutorials on state-of-the-art computer vision models and techniques. Explore everything from foundational architectures like ResNet to cutting-edge models li…...

StyleCopAnalyzers性能优化技巧:10个实战经验提升大型项目代码分析速度

StyleCopAnalyzers性能优化技巧:10个实战经验提升大型项目代码分析速度 【免费下载链接】StyleCopAnalyzers An implementation of StyleCop rules using the .NET Compiler Platform 项目地址: https://gitcode.com/gh_mirrors/st/StyleCopAnalyzers StyleC…...

多机器人协同控制理论多移动机械臂【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)基于三角因子改进PSO的移动平台逆运动学解算:针对…...

终极指南:5个可复用转录UI组件,快速构建实时语音识别界面

终极指南:5个可复用转录UI组件,快速构建实时语音识别界面 【免费下载链接】WhisperLiveKit Simultaneous speech-to-text models 项目地址: https://gitcode.com/GitHub_Trending/wh/WhisperLiveKit WhisperLiveKit是一个强大的实时语音转文本项目…...

六自由度串联机械臂运动规划及跟踪动力学【附代码】

✅ 博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。 ✅ 如需沟通交流,扫描文章底部二维码。(1)基于改进RRT*-Connect与五次多项式插值的轨迹规划&#xff1…...

STF高可用部署终极指南:构建永不宕机的Android测试环境

STF高可用部署终极指南:构建永不宕机的Android测试环境 【免费下载链接】stf Control and manage Android devices from your browser. 项目地址: https://gitcode.com/gh_mirrors/st/stf STF(Smartphone Test Farm)是一款强大的开源工…...

Shoelace路由集成终极指南:单页面应用开发实战教程

Shoelace路由集成终极指南:单页面应用开发实战教程 【免费下载链接】shoelace Shoelace is now Web Awesome. Come see what’s new! 项目地址: https://gitcode.com/gh_mirrors/sh/shoelace Shoelace(现更名为Web Awesome)作为一款强…...

NetworkX地理空间网络分析终极指南:从道路网络到位置数据的完整可视化教程

NetworkX地理空间网络分析终极指南:从道路网络到位置数据的完整可视化教程 【免费下载链接】networkx Network Analysis in Python 项目地址: https://gitcode.com/gh_mirrors/ne/networkx NetworkX是Python中最强大的网络分析库之一,它提供了简单…...