使用ogg容器从RTP数据包封装提取的opus有效负载的实现

时间:2015-05-22 02:16:15

标签: rtp ogg opus

我们有捕获的pcap文件,其中包括每个rfc6716的RTP opus有效负载,现在我们可以切断RTP头并提取opus有效负载,我们希望将有效负载封装到每个规范https://tools.ietf.org/html/draft-ietf-codec-oggopus-07的ogg opus(Ogg封装)对于Opus音频编解码器)并发送出去,以便VLC可以播放捕获的opus,我们不想保存到ogg文件然后让VLC播放,我们会在一个数据包发送后直接将ogg opus发送到VLC封装,任何具有引用的封装实现的人,或者我可以参考的第三方库?

2 个答案:

答案 0 :(得分:2)

可以使用libpcap库读取数据包,然后使用libogg库封装在Ogg中。在opusrtp包中有一个名为opus-tools的示例程序,它可以使用libpcap在回送接口上嗅探Opus RTP数据包并将它们写入Ogg。您可能希望执行类似的操作,但如果要从pcap保存文件中读取,请将pcap_open_live()更改为pcap_open_offline(),并将来自libogg的Ogg页面写入套接字而不是文件。同时将OPUS_PAYLOAD_TYPE定义为您要查找的RTP有效内容类型。

答案 1 :(得分:0)

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

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

I have the modified opusrtp in a fork on github

您可以使用类似的东西 ./opusrtp --extract PCAPFILE

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