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

2024-04-02

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


如果我理解正确的话,你有 pcap,但你想从他们那里得到 RTP 吗?

Wireshark 用户界面

您可以使用 Wireshark 的 UI 通过菜单轻松地从 pcap 获取 RTP:电话/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 值并说“将它们全部查找为‘有效负载’”

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://en.wikipedia.org/wiki/Real-time_Transport_Protocol

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 pcap 文件流式传输到 RTP/RTCP 流? 的相关文章

  • Scapy 和 rdpcap 函数

    我在用着rdpcapScapy 的函数读取 PCAP 文件 我还使用中描述的模块Scapy 中 HTTP 支持的链接 http blog sbarbeau fr 2011 06 http support in scapy html在我的例子
  • 使用 TcpClient 和反应式扩展从 Stream 读取连续字节流

    考虑以下代码 internal class Program private static void Main string args var client new TcpClient client ConnectAsync localhos
  • 媒体播放器准备时的进度条

    我试图弄清楚如何在我的媒体播放器准备流文件时显示 正在加载 请稍候 的进度条 现在发生的事情是在歌曲准备好后显示 我怎样才能解决这个问题 mediaPlayerLoadingBar ProgressDialog show PlaylistA
  • 确定 std::istream 长度的更好方法?

    有没有比以下更好的方法来确定 std istream 的长度 std istream pcStream GetSomeStream pcStream gt seekg 0 ios end unsigned int uiLength pcSt
  • 将 ionic Zip 读取为内存流 C#

    我正在使用 Ionic Zip 通过以下方法将 ZipFile 提取到内存流 private MemoryStream GetReplayZipMemoryStream MemoryStream zipMs new MemoryStream
  • 获取 Youtube 上的游戏直播列表

    我正在尝试使用 Youtube 数据 API 来获取当前与游戏相关的直播流列表 但我找不到任何符合我需要的端点并返回每个频道的观看者数量 你们知道我该如何做到这一点吗 Thanks 游戏直播列表 videoCategoryId 20 是 游
  • 在java中将StreamWriter转换为OutputStream?

    我正在尝试使用 System setOut 将 System out 重定向到字符串 它需要一个 PrintStream 有什么方法可以将 StringWriter 转换为 Stream 以便我可以将其传递给 setOut 吗 你不能完全这
  • 使用 mkfifo 和传输流,这可能吗?

    我想执行一个 bash 脚本来执行以下操作 应用程序 ffmpeg 生成实时传输流 ts 文件 我需要处理这个实时流 执行解复用等 现在我知道这必须通过 FIFO 来完成 但这是我的任务 我需要重定向 ffmpeg 的输出以写入 fifo
  • 由于 lpcap,CPAN 安装 Net::Pcap 和 Packet 模块失败

    最近 我尝试通过 cpan 安装 perl 模块 Net Packet 和 Net Pcap 但它抱怨找不到 pcap 库 所以我正在搜索 cpan 在安装模块时是否接受外部 lib include 目录 但到目前为止还没有运气 looki
  • 来自 file_descriptor_source (boost::iostreams) 或文件的 istream

    我需要为我的程序输入做这样的事情 stream input if decompressed input open filepath else file descriptor popen decompressor filepath r inp
  • std::ifstream::read 或 std::ofstream::write 参数为零?

    是否完全可以 根据标准明确定义的行为 调用 mystream read buffer 0 or mystream write buffer 0 当然 什么也不会被读或写 我想知道在调用这两个函数之一之前是否必须测试提供的大小是否为空 是的
  • Java - 了解 PrintWriter 和刷新的需要

    好吧 首先我对所有代码表示歉意 但我觉得代码太多总比代码不够好 我正在制作一个简单的聊天客户端和印刷机 尤其是我正在努力解决的问题 使用现在的代码 它将与服务器类交互 并且完美地打印我想要打印的内容 但是 当我删除 writer flush
  • 如何检查文件是否有备用数据流?

    Delphi 有没有办法检查文件是否有任何备用数据流 看一下 Win32 APIFindFirstStreamW https msdn microsoft com en us library windows desktop aa364424
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • 如何使用 C# 上传文件并将其保存到 Stream 以便进一步预览?

    有没有办法上传文件 将其保存到流中 该流我会将其临时保存在会话中 最后 我将尝试预览此会话中的此上传文件 例如 pdf 文件 Thanks EDITED 这就是我想做的 HttpPostedFileBase hpf Request File
  • 用于实时传输协议的开源 .net C# 库

    net中有好的RTP开源库吗 我的目的是用于音频和视频同步问题并提高每秒帧数速率 我对 RTP 不太了解 但你可能想看看本文 http www codeproject com KB IP Using RTP in Multicasting
  • 无法使用 GetManifestResourceStream 找到嵌入资源

    我目前正在开发一个 Card DLL 其中我需要每张卡的图像文件作为嵌入资源 当前项目如下所示 注意 卡片图像 png 位于 Resources 文件夹中 我一直在尝试的代码几乎是我能找到的唯一代码 是这样的 Assembly assemb
  • 节点:使用 Nodemailer 的直通流

    我正在使用officegen 生成一个Word 文档 然后计划使用Nodemailer 和Sendgrid 将其附加到电子邮件中 Officegen 输出一个流 但我更愿意将其直接传递到附件 而不是在本地保存 Word 文档然后附加它 Ge
  • RTSP 设置后接收 RTP 数据包

    我正在尝试使用 Python 从 IP 摄像机流式传输 RTP 数据包 我能够使用 RTSP 协议发送描述 设置和播放命令 但是 我无法开始使用 RTP 传输实际视频流 这是代码 import socket def printrec rec
  • 这是 Box API v2 获取事件时的错误吗

    使用 BOX API v2 从 Box 获取事件时 我发现了一个奇怪的行为 我得到的场景如下 使用 box API v1 将 14 个文件上传到 box net 使用stream position now 获取事件 这给出了流位置 例如12

随机推荐