2011-05-20 211 views

回答

1

以pcap和(我假設)重播它是一件不平凡的事情;沒有我知道要做的軟件包。它可以完成,但需要非常瞭解SIP(我假設你使用的是SIP)和RTP。您還必須小心在正確的時間重播數據包,而不是儘可能快。

真正知道自己在做什麼的人可以在3-5天內編寫這樣的工具。

+0

謝謝傑斯將與SIPP,PACAP發揮檢查 – Swaminathan 2011-06-20 05:28:09

0

如果您只是想重播/收聽音頻,您可以使用wireshark將RTP負載保存在原始音頻文件中,然後您可以重新發送(或使用音頻編輯器收聽),但是如果您想重現確切的RTP/RTCP流更復雜

+0

它有點難以流,所有的人都這麼說好像只有..謝謝麥克 – Swaminathan 2011-06-20 05:27:16

1

有一個工具只是爲了這個目的,作爲SIPp sip測試包的一部分。 http://sipp.sourceforge.net/doc/reference.html#PCAP+Play

(免責聲明:我從來沒有使用過它自己,雖然我沒有使用SIPP本身,而且非常喜歡它)

+0

無論如何,我已經找到了。 。但必須嘗試此..謝謝dtr – Swaminathan 2011-06-20 05:26:35

0

我撞我的頭了一段時間這個問題,以及牆上...但是,我得到了一個解決方案。所以首先,確保你可以正確地把你的電話打到一個軟電話/電話......如果你能使這個連接正常,其餘的不是那麼糟糕。

這裏是我的命令行:

須藤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。 。如果你有興趣,看看我的博客(在我的個人資料中提到),瞭解如何設置這些東西的詳細信息。

8

如果我理解正確,你有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

相關問題