7

我们有捕获的 pcap 文件,其中包括每个 rfc6716 的 RTP opus 有效负载,现在我们可以切断 RTP 标头并提取 opus 有效负载,我们希望按照规范将有效负载封装到 ogg opus https://datatracker.ietf.org/doc /html/draft-ietf-codec-oggopus-07 (Ogg Encapsulation for the Opus Audio Codec) 并发送出去,以便 VLC 可以播放捕获的 opus,我们不想保存到 ogg 文件然后让 VLC 播放,一旦封装了一个数据包,我们将直接将ogg opus发送到VLC,任何有封装参考实现的人,或者我可以参考的第3方库?

4

2 回答 2

2

可以使用libpcap库读取数据包,然后使用libogg库将其封装在 Ogg 中。opusrtpopus-tools包中调用了一个示例程序,它可以使用 libpcap 在环回接口上嗅探 Opus RTP 数据包并将它们写入 Ogg。您可能想做类似的事情,但是如果您想从 pcap 保存文件中读取,并将 Ogg 页面从 libogg 写入套接字而不是文件,请将其更改pcap_open_live()为类似的内容。pcap_open_offline()还定义OPUS_PAYLOAD_TYPE为您要查找的 RTP 有效负载类型。

于 2015-05-22T03:50:49.923 回答
0

我有类似的需求,按照这个答案的建议,我编写了一个集成opusrtp,可以接收 pcap 文件作为输入,然后从中生成 .opus。

要点实际上是使用pcap_open_offline()而不是pcap_open_live(),设置正确的有效负载类型,以及一些其他细节以适应输入文件格式。

我在 github 的一个 fork 中有修改后的 opusrtp

您可以将它与类似的东西一起使用 ./opusrtp --extract PCAPFILE

它生成rtpdump.opus,然后您可以根据需要对其进行转换。

于 2016-02-03T19:09:23.977 回答