音视频媒体
Linux 截取网络包并解析成H.264Linux里截取网络包并解析成H.264
前言
在分析媒体问题的时候,特别是涉及到网络媒体的时候,当网络对端的媒体显示异常的时候,我们需要定位到媒体问题是出现在本端编码,还是对端解码,这时候就需要抓取网络包进行分析,定界问题以便于后续分析。本文主要记录一下,如何通过tcpdump命令截取网络包,并解析成264的码流,播放并查看码流是否正常。
一、tcpdump获取码流
在Linux终端上运行
tcpdump -i eth0 host 10.120.180.* and 10.120.180.* -nn -s 1500 -w ./20211215.pcap
tcpdump:截包命令
-i eth0:指定网卡
host 10.120.180.* and 10.120.180.*:指定经过这两个IP主机的网络包
-nn:直接以 IP 及 port number 显示,而非主机名和服务名称
note:记得用ctrl+c停止截包
二、wireshark去网络包头
此时获取的码流封装形式为
eth:ethertype:ip:udp:rtp:h264
即码流经过了rtp封装,udp封装。
1.筛选rtp包
在wireshark的筛选框中输入如下命令,筛选端到端的rtp包
(ip.src==10.120.180.* && ip.dst==10.120.180.*) && rtp
2.筛选H264视频码流
电话->RTP->RTP流,查看数据最大的一个ssrc对应的type值,然后到编辑->首选项->protocol里面找到H264,将这个值设置为对应的type值
(ip.src==10.120.180.31 && ip.dst==10.120.180.156) && rtp && h264
使用上述指令,将H264码流包筛选出来,文件->导出特定分组,保存下来
三、去udp
1.pktDeal_265去udp
用pktDeal_265将上述保存下来的udp包解析成264码流。
2.wireshark去udp
如果在wireshark上嵌入一个插件h264extractor
h264extractor
在wireshark的安装路径找到init.lua,添加如下
dofile(DATA_DIR.."rtp_h264_extractor.lua")
重启软件,可以看到软件->工具处支持rtp导出h264码流
总结
提供截取码流,依次去网络头,然后获取264码流的方法