【发布时间】:2019-09-10 04:42:42
【问题描述】:
我想使用 Opus-48 编解码器捕获和解码 VoIP 对话。我正在使用 Wireshark 来捕获数据包。网上有免费的解码器吗?? Wireshark 不会保存双向对话,因为它适用于 G-729 等其他编码方案。
【问题讨论】:
我想使用 Opus-48 编解码器捕获和解码 VoIP 对话。我正在使用 Wireshark 来捕获数据包。网上有免费的解码器吗?? Wireshark 不会保存双向对话,因为它适用于 G-729 等其他编码方案。
【问题讨论】:
你有两个选择。直接使用 libopus 库,或者将您的 RTP 数据包转换为 Ogg Opus 文件,然后使用任何支持 Opus 的播放器(Firefox、Chrome、VLC...)来播放 Ogg 文件。在所有情况下,您都应该从http://opus-codec.org/开始
【讨论】:
在此处使用 python 脚本解码 opus RTP pcap https://github.com/kamanashisroy/opus_stream_tool
一旦我们有了 pcap,我们就可以在流中选择一个 UDP 数据包,然后通过udp.srcport/udp.dstport 或rtp.ssrc 将其过滤掉。
现在,我们可以将 pcap 文件转换为 hex-dump。
tshark -x -r in.pcap -Y "udp.srcport == myport" | cut -d " " -f 1-20 > tmp.txt
终于可以使用hex_to_opus工具来记录ogg编码的opus文件了。
hex_to_opus.py -x tmp.txt --recordfile out.opus --rtpoffset 42
通常如果是 IPv4,rtp-offset 为 42。请从数据包的 wireshark 描述中找到 udp 有效负载的开始。
【讨论】:
hex_to_opus.py 假设 Opus 有效负载类型为 111,尽管 Opus 是动态 PT,如果您的会话使用另一个 PT 编号,您将无法读取它。幸运的是,有一个 --payloadtype 选项,您可以在其中指定会话的 PT(我见过的常见值是 107 和 120,但使用wireshark 很容易找到)。