如何从pjsua2中的SDP主体获取媒体属性?

问题描述 投票:0回答:1

是否有任何方法可以通过回调函数或与PJSUA2-library类似的方法来获取SDP主体中的media属性?

我正在寻找一种方法来获取在SIP INVITE请求中发送的远程媒体端口和IP地址。

我知道如何为呼入呼叫注册回调,但是afaik,该回调不包含有关远程方的任何信息。

sip voip pjsip sdp pjsua2
1个回答
0
投票

当然,有一种方法可以做到这一点。例如在on_call_media_state回调中:

  1. 包括pjsua_internal头文件:#include <pjsua-lib/pjsua_internal.h>
  2. 从回调的参数中使用call_id获取pjsua_call结构指针:pjsua_call *call = &pjsua_var.calls[call_id];
  3. 现在您已经可以读取当前的本地和远程SDP:

    const pjmedia_sdp_session *remote_sdp;
    const pjmedia_sdp_session *local_sdp;
    pj_status_t status = pjmedia_sdp_neg_get_active_remote(call->inv->neg, &remote_sdp);
    pj_status_t status = pjmedia_sdp_neg_get_active_local(call->inv->neg, &local_sdp);
    for (int i = 0; i < remote_sdp->media_count; i++) {
        // structure with access to SDP m values
        pjmedia_sdp_media *m = remote_sdp->media[i];
    }
    

我没有运行此代码,但它应该可以工作。

希望对您有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.