我们有捕获的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封装,任何具有引用的封装实现的人,或者我可以参考的第三方库?
答案 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
,然后您可以根据需要进行转换。