Tuesday, May 4, 2010

利用 Wireshark 進一步分析 RTP 中的 H264 (Mpeg4)

通常我們抓了一段 RTSP/RTP 封包後,了不起做個 Decode As … RTP 就結束了,無法進一步解析 RTP payload。

但是其實 Wireshark 有一個特異功能可以進一步解析 RTP 中的 H264 (Mpeg4),

只要在 Edit -> Preferences… -> Protocols -> H264 , H264 dynamic payload type : 填入 96 (也就是 RTSP Describe 內的 m=video xx RTP/AVP 96).

就可以看到 H264 Stream 的部分欄位。在RTP封包中點選有 Marker bit 或是一般封包就可以看到。

在下面可以看到 FU Identifier 以及 FU Header,按照原本 TPL 的程式判斷 nal == 67 來解析 s-property,在這邊就是 FU Identified 的值,

對照 [RFC 3984], $5.3.  NAL Unit Octet Usage 有進一步的說明各欄位的意義。

 

 

cid:image002.jpg@01CAEC5D.C98E72B0cid:image006.jpg@01CAEC5D.C98E72B0 

 

除此之外還有一個隱藏功能,請嘗試尋找最後一個 P frame ,也就是一輪 GOV 裡的最後一個 frame,點選該 frame 的最後一個 packet (Marker bit)

可以看到更多的資料。

cid:image008.jpg@01CAEC5D.C98E72B0

 

RTP Mpeg4 Stream ,選擇 Edit -> Preferences … -> Protocols -> MP4V-ES MP4V-ES dynamic payload type : 96

記得將 H264 dynamic payload type 0 ,不然應該是會有衝突。

packets 中點選 P frame 第一個 packet 可以看到一點點資料,點選 I frame 第一個 packet 可以看到較多欄位。

cid:image010.jpg@01CAEC5D.C98E72B0

 

Regards,

Skyter

 


No comments: