【发布时间】:2019-12-27 00:33:48
【问题描述】:
我编写了一个从网络实时获取 SIP 数据包的程序,我想使用数据包中嵌入的 SDP 信息来捕获来自两个 VOIP 软电话的音频对话。
一旦我从 RTP 协议中检索到二进制数据,我应该如何将其转换为声音文件?
首选c++。
【问题讨论】:
-
您好,新的贡献者!很高兴认识你! SDP 是 Session Description ,这意味着它描述了您正在查看的数据类型,对于音频数据,最好查看 RTP 或 SRTP(实时传输协议/安全实时传输协议)。所以从 SDP 你可以得到如何从 RTP 读取数据,比如网络加密。为了帮助你更多,我需要一个stackoverflow.com/help/minimal-reproducible-example
-
没错,举个例子会有很大帮助。关于您的问题,这取决于您接收的音频数据的类型,SDP 应描述类型和其他信息,如采样率、样本大小等。确定音频类型后,您需要遵循 RTP 规范来形成帧出 RTP 数据包。
-
您好,感谢您的友好回复。我会尽快提供一些实际代码作为示例。解析来自网络的 sip 数据包的类非常大,所以我将尝试总结一下:它使用正则表达式从数据包中提取所有信息,因此获取所需的 rtp 信息将没有问题。我计划将 rtp 端口输入嗅探器(我正在使用 libtins 库)。然后,这个嗅探器将为我提供一个应该包含音频交换的字节缓冲区,至少我是这么认为的,所以我需要把它变成一个音频文件。
-
如果我已经可以解析 sdp 数据包中的信息并获得采样率、大小和其他参数(不确定是哪个,我的信号处理技能有点笨),我该怎么做将该信息与字节缓冲区一起转换为我可以收听的内容。
标签: audio voip rtp sdp jain-sip