0

pjsip を使用してアプリケーションを作成しており、アプリケーション固有の RTCP パケットを受信する必要があります。pjmedia_rtcp_rx_rtcp(in )の実装を見ていpjmedia/src/pjmedia/rtcp.cますが、特定の RTCP パケットのみを処理しているようで、アプリケーション固有のタイプのケースはありません。不明なパケット タイプの場合は、"Received unknown RTCP packet"診断メッセージが生成されます。

を使用して、受信した RTCP パケット用の独自のハンドラーをインストールできるようpjmedia_transport_attachです。ただし、これは、アプリケーション固有のものだけでなく、受信したすべてのRTCP パケットに対して呼び出されます。[アプリ固有のパケットでない場合は、前のハンドラーを呼び出すことができるかもしれません。これについては、さらに調査する必要があります。]

アプリケーション固有の RTCP パケットで pjsip コールバックを呼び出すことは可能ですか? そうでない場合、pjsip を使用している間にそのような RTCP パケットを処理するにはどうすればよいですか?

4

1 に答える 1

3

pjsip はアプリケーション固有の RTCP パケットを直接サポートしていませんが、受信したすべての RTCP パケットをキャプチャし、アプリケーション固有のものに作用する方法があります。

最初のステップは、ストリームとネットワーク トランスポート (UDP) の間にあるメディア トランスポート アダプターを作成することです。コールバックでこれらのいずれかを作成してアタッチできon_create_media_transportます。

次に、コールバックの実装で、attachRTPpjmedia_transport_attach()および RTCP 受信用に独自のコールバック関数を渡して呼び出し、コールバック引数で要求された元のコールバックを保存します。正確な詳細は、transport_adapter_sample.c(関数を参照transport_attach) にあります。

最後に、RTCP コールバックの実装 ( )transport_rtcp_cbtransport_adapter_sample.c、受信した RTCP パケットを元のコールバックに渡す前に、必要なことを何でも行うことができます。

于 2014-03-10T21:34:54.293 に答える