使用PJSUA2调用makeCall时出现Error 450001错误求助
解决PJSUA2调用makeCall时的450001错误
可能的原因及修复方案
1. 目标URI格式不合法
PJSUA2的makeCall方法要求传入标准SIP URI格式的目标地址,而非单纯的用户名或别名。你当前传入的"destination"不符合要求,需改为完整格式:
// 示例:替换为实际的SIP地址,比如sip:被叫号码@服务器域名/IP call.makeCall("sip:1000@your-sip-server.com", prm);
2. 完善CallOpParam参数配置
初始化CallOpParam(true)后,可补充媒体相关配置,确保音频通道正常初始化:
CallOpParam prm = new CallOpParam(true); // 显式启用音频媒体 prm.audioCount = 1; prm.videoCount = 0; // 不需要视频时设置为0
3. 确认账户注册状态
即使连接正常,仍需确保账户已成功注册到SIP服务器,可在创建Call对象前添加检查:
if (!acc.isValid()) { MessageBox.Show("账户未注册或无效"); return; } MyCall call = new MyCall(acc, -1); // 后续调用代码...
4. 进一步排查错误
错误码450001属于PJSUA自定义外部错误,可通过以下方式定位细节:
- 启用PJSUA详细日志,查看底层C++层的具体错误信息:
// 初始化Endpoint时配置日志 EpConfig epConfig = new EpConfig(); epConfig.logConfig.level = 5; // 5为详细日志级别 epConfig.logConfig.consoleLevel = 5; Endpoint ep = new Endpoint(); ep.libInit(epConfig); - 查看SIP服务器日志,确认是否收到呼叫请求及服务器返回的具体错误。
修正后的完整调用示例
// 检查账户有效性 if (!acc.isValid()) { MessageBox.Show("账户无效,请先注册"); return; } MyCall call = new MyCall(acc, -1); CallOpParam prm = new CallOpParam(true); prm.audioCount = 1; prm.videoCount = 0; // 使用标准SIP URI发起呼叫 call.makeCall("sip:target-user@sip-server-ip", prm);
内容的提问来源于stack exchange,提问作者Nabil Boukhari
相关产品推荐
相关产品推荐

