从 Wireshark 抓包文件中提取 GB28181 协议中的 RTP PS 负载关键在于将 PS 流数据从RTP 的封装中“剥离”出来。由于 GB28181 可能使用被动模式传输媒体流且 Wireshark 可能无法自动识别 TCP 承载的 RTP 包需要手动引导 Wireshark 正确解析。下面的流程图梳理了核心操作路径下面一TCP为例UDP也适用介绍具体每一步的操作细节 正确解析数据包首先确保 Wireshark 能够正确识别出 RTP 数据包。识别流通道在抓包文件中找到传输视频媒体的TCP 流。这通常可以通过筛选与 SIP 信令中mvideo行对应的端口号的 TCP 包来实现例如使用过滤器tcp.port 58026。手动指定解码方式关键步骤如果 Wireshark 没有自动将 TCP 负载解析为 RTP 协议例如协议列仍显示为 TCP你需要手动指定。在 TCP 数据包上右键选择“解码为…”(Decode As…)。在弹出的对话框中选择RTP协议。点击OK。此时该 TCP 流的数据包应被正确解析为 RTP 协议。 导出 RTP 负载当 RTP 包被正确识别后就可以提取其负载了。打开 RTP 流分析在菜单栏依次点击电话 (Telephony)-RTP-RTP 流(RTP Streams)。这会列出所有识别出的 RTP 流。选择并导出在 RTP 流列表中选择你想要分析的视频流然后点击右侧的“播放”(Play Streams) 按钮。在 RTP player窗口中你会找到“Export”导出按钮。点击该按钮将负载数据保存为一个二进制文件例如video.ps。 备选导出方法这个备选方案不依赖于Wireshark能否自动识别RTP协议, 但是需要另外解析脚本以删除RTP header。目前还没有这个脚本 第一步追踪TCP流这个操作的目的是将你要分析的那个TCP连接的所有数据包按照传输顺序重组为一个完整、连续的数据流。定位数据包可以通过SIP信令中协商的端口号使用显示过滤器如tcp.port 6000来缩小范围。开启追踪在该TCP数据包上右键选择跟随→TCP 流。确认流内容此时会弹出一个新窗口显示这个TCP连接的全部通信内容。注意右下角, 需要选择某个方向的流(192.168.1.128:29080 → 192.168.1.190:58026 (131 MB))而不是“Entire conversation”.显示格式下拉菜单。务必选择原始数据 第二步保存为原始二进制数据保存文件点击另存为…按钮将文件保存为一个二进制文件例如tcp_stream.raw。️ 第三步从原始数据中提取RTP PS负载核心步骤这是最关键的一步因为保存下来的.raw文件是纯粹的TCP报文流它可能包含TCP包头、以及可能发生的粘包/拆包情况。我们需要编写脚本或使用工具来解析它 但是需要另外解析脚本以删除RTP header并分离出一个个独立的PS包然后提取其中的PS负载。目前还没有这个脚本。