终极方法,pjsip发起多方对讲出错Too many objects of the specified type (PJ_ETOOMANY)
http://blog.csdn.net/zhangjm_123/article/details/26727221
——————————————————————————————————————————————————————————————————————————————
Pjsip提供发起多方对讲功能,允许开发者通过setMaxCalls(int calls)方法设定要发起多少方对讲,最多不能超过32方。但也许很多人发现最多只能设置4方对讲,即使设置了10方对讲 setMaxCalls(10)也不起作用。原因是在我们编译pjsip的时候,pjsip官方在提供给我们的pjproject源代码中做了限制(可能 是其它原因吧),其中一个很重要的常量PJSUA_MAX_CALLS被设成了4,即最大呼叫数量为4.
我们只要修改一下pjproject\pjlib\include\pj\config_site_sample.h和pjproject\pjsip\src\pjsua-lib\pjsua_core.c源文件中的几行代码即可。
其中config_site_sample.h中这行代码中的4就是限定了发起多方对讲的最大值,所以只要把这个4改成你想要的值就行了。但最好不要超过32,官方文档是这样规定的,最好按照要求去做,否则可能会出现一些意想不到的错误。
- #define PJSUA_MAX_CALLS 4
在上面的config_site_sample.h源文件中出现多处#define PJSUA_MAX_CALLS 4 ,这可能是和不同的平台有关,反正如果你的程序不涉及到不同平台需要限定发起多方对讲的最大值的话,全部都设成同一个值就行了。如:设置最大发起对讲为16方,#define
PJSUA_MAX_CALLS 16。
另外,还需要修改一下pjsua_core.c文件:
- cfg->max_calls = ((PJSUA_MAX_CALLS) < 4) ? (PJSUA_MAX_CALLS) : 4;
把4改为你想要设定的值,如:cfg->max_calls = ((PJSUA_MAX_CALLS) < 16) ? (PJSUA_MAX_CALLS) : 16;
改完这两个文件之后,保存,重新编译一次pjsip。编译完成之后,setMaxCalls(int calls)方法就起作用了,但int calls传过去的参数不能大于你设定的最大值。
最新文章
- spring/spring boot/spring cloud开发总结
- Java MD5机密算法的使用
- python知识点总结
- Android : <;com.mobeta.android.dslv.DragSortListView-引用自定义控件包名错误
- Visual Studio 2010初学者的调试指南:Mastering Debugging in Visual Studio 2010 - A Beginner&#39;s Guide
- java内存溢出分析(二)
- 自定义php安装(2)—mysql安装和php整合
- win 7 64位如何安装erdas 9.2
- 9.DataPager
- POJ3267 The Cow Lexicon(dp)
- 新建maven工程时pom.xml报错
- YII2 实现登录时候修改最新登录时间
- 自由的Debian
- 【tyvj P4879】骰子游戏
- poj1830:开关问题
- 基于Redis的简单分布式锁的原理
- 将DOS格式的shell脚本转为UNIX格式
- 单片机pc指针
- 【进阶修炼】&mdash;&mdash;改善C#程序质量(3)
- 启动 Eclipse 报错 “An internal error occurred during: ";Initializing Java Tooling";. java.lang.NullPointerException”