我使用 AMR 拨打 VoLTE 电话。我看到 AMR 数据包。右键单击并选择源作为过滤器。我看到所有传入的 AMR 数据包。接下来我去分析一个选择Decode as。设置归档为 RTP,当前设置为 AMR。我没问题,然后去电话。选择 RTP Streams,我看到显示持续时间为 18.12 的流。如果我选择 RTP 流分析,我会看到所有数据包。当我进入 Play Streams 时,我只收到一个数据包。如何保存并获取所有 RTP 数据包?
谢谢; 大卫
只能播放一包。我在网上读到,一旦获得 RTP,您就可以进入统计并保存。我在统计数据下没有看到这一点。
例如使用公开可用的 AMR-WB pcap:
mediaMin -cx86 -i codecs3-amr-wb.pcap -L -d0x0c11 -r20
将显示:
Sessions (hSession:ch:codec-bitrate[,ch...]) 0(grp owner):0:AMR-WB-23850 1:2:AMR-WB-23850
SSRCs (ch:ssrc) 0:0xf7050fb8 2:0x4417176a
并生成:
codecs3-amr-wb_merge.wav
codecs3-amr-wb_group.pcap
mediaMin 使用 RTP 自动检测和动态会话创建 来识别所有 RTP 流,包括编解码器类型、比特率、标头格式等,并生成单独或“合并”的 wav 文件,与 SDP 信息的存在(或正确性)无关
免责声明:我在创建 mediaTest 和 mediaMin 工具的公司工作
要在捕获和播放 AMR 数据包时保存和检索所有 RTP 数据包,您可以按照以下步骤操作:
- 捕获RTP数据包: 使用Wireshark等抓包工具来捕获RTP数据包。配置过滤器以捕获您感兴趣的特定 AMR 数据包。右键单击数据包,选择“解码为”,然后设置 RTP 字段和 AMR 解码的当前字段。
分析RTP流: 捕获数据包后,转到电话 -> RTP 流。查找具有所需持续时间的流。该流表示 RTP 数据包的序列。
保存RTP数据包: 在 Wireshark 中,“统计”菜单下没有直接选项来保存所有 RTP 数据包。但是,您可以将 RTP 数据包导出到 PCAP 文件以进行进一步分析和回放。以下是使用 Wireshark TShark 命令行工具的示例代码片段:
tshark -r capture_packets.pcap -Y "rtp" -w rtp_packets.pcap
检索并播放RTP数据包: 要检索并播放所有 RTP 数据包,您可以使用支持 AMR 格式的媒体播放器。以下是在 Python 中使用 GStreamer 库的示例代码片段:
导入子流程
pcap_file = 'rtp_packets.pcap' 输出文件 = 'output.amr'
// 将RTP数据包转换为AMR格式 subprocess.run(['tshark', '-r', pcap_file, '-T', '字段', '-e', 'rtp.payload', '|', 'amrnb-解码器', '>', 输出文件], shell=True)
// 播放AMR音频文件 subprocess.run(['aplay', output_file])