gpt4 book ai didi

stream - 如何将pcap文件流传输到RTP/RTCP流?

转载 作者:行者123 更新时间:2023-12-04 16:55:47 25 4
gpt4 key购买 nike

我已经捕获了三个不同的流作为带有元数据的pcap文件。我如何流回到RTP/RTCP流?

最佳答案

如果我理解正确,那么您就有了pcap,但是您想从中获取RTP吗?

Wireshark用户界面

您可以使用Wireshark的UI通过菜单轻松地从pcap中获取RTP:Telephony/RTP/然后显示所有流...单击其列出的流,然后“分析”。

但是,如果要自动执行此操作并避免使用UI,则可以使用tshark。我在线上找到了几本教程,并用它们来构建测试工具,该工具可以自动在pcap上重建音频/rtp,然后制作WAV并将该WAV上的音频转录为文本。

与Tshark一起自动化

我正在进行测试通话,并想将录制的pcap转换为音频。为此,我从pcap中剥离了RTP,然后将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值,然后说“将它们全部查找为'payload'”
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

我正在使用的完整Shell脚本的更多详细信息:
http://www.continuous-qa.com/2013/04/automated-verification-of-voip-audio.html

关于stream - 如何将pcap文件流传输到RTP/RTCP流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6073868/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com