wireshark提取視頻數(shù)據(jù)之RTP包中提取H264和H265
1 背景
在流媒體相關(guān)問題分析時,抓包分析是非常重要的手段,比如播放有碼流無圖像、流媒體協(xié)議對接問題、碼流花屏卡頓等問題,很多問題都可以通過抓包然后分析包數(shù)據(jù)來定位出問題,抓包最常用的工具是wireshark,其能從數(shù)據(jù)鏈路層、IP層、傳輸層、應(yīng)用層等各層進(jìn)行分析,支持多種協(xié)議,具體用法可百度。本文主要介紹抓包分析的一種場景,怎么通過wireshark從rtp包中把視頻的原始數(shù)據(jù)提取出來,通過對原始視頻流的分析可以知道視頻流編碼是否存在問題是否有丟幀等問題。
2 提取前工作
準(zhǔn)備工作如下:
- 下載wireshark并安裝:可百度下載并安裝
- 抓取RTP包:可通過ffmpeg模擬rtsp服務(wù)器,通過vlc申請視頻,并通過wireshark抓取rtp視頻流包,也可關(guān)注公眾號壹零倉,發(fā)送視頻流分析的消息,獲取已經(jīng)抓好的數(shù)據(jù)包(視頻流分析->wireshark數(shù)據(jù)包:h264_rtsp_over_udp.pcapng和h265_rtsp_over_udp.pcapng)
- 下載wireshark插件:可關(guān)注公眾號壹零倉,發(fā)送視頻流分析的消息,獲取(視頻流分析工具->wiresharkplugins.zip)
本文主要描述如何從rtp打包的H264或者H265中提取H264或H265裸流,rtp傳輸方式為UDP,后續(xù)文章會介紹如何從傳輸方式為TCP的rtp中提取視頻數(shù)據(jù)。
3 H264視頻從RTP包中提取步驟
H264視頻流提取步驟如下:
-
下載并安裝wireshark,可下載最新版本,
下載地址 -
解壓wiresharkplugins.zip壓縮包,把壓縮包中的兩個插件放到wireshark安裝目錄下的plugins目錄下,如果已打開wireshark,需要重啟wireshark,路徑如下所示:
-
使用wireshark打開h264_rtsp_over_udp.pcapng的抓包文件,也可使自己抓的視頻流的包文件,打開后選擇要提取的視頻流rtp包,右鍵->follow->UDP stream,關(guān)閉當(dāng)前流詳情頁面,過濾掉其他的無關(guān)包,只選取此路視頻的包。
-
在包數(shù)據(jù)上右鍵->decode as…,在current屬性列表中選擇rtp,解碼成rtp包,最新版應(yīng)該會自動識別,如果未視頻成rtp可通過此步驟解碼,此時包的協(xié)議類型未rtp,可以看到其payload type為96
-
選擇菜單Edit->Preferences,打開首選項,左側(cè)菜單列表選擇Protocols->H.264,這里抓包的視頻編碼是H.264,fu-a編碼的方式,根據(jù)上一步驟獲取的PT為96,H.264 dynamic payload types 填寫96,然后點擊OK,這里wireshark應(yīng)該會把rtp解析成H.264格式,如果以前已經(jīng)配置了96,但是協(xié)議還是沒有變成H.264的格式,可通過先配置成其他值,然后再改成96來觸發(fā)FU-A的解碼,這可能是wireshark的一個bug。
-
當(dāng)Protocol變成H264,Info中FU-A時,即可通過插件進(jìn)行提取,選擇菜單Tools->Video->Export H264彈出導(dǎo)出彈窗,點擊Export All,即可導(dǎo)出H264裸流,點擊Browse可打開導(dǎo)出文件夾,點擊Play 1可直接播放裸流。
-
裸流導(dǎo)出后,可通過vlc直接播放,看是否正常,也可通過Elecard StreamEye Tools分析編碼信息及流信息。
4 H265視頻從RTP包中提取步驟
H265視頻提取與H264提取類似,用wireshark打開h265_rtsp_over_udp.pcapng,選擇rtp的一路視頻后通過右鍵->follow->UDP stream,過濾掉其他包數(shù)據(jù),然后通過右鍵->decode as…解碼成RTP,此時獲取到rtp的 payload type,這里也是96,之后步驟略有不同,如下:文章來源:http://www.zghlxwxcb.cn/news/detail-787605.html
- 選擇菜單Edit->Preferences,打開首選項,左側(cè)菜單列表選擇Protocols->H.265,根據(jù)上一步驟獲取的PT為96,H.265 dynamic payload types 填寫96,然后點擊OK,這里wireshark應(yīng)該會把rtp解析成H265格式,如果以前已經(jīng)配置了96,但是協(xié)議還是沒有變成H265的格式,可通過先配置成其他值,然后再改成96來觸發(fā)FU-A的解碼。
- 選擇菜單Tools->Video->Export H265彈出導(dǎo)出彈窗,點擊Export All,即可導(dǎo)出H265裸流,點擊Browse可打開導(dǎo)出文件夾,點擊Play 1可直接播放裸流。
- 裸流導(dǎo)出后,可通過vlc直接播放,看是否正常,也可通過Elecard-HEVC-Analyzer分析編碼信息及流信息
5 后記
后續(xù)文章會介紹下如何從rtp流中提取PS流,如何從RTP over TCP中提取H264/H265裸流
相關(guān)文章、RTP相關(guān)知識、工具及抓包,可注公眾號壹零倉,發(fā)送視頻流分析、rtp等消息獲取文章來源地址http://www.zghlxwxcb.cn/news/detail-787605.html
到了這里,關(guān)于wireshark提取視頻數(shù)據(jù)之RTP包中提取H264和H265的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!