從Wireshark封包檔擷取以RTP串流的RTSP影音資料

因為最近工作上要確認影音封包狀態,所以需要從Wireshark封包檔擷取RTSP的影音資料,再用播放器開起來確認是否正常。

不過遭遇了擷取出的檔案使用RTP作為串流格式,該檔案只有ffplay可以播放,vlc和Ubuntu內建的影音播放器皆無法播放,使用mediainfo也無法工作,什麼資訊都沒有。

抓出RTP Stream

首先把照網路上的操作把RTP串流給丟出來,不過這裡 https://wiki.wireshark.org/rtpdump 寫的是舊版的作法

Saving an RTP stream in Wireshark for use with rtpdump/rtpplay

  1. Statistics > RTP > Show all streams
  2. Now select the stream you are interested in.
  3. Save As

就算是新版說明文件,裡頭也沒有改說明,找了一陣子最後是用:

  1. 開啟擷取的封包檔
  2. 使用RTP Stream選取器
    工具列→Telephony→RTP→RTP Streams
    選擇你的串流,以圖中的為例是選payload欄位是MPEG-II的串流(第三個)

  3. 點擊Export按鈕,儲存成sniffer.rtpdump
    它預設是沒有副檔名,記得加上

建置RTPDump

由於舊版文件寫的RTPDeump下載位置 http://www.cs.columbia.edu/IRT/software/rtptools/  已經不提供服務,在新版說明文件有更新要從github下載程式碼來建


git clone https://github.com/irtlab/rtptools
cd rtptools
./configure
make

然後就可以在資料夾內得到rtpdump,可以用來處理wireshark擷取封包檔的rtp影音資料

用RTPDump擷取影音資料

指令如下

./rtpdump -F payload -f sniffer.rtpdump -o dump.raw

-F payload就是把rtp的payload擷取出來,就會是我們要的影音資料。

-f 指定輸入檔案

-o 指定輸出檔案


dump.raw就可以用多媒體播放器來播放了

ffplay dump.raw

cvlc dump.raw


mediainfo-gui dump.raw > info.txt


留言