【问题标题】:Does pjsip support application-specific RTCP packets?pjsip 是否支持特定于应用程序的 RTCP 数据包?
【发布时间】:2014-04-05 09:38:25
【问题描述】:

我正在使用 pjsip 编写应用程序,我需要接收特定于应用程序的 RTCP 数据包。我正在查看pjmedia_rtcp_rx_rtcp (在pjmedia/src/pjmedia/rtcp.c 中)的实现,它似乎只处理某些RTCP 数据包并且没有针对特定应用类型的案例。如果数据包类型未知,它只会生成"Received unknown RTCP packet" 诊断消息。

看起来我可以使用pjmedia_transport_attach 为接收到的 RTCP 数据包安装自己的处理程序。但是,这将在 所有 接收到的 RTCP 数据包中调用,而不仅仅是针对特定应用程序的数据包。 [如果不是特定于应用程序的数据包,也许我可以调用以前的处理程序,这需要进一步调查。]

是否可以在特定于应用程序的 RTCP 数据包上使 pjsip 调用回调?如果没有,我如何在仍然使用 pjsip 的同时处理此类 RTCP 数据包?

【问题讨论】:

    标签: pjsip rtcp


    【解决方案1】:

    虽然 pjsip 不直接支持特定于应用程序的 RTCP 数据包,但有一种方法可以捕获所有接收到的 RTCP 数据包,并对那些特定于应用程序的数据包采取行动。

    第一步是创建一个Media Transport Adapter,它位于流和网络传输 (UDP) 之间。您可以在 on_create_media_transport 回调中创建并附加其中之一。

    接下来,在您的attach 回调实现中,调用pjmedia_transport_attach() 传递您自己的用于RTP 和RTCP 接收的回调函数,保存回调参数中请求的原始回调。可以在transport_adapter_sample.c 中找到确切的详细信息(请参阅函数transport_attach)。

    最后,RTCP 回调的实现(transport_adapter_sample.c 中的transport_rtcp_cb)可以在将接收到的 RTCP 数据包传递给原始回调之前做任何它想做的事情。

    【讨论】:

      猜你喜欢
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多