首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pjsua自定义sdp

pjsua自定义sdp
EN

Stack Overflow用户
提问于 2012-08-09 17:06:31
回答 3查看 3.4K关注 0票数 1

我正在使用pjsua创建简单的SIP UA。我需要在传出的INVITE请求中插入自定义正文(SDP)。据我所知,pjsua不支持自定义SDP,我需要使用更多的底层API来实现。但现在我必须找到任何粗鲁的技巧/hack/hotfix来在pjsua生成的INVITE中插入自定义SDP。

所以这就是问题所在:我该怎么做?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-11 09:52:19

看似简单的解决方案是修改pjsua源代码。关键是在传入和传出呼叫的代码路径上使用您的自定义SDP创建pjmedia_session。你想调查一下pjsua_call_make_call()pjsua_call_answer()pjsua_call_get_media_session()。如果我没记错,在应答呼叫之前不会处理SDP。

您仍然需要学习核心pjsip库。毕竟,pjsua使用它。这个解决方案并不完全简单,但符合黑客的一般定义。:)

票数 1
EN

Stack Overflow用户

发布于 2012-08-13 02:18:38

修改请求的SDP body有不同的方式:

  1. 您可以使用pjsip_endpt_create_request构建自定义请求,并直接使用pjsip_tx_data结构。在这种情况下,您可以通过将类型、子类型和自定义主体作为pj_str_t指针传递来使用pjsip_msg_body_create (http://www.pjsip.org/pjsip/docs/html/group__MSG__BODY.htm)。此函数的响应应该存储在pjsip_tx_msg.body字段中。
  2. 另一方面,如果您使用的是pjsua_msg_data结构,并且不介意处理多个主体,则可以将来自pjsip_msg_body_create的响应存储到

pjsip_multipart_part (特别是在body字段中),并将其添加到pjsup_msg_data对象内的multipart_parts字段中。

  • 您可以使用pjsua的on_create_media_transport回调创建您自己的媒体传输。这有点复杂,但到目前为止,更灵活。您将能够定义几个与传输相关的回调(send_rtp、send_rtcp等)。如果我没记错的话,其中一个是在SDP body编码上调用的,允许你修改或设置它。

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2018-10-25 15:05:44

如果使用PJSUA2,可以使用onCallSdpCreated()和on_call_sdp_created()设置自定义sdp。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11880030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档