2023年11月27日发(作者:)

利⽤WireShark分析H264码流

背景:最近在参与⼀个ARM平台的⾳视频传输的项⽬,同事说已经是⾼清视频了,但是显⽰

模糊,显然不能达到⾼清要求,于是就想抓包分析⼀下。

Step 1:执⾏如下命令,在 ARM 平台上⽤ tcpdump 抓包并保存为 。

tcpdump –i eth0 –nn –w test

.cap

-i ⽹络接⼝,

-w

-nn:直接以 IP port number 显⽰,⽽⾮主机名和服务名称

如果你要将监听所得的封包资料储存下来,⽤这个参数就对了!后⾯接档名

tcp

du

m

p

然后启动我们的多媒体通信程序,抓取⼏秒的数据即可。

Step 2:⽤ WireShark ⼯具打开 ⽂件。

Step 3:右键点击 H264 的 UDP 包,选择“Decode as…”,选择 RTP,点击 OK 之后

就解析成 RTP 包了。把UDP 包解析成RTP/RTCP包。

Step 4:查看 RTP 包的 payload type,例如我们这⾥是102。

【Dynamic payload types which will be interpreted (理解)as H264; Values must

be in the range 96 - 127】

Step 5:然后在 WireShark ⼯具栏中选择 Edit –> preferences –> protocols –>

H264,把“H264 dynamic payload types”设成 102,点击 OK。把RTP Payload映

需要注意的是:

wireshark 1.0版本以上才⽀持H263和H264

Step 6:为⽅便查看,在 Filter 中输⼊“h264”过滤出 H264 数据包,如下。

Step 7:选择 SPS(Sequence Parameter Set)(序列参数集),展开 H.264 数据包,

找到pic_width_in_mbs_minus1pic_height_in_map_units_minus1

Step 8:因此可以算出实际分辨率,X = (21+1)*16 = 352,Y = (17+1)*16 = 288,显

然并不是⾼清视频。

实例1 使⽤wireshark抓包并检查丢包现象

(1)使⽤wireshark抓取所有UDP报⽂(这⾥假定RTP是基于UDP之上的)

(2)将抓取到的报⽂解析(解码)为RTP,如下图所⽰:

(3)分析报⽂(在报⽂较多且杂的情况下,可⽤excel导出数据查看),发现丢包:

Q、请教⼀下 我的序列包 为什么 不是按递增增长的 现在排序全是乱的 请问是什么原因引起

的 您知道吗? 现在遇到坎了 感谢 帮助