音视频入门基础:MPEG2-PS专题(8)——使用Wireshark分析GB28181的PS流

=================================================================

音视频入门基础:MPEG2-PS专题系列文章:

音视频入门基础:MPEG2-PS专题(1)------MPEG2-PS官方文档下载

音视频入门基础:MPEG2-PS专题(2)------使用FFmpeg命令生成ps文件

音视频入门基础:MPEG2-PS专题(3)------MPEG2-PS格式简介

音视频入门基础:MPEG2-PS专题(4)------FFmpeg源码中,判断某文件是否为PS文件的实现

音视频入门基础:MPEG2-PS专题(5)------FFmpeg源码中,解析PS流中的PES流的实现

音视频入门基础:MPEG2-PS专题(6)------FFmpeg源码中,获取PS流的视频信息的实现

音视频入门基础:MPEG2-PS专题(7)------通过FFprobe显示PS流每个packet的信息

音视频入门基础:MPEG2-PS专题(8)------使用Wireshark分析GB28181的PS流

=================================================================

一、引言

按照《海康网络摄像机接入EasyGBS GB28181平台》中的方法,将支持GB28181的海康网络摄像机接入EasyGBS GB28181平台。如果国标传输协议的取流方式选择的是UDP:

那进行直播时,摄像机通过GB28181传输的音视频流的格式就是RTP封装的PS流:

二、Wireshark抓包分析

(一)SDP分析

对摄像机的数据进行抓包。以我使用的海康摄像机为例,首先分析SIP信令(INVITE)中携带的SDP。GB28181里面,SIP负责建立和释放会话,而媒体数据由SDP描述。SDP与SIP配合使用时会放到SIP协议的body中。会话建立时,需要通过SDP进行媒体协商,双方才能确定对方的媒体能力以及交换媒体的数据(关于SDP协议可以参考:《音视频入门基础:RTP专题(3)------SDP简介》)。选中SIP的INVITE方法,右键 -> "追踪流" -> "SIP Call":

可以看到映射PT值(payload type,有效载荷类型)为96的负载类型到PS(MPEG2-PS)编码,采样率为90000Hz。由《音视频入门基础:RTP专题(7)------RTP协议简介》可以知道,有效载荷标识符 96-127 用于会话期间动态定义的有效载荷。MPEG2-PS没有具体的PT值,只能使用动态(dynamic)PT值:

(二)RTP header分析

选中其中一个RTP数据包(RTP packet),下图红框中显示的就是其RTP header(关于RTP header的格式可以参考:《音视频入门基础:RTP专题(7)------RTP协议简介》)。可以看到该RTP数据包的RTP header的payload type值为96,为动态(dynamic)PT值。该值跟SDP描述中的PT值对应。所以可以确定其RTP payload中存放的是PS,即MPEG2-PS格式的数据:

(三)提取出PS裸流

GitHub - hongch911/WiresharkPlugin: The H265 H264 PS PCM AMR SILK plugin for Wireshark Lua 下载rtp_ps_assemble.lua和rtp_ps_export.lua。将这两个脚本放到Wireshark的plugins目录下:

重新打开Wireshark,可以看到"工具"菜单多了个"Video"选项。"工具" -> "Video" -> "Export PS":

Export All,然后点击"Browser":

可以看到生成了XXX.ps文件。该文件即为ps裸流文件:

该文件可以用vlc等播放器播放:

也可以用Elecard Stream Analyzer打开分析:

相关推荐
音视频牛哥4 分钟前
Android 平台RTSP/RTMP播放器SDK接入说明
android·音视频·大牛直播sdk·rtsp播放器·rtmp播放器·rtmp低延迟播放·rtmpplayer
CIb0la41 分钟前
Ai自动补全编程工具:llama vscode
运维·开发语言·学习·测试工具·程序人生
神探小白牙12 小时前
vue-video-player视频保活成功确无法推送问题
前端·vue.js·音视频
春末的南方城市20 小时前
Ctrl-Crash 助力交通安全:可控生成逼真车祸视频,防患于未然
人工智能·计算机视觉·自然语言处理·aigc·音视频
代码的乐趣1 天前
支持selenium的chrome driver更新到137.0.7151.68
chrome·selenium·测试工具
Hygge-star1 天前
Flask音频处理:构建高效的Web音频应用指南
前端·flask·音视频·pygame·csdn开发云
hao_wujing2 天前
使用有限计算实现视频生成模型的高效训练
音视频
追随远方2 天前
Android音频开发:Speex固定帧与变长帧编解码深度解析
android·音视频
aqi002 天前
FFmpeg开发笔记(六十四)使用国产的RedPlayer播放器观看网络视频
android·ffmpeg·音视频·直播·流媒体