Sip pjsua自定义sdp
我正在使用pjsua创建简单的SIPUA。我需要在传出的邀请请求中插入自定义正文(SDP)。据我所知,pjsua不支持定制SDP,我需要使用更多的低级API来实现。但现在我必须找到任何粗鲁的技巧/黑客/修补程序来在pjsua生成的邀请中插入自定义SDPSip pjsua自定义sdp,sip,pjsip,sdp,Sip,Pjsip,Sdp,我正在使用pjsua创建简单的SIPUA。我需要在传出的邀请请求中插入自定义正文(SDP)。据我所知,pjsua不支持定制SDP,我需要使用更多的低级API来实现。但现在我必须找到任何粗鲁的技巧/黑客/修补程序来在pjsua生成的邀请中插入自定义SDP 这就是问题所在:我该如何做呢?看似简单的解决方案是修改pjsua源代码。关键是在传入和传出呼叫的代码路径上,使用自定义SDP创建一个pjmedia_会话。你想看看pjsua\u call\u make\u call(),pjsua\u call\
这就是问题所在:我该如何做呢?看似简单的解决方案是修改pjsua源代码。关键是在传入和传出呼叫的代码路径上,使用自定义SDP创建一个
pjmedia_会话。你想看看pjsua\u call\u make\u call()
,pjsua\u call\u answer()
和pjsua\u call\u get\u media\u session()
。如果我没记错的话,SDP在接到电话之前不会被处理
您仍然需要学习核心pjsip库。毕竟,pjsua使用它。此解决方案并不简单,但符合黑客的一般定义。:) 您有不同的方法来修改请求的SDP正文:
您可以使用pjsip_endpt_create_request构建自定义请求,并直接使用pjsip_tx_数据结构。在这种情况下,您可以使用pjsip_msg_body_create(http://www.pjsip.org/pjsip/docs/html/group_PJSIP_MSG__BODY.htm)通过将类型、子类型和自定义主体作为pj_stru_t指针传递。此函数的响应应存储在pjsip_tx_数据的字段msg.body中
另一方面,如果您使用的是pjsua_msg_数据结构,并且您不介意处理多个实体,那么您可以将来自pjsip_msg_body_create的响应存储到
pjsip_multipart_part(具体到body字段中),并将其添加到pjsup_msg_数据对象内的multipart_parts字段中
您可以使用pjsua的on_create_media_transport回调创建自己的媒体传输。这有点复杂,但到目前为止,更灵活。您将能够定义几个与传输相关的回调(send_rtp、send_rtcp等),如果我没记错的话,其中一个调用SDP body encoding,允许您修改或设置自己的回调
希望这会有所帮助。如果您使用PJSUA2,您可以使用onCallSdpCreated()和on_call_sdp_created()来设置自定义sdp。谢谢,这正是我在这里等待答案时所做的事情)并且它可以工作。@Doob pjmedia_Session似乎在pjsip 2.0中不可用