其他参考牛文:
https://blog.csdn.net/LS_ss123/article/details/105222953
https://blog.csdn.net/weixin_43360707/article/details/120975297
https://zhuanlan.zhihu.com/p/98533891
https://www.cnblogs.com/lynsen/p/15057825.html
在做GB28181视频接入的时候经常遇到信令交互失败或者无法正常播放视频的问题,这里介绍下LiveGBS GB28181国标视频平台播放失败或者信令不通时如何抓包分析:
1、第一步:抓包工具准备
1.1、Linux
使用 tcpdump 进行抓包,如果系统无此命令,自行安装
1.2、windows
下载安装 wireshark 进行抓包
2、第二步:找到设备出口ip
在LiveGBS国标视频平台国标设备菜单,设备列表页面中有出口IP这列
3、第三步:执行命令抓设备出口ip
3.1 Linux
在Linux系统中切换到root用户,执行下面的抓吧命令
tcpdump -i any "host 172.18.1.34" -w ttt.pcap
3.2 Windwos
在Windows中,就启动wireshark 添加过滤抓包
host 172.18.1.34
4、第四步:触发相关页面操作
4.1、如:更新通道操作
4.2、如:查看通道播放
5、第五步:停止抓包
等一段时间停止抓包,或是等到返回了提示
5.1、Linux
Ctrl+C 结束抓包,抓包文件就在执行命令的目录下面
5.2、Windows
点击红色按钮停止,文件菜单可以另存抓包到文件
6、第六步:查看抓包
抓包文件可以用wireshark打开,然后分析数据
1、在服务器/客户端抓包,方法不赘述了,拷到装了wireshark的电脑中
2、打开抓包,先在过滤器中过滤“SIP”包,找到自己要分析的IP的包,右键→追踪流→UDP(信令一般都走UDP,如果是TCP就要FOLLOW TCP)
3、在FOLLOW的报文中,CTRL+F搜索相关关键字。一般抓包都会控制尽量少干扰项,如一个抓包中只有需要的预览过程等。这里可以过滤国标ID
报文中:m=video 16116 TCP/RTP/AVP 126 125 99 34 98 97 96,”video“后面的“16116”是收流TCP端口,这篇文章只分析UDP,由于手上的抓包没有UDP INVITE信令,做个类比
4、假如找到了端口,过滤器中用“udp.port== 查到的端口”,过滤到以下的包
任意选一个udp包,右键→decode as,当前那里选择RTP,然后这些UDP包就解码为RTP了,接下来进行RTP分析
5、电话→RTP→流分析,英文版是找对应位置吧
6、这个界面可以看到包的信息,如丢包率等。这里的丢包率是62%,太大了,等下导出的视频可能无法播放或者很不理想,仅做个步骤示范
点“save”保存为音视频,我重命名为test.mp4,用VLC播放即可,这里的包丢包太大,视频根本无法播放
7、常用相关命令备忘
tcpdump -i eth0 host 192.168.1.100 -w ddgg.cap //抓取网卡名为:eht0,IP地址为:192.168.1.100 的包,并保存为ddgg.cap在当前目录
wireshark 包过滤
ip.addr==192.168.1.50 过滤IP
udp.port=30000 过滤端口