メタデータを含む pcap ファイルとして 3 つの異なるストリームをキャプチャしました。RTP/RTCP ストリームに戻すにはどうすればよいですか?
7 に答える
私の理解が正しければ、あなたは pcaps を持っていますが、それらから RTP を取得したいですか?
Wireshark UI
Wireshark の UI を使用して、メニューを介して pcap から RTP を簡単に取得できます: テレフォニー/RTP/ 次に、すべてのストリームを表示します...リストにあるストリームをクリックしてから、「分析」します。
ただし、これを自動化し、UI を避けたい場合は、tshark を使用できます。オンラインでいくつかのチュートリアルを見つけ、それらを使用して、pcap でオーディオ/rtp を自動的に再構築し、wav を作成してその wav のオーディオをテキストに転写するテスト ハーネスを作成しました。
Tshark で自動化
私はテスト通話を行っていて、録音された pcap を音声に変換したいと考えていました。これを行うために、RTP を pcap から取り除き、rtp ファイルを未加工のオーディオに変換してから、wav に変換しました。
自動化できるように、これはすべてコマンドラインを介して行います。だから本当に私はこれを行うシェルスクリプトを持っています:
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 ストリームの識別子です。ストリームが 1 つある場合、RTP ssrc 値は 1 つになります。すべての RTP.ssrc をキャプチャしてファイルに出力する必要があり、簡単に元のオーディオに戻すことができます。
sudo tshark -n -r /jenkins/userContent/sip_1call.pcap -R rtp -R "rtp.ssrc == $ssrc" -T fields -e rtp.payload | tee payloads
シェル スクリプトのこの時点で、記録された 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を使用しました:
sox -t raw -r 8000 -v 4 -c 1 -U /jenkins/userContent/sip_1call.raw /jenkins/userContent/sip_1call.wav
自動化フレームワークでさらにいくつかのことを行いました(音声をテキストに書き起こし、既知の文字列と比較するなど)...しかし、それはあなたの質問の範囲外です。
それが役立つことを願っています...
SSRc の詳細: http://en.wikipedia.org/wiki/Real-time_Transport_Protocol
私が使用している完全なシェル スクリプトの詳細: http://www.continuous-qa.com/2013/04/automated-verification-of-voip-audio.html
SIPp sip テスト パッケージの一部として、この目的のためだけのツールがあります。 http://sipp.sourceforge.net/doc/reference.html#PCAP+Play
(免責事項:SIPp自体は使用していましたが、自分で使用したことはなく、非常に気に入っていました)
pcap を取得して (私が推測するに) それを再生するのは簡単なことではありません。私が知っているパッケージはありません。実行できますが、SIP (SIP を使用していると仮定します) と RTP の両方について十分な知識が必要です。また、できるだけ速くではなく、適切なタイミングでパケットを再生するように注意する必要があります。
自分が何をしているかをよく知っている人なら、そのようなツールを 3 ~ 5 日で作成できます。
RTP/RTCP ストリームに戻す方法を教えてください。
目標を達成するために、rtpplay という名前の特定のツール (無料) があります: http://www.cs.columbia.edu/irt/software/rtptools/
これでもしばらく壁に頭をぶつけてしまいました…。そのため、最初に、ソフトフォン/電話に正しく通話できることを確認してください...その接続が正常に行われる場合、残りはそれほど悪くありません.
これが私のコマンドラインです:
sudo sipp -s [電話番号] [プロキシ/ソフトスイッチの IP] -sf /home/sipp-3.3/uac_pcap_g711.xml -m 2000 -mi [負荷を送信するコンピュータの IP] -d 1200 -trace_rtt -trace_err -stat_delimiter 、
したがって、私は独自のシナリオ ファイルを使用していますが、上記のパラメーターは問題なく動作するはずです。これが私がSIPPでやっていることです:
sudo: なぜ sudo なのですか? これを sudo しないと、オーディオ/メディアの送信に必要なソケットを作成できません。
mi: mi は、メディアを送信するための IP を指定します... ポートを指定する必要はありませんでした。
d: 一時停止に 1200 ミリ秒を追加しました
trace_rtt と trace_err: ログ ファイルとパフォーマンス レポートを出力します
stat_delimiter: デフォルトを変更します。に 、
とにかくこれは私のために働いた。
編集:
また、デフォルトのレート (10CPS) で 2000 コール用にこれを持っていることに注意してください...動作を確認できるように、今のところ -m 1 にすることをお勧めします。pcap オーディオを再生し、DTMF を送信する必要があります。
これを機能させた後、これをすべてJenkins CIにインポートし、Jenkinsジョブを介してsippを呼び出し、csv出力をビジュアルグラフに変換し、ロード中にtsharkキャプチャをいくつか実行します...すべてJenkinsを介して...興味のある方は、私のブログ (プロフィールに記載) をチェックして、設定方法の詳細を確認してください。
オーディオを再生/聞きたいだけの場合は、wireshark を使用して RTP ペイロードを生のオーディオ ファイルに保存し、それを再送信 (またはオーディオ エディタを使用して聞く) できますが、正確な RTP/ RTCP ストリームはより複雑です