我已經捕獲了三個不同的流作爲具有元數據的pcap文件。我怎樣才能流回到RTP/RTCP流?如何將pcap文件傳輸到RTP/RTCP流?
回答
以pcap和(我假設)重播它是一件不平凡的事情;沒有我知道要做的軟件包。它可以完成,但需要非常瞭解SIP(我假設你使用的是SIP)和RTP。您還必須小心在正確的時間重播數據包,而不是儘可能快。
真正知道自己在做什麼的人可以在3-5天內編寫這樣的工具。
如果您只是想重播/收聽音頻,您可以使用wireshark將RTP負載保存在原始音頻文件中,然後您可以重新發送(或使用音頻編輯器收聽),但是如果您想重現確切的RTP/RTCP流更復雜
它有點難以流,所有的人都這麼說好像只有..謝謝麥克 – Swaminathan 2011-06-20 05:27:16
有一個工具只是爲了這個目的,作爲SIPp sip測試包的一部分。 http://sipp.sourceforge.net/doc/reference.html#PCAP+Play
(免責聲明:我從來沒有使用過它自己,雖然我沒有使用SIPP本身,而且非常喜歡它)
無論如何,我已經找到了。 。但必須嘗試此..謝謝dtr – Swaminathan 2011-06-20 05:26:35
如何流回到RTP/RTCP流。
爲了更好地實現你的目標是有特定的工具(免費)命名rtpplay:http://www.cs.columbia.edu/irt/software/rtptools/
我撞我的頭了一段時間這個問題,以及牆上...但是,我得到了一個解決方案。所以首先,確保你可以正確地把你的電話打到一個軟電話/電話......如果你能使這個連接正常,其餘的不是那麼糟糕。
這裏是我的命令行:
須藤SIPP -s [我的電話號碼] [我的代理/軟交換的IP] -sf /home/sipp-3.3/uac_pcap_g711.xml-M2000 -mi [IP我的電腦發送負載] -d 1200 -trace_rtt -trace_err -stat_delimiter,
所以我使用我自己的場景文件,但上面的參數應該適合你。這是我在用SIPP做的事情:
sudo:爲什麼sudo?如果你不這樣做,它不能創建發送音頻/媒體所需的套接字。
mi:mi指定發送媒體的IP ...我不需要指定端口。
d:我加了1200毫秒的暫停
trace_rtt和trace_err:我輸出的日誌文件和業績報告
stat_delimiter:我更改默認;到,
無論如何,這對我工作。
編輯:
另外請注意,我這個2000年的呼叫,在默認頻率(10CPS)......你可能要做出-m 1現在這樣就可以驗證它的工作原理。它應該播放pcap音頻,然後發送一個DTMF。
我得到這個工作後,我將這一切全部導入Jenkins CI,並通過Jenkins作業調用sipp,並將csv輸出轉換爲可視圖形,並在加載過程中進行一些tshark捕獲...全部通過Jenkins。 。如果你有興趣,看看我的博客(在我的個人資料中提到),瞭解如何設置這些東西的詳細信息。
如果我理解正確,你有pcaps,但你想從他們那裏得到RTP?
Wireshark的UI
你可以使用Wireshark的用戶界面很容易地從通過菜單PCAP採取RTP:電話/ RTP /然後顯示所有流...點擊流時,會列出,然後「analyize 「。
但是,如果您想自動執行此操作,並避免UI ...您可以使用tshark。我在網上找到了幾個教程,並使用它們來構建一個測試工具,它可以自動重建pcap上的audio/rtp,然後製作wav並將該wav上的音頻轉錄爲文本。
自動化與tshark的
我正在測試呼叫,並希望記錄到音頻轉換PCAP。爲此,我將RTP從pcap中剝離出來,然後將rtp文件轉換爲原始音頻,然後轉換爲wav。
我這樣做都是通過命令行來實現的,因此可以實現自動化。因此,其實我有一個shell腳本,做到這一點:
tshark -a duration:20 -w /jenkins/userContent/sip_1call.pcap
上面記載了20秒(通話的同時正在進行的持續時間)和數據包捕獲輸出數據包,sip_1call.pcap
ssrc=$(tshark -n -r /jenkins/userContent/sip_1call.pcap -R rtp -T fields -e rtp.ssrc -Eseparator=, | sort -u | awk 'FNR ==1 {print}')
我將變量ssrc設置爲使用tshark提取rtp ssrc值的操作。 ssrc是什麼,是RTP流的標識符。如果你有一個流,你會有一個RTP的ssrc值。您需要捕獲所有RTP.ssrc並將它們輸出到文件,並且可以很容易地再次變成原始音頻。
sudo tshark -n -r /jenkins/userContent/sip_1call.pcap -R rtp -R "rtp.ssrc == $ssrc" -T fields -e rtp.payload | tee payloads
此時我的shell腳本,我所記錄的PCAP再次運行tshark的,並相應採取SSRC值和說:「找到所有的人都爲‘有效載荷’」
for payload in `cat payloads`; do IFS=:; for byte in $payload; do printf "\\x$byte" >> /jenkins/userContent/sip_1call.raw; done; done
現在該腳本的設置那些RTP.ssrc到一個輸出文件,我打電話sip_1call.raw
對於我的目的,我也想給原始文件轉換爲WAV,所以我用襪:
sox -t raw -r 8000 -v 4 -c 1 -U /jenkins/userContent/sip_1call.raw /jenkins/userContent/sip_1call.wav
我在我的自動化框架中做了一些更多的東西(例如將音頻轉錄爲文本並與已知字符串進行比較)......但這超出了您的問題範圍。
我希望能幫到...
更多關於SSRC: http://www.continuous-qa.com/2013/04/automated-verification-of-voip-audio.html
你可以用這個簡單的免費工具重播所有捕獲的數據包(包括RTP)的:在我使用的是全shell腳本http://en.wikipedia.org/wiki/Real-time_Transport_Protocol
更多細節。
- 1. 如何從pcap文件流式傳輸組播(自動化)
- 2. 如何將文件流式傳輸到硬盤驅動器?
- 3. 如何將文件的內容流式傳輸到瀏覽器
- 4. 傳輸文件流
- 5. 如何將.frm文件傳輸到表?
- 6. 如何流式傳輸WAV文件?
- 7. 將遠程文件流式傳輸到文件對象
- 8. 從Windows 8的SavePicker將文件流式傳輸到文件
- 9. 如何將文本流式傳輸到IRC頻道
- 10. 如何將文本數據連續流式傳輸到servlet?
- 11. 將文件上傳控制文件名傳遞到文件流
- 12. 如何將文件上傳爲流?
- 13. 流式傳輸wav文件
- 14. ATM PCAP文件以太網PCAP文件
- 15. 如何將jquery數據從主文件傳輸到asp文件?
- 16. 如何將文件(PDF)傳輸到Hadoop文件系統
- 17. 如何將文件夾中的信息傳輸到文件?
- 18. 如何將程序輸出流式傳輸到wxpython listctrl?
- 19. C#通過串口將大文件流式傳輸到Arduino UNO
- 20. .NET - 將DataSet(XML數據)流式傳輸到ZIP文件?
- 21. 使用gstreamer將本地mpeg-ts文件流式傳輸到udp
- 22. 將文件流式傳輸到矢量<float> with copy + back_inserter
- 23. 將PulseAudio流式傳輸到文件(可能與GStreamer一起)
- 24. 將文件流式傳輸到Pylons中的HTTP響應中
- 25. PHP - 將文件從桌面流式傳輸到站點
- 26. 將非PCM WAV文件流式傳輸到SilverLight應用程序
- 27. 在.NET中,將數據從SQL流式傳輸到文件
- 28. 使用axvlcplugin將rtsp視頻流傳輸到文件
- 29. 將文件重定向到流式傳輸的URL
- 30. 如何將音頻文件從服務器流式傳輸到iphone?
謝謝傑斯將與SIPP,PACAP發揮檢查 – Swaminathan 2011-06-20 05:28:09