TSINGSEE青犀视频云-边-端三体协同的设备端RTMP推流摄像头,可以结合EasyDSS视频直播点播平台来使用,能够将摄像头推送上来的RTMP协议,进行互联网级的分发。
在此过程我们可以通过wireshark包来抓取RTMP协议包,保存传输的h264,通过分析工具确认传输的h264是否存在问题。本文我们将和大家分享一下如何通过wireshark抓包RTMP协议,保存视频流为h264文件。
首先就是进行wireshark抓包,通过wireshark抓包可以看到如下内容:
随后我们查看Video Data数据内容,如下图:
根据RTMP协议,可以获取到SPS以及PPS内容,分别保存SPS和PPS源数据。
选中Video data,右击并选中“显示分组字节”后,系统会出现如下对话框
在对话框底部选择原始数据,根据上面分析,选择SPS或者PPS的内容进行保存。获取到SPS,PPS后,需要获取IDR帧
同SPS一样,保存IDR帧数据。
因为h264的NALU和NALU之间是由00 00 01(也可以是00 00 00 01)分隔开,所以组成h264之后的格式为 00 00 00 01 SPS 00 00 00 01 PPS 00 00 00 01 单元访问分隔符 00 00 00 01 SEI 00 00 00 01 IDR 00 00 00 01 P …
注:以上数据分隔符和SEI不是必须的。
根据我们抓包的数据,可以把SPS,PPS,IDR帧数据包通过00 00 00 01组合起来,然后通过h264分析工具确认h264文件是否正常。
合成后的文件命名为camer.h264,使用Elecard StreamEye Tools 打开camer.h264文件,即可看到如下图的文件内容。
可以看到当前保存的IDR帧可以正常打开显示图像,可以确认当前RTMP起始传输正常。后面如果出现RTMP视频流的异常,则可以通过以上抓包保存成h264文件进行分析。