PJSUA2 iOS项目:提升最大并发呼叫数的正确配置方式?
PJSUA2 iOS Swift项目修改最大呼叫数的正确操作
仅修改pjsip\src\pjsua-lib\pjsua_core.c中的cfg->max_calls = ((PJSUA_MAX_CALLS) < 400) ? (PJSUA_MAX_CALLS) : 400;这行代码完全不够,原因如下:
- 这行只是做了上限限制:如果
PJSUA_MAX_CALLS默认值小于400就用默认值,否则把上限设为400。但它根本没改变底层资源的分配限制,强行改这行只会导致后续创建呼叫时因资源不足失败。
你需要在config_site.h中针对性配置宏定义,不是所有宏都要设成400,按需调整即可:
#define PJSUA_MAX_CALLS 400:这是核心宏,直接定义PJSUA允许的最大呼叫数,必须设置。#define PJSUA_MAX_ACC 400:仅当你需要同时登录400个账号时才需要设置,否则用默认值即可。#define PJ_IOQUEUE_MAX_HANDLES 400:每个呼叫会占用IO队列句柄,这个值至少要大于等于PJSUA_MAX_CALLS,避免IO资源不足导致呼叫创建失败。#define __FD_SETSIZE 800:iOS系统的文件描述符集合大小限制,每个呼叫、账号都会占用fd,建议设为呼叫数的2倍,确保有足够余量。#define PJSUA_MAX_PLAYERS 400:只有当你需要给每个呼叫单独分配播放器(比如同时播放400路音频)时才需要,普通场景不用改默认值。
另外注意你的config_site.h配置顺序:
- 要把自定义的宏定义写在
#include <pj/config_site_sample.h>之前,否则你的定义会被头文件里的默认值覆盖。正确顺序示例:
#define PJ_CONFIG_IPHONE 1 #define PJSUA_MAX_CALLS 400 #define PJ_IOQUEUE_MAX_HANDLES 400 #define __FD_SETSIZE 800 // 其他按需添加的宏 #include <pj/config_site_sample.h>
内容的提问来源于stack exchange,提问作者BouncedBy
相关产品推荐
相关产品推荐

