PJSIP学习笔记——从simple_pjsua.c示例程序了解PJSUA-LIB的基本使用流程

本文档详细解读了PJSIP库中simple_pjsua.c示例程序的main函数流程,深入理解PJSIP-LIB在VoIP应用中的基本使用步骤。
摘要由CSDN通过智能技术生成
要了解pjsip的使用,simple_pjsua.c是一个很好的例子,虽然代码只有短短的172行,却展示了pjsua-lib层的完整使用流程、注册流程和基本呼叫流程。

下面是学习过程中整理的simple_pjsua.c中的main函数主要流程:

先来看看pjsip-apps/src/samples/simple_pjsua.c的main函数

/*
 * main()
 *
 * argv[1] may contain URL to call.
 */
int main(int argc, char *argv[])
{
    pjsua_acc_id acc_id;
    pj_status_t status;

//  创建PJSIP
    /* Create pjsua first! */
    status = pjsua_create();
    if (status != PJ_SUCCESS) error_exit("Error in pjsua_create()", status);

//  校验被叫SIP地址是否正确
    /* If argument is specified, it's got to be a valid SIP URL */
    if (argc > 1) {
	status = pjsua_verify_url(argv[1]);
	if (status != PJ_SUCCESS) error_exit("Invalid URL in argv", status);
    }

//    初始化PJSUA,设置回调函数
    /* Init pjsua */
    {
	pjsua_config cfg;
	pjsu
  • 5
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您好!要在简单的pjsua中进行注册,您需要按照以下步骤进行操作: 1. 配置用户帐户信息:首先,您需要设置用户帐户的配置信息,包括用户名、密码、SIP服务器地址等。您可以通过修改pjsua的配置文件或者在代码中直接设置这些信息。 2. 创建SIP账户:使用pjsua库提供的函数,您可以创建一个SIP账户对象,并将其与用户帐户信息关联起来。 3. 注册SIP账户:使用pjsua库提供的函数,您可以将SIP账户注册到SIP服务器上。这将向服务器发送注册请求,并在成功注册后接收来自服务器的响应。 以下是一个简单的示例代码片段,演示了如何在pjsua中进行注册: ```c #include <pjsua-lib/pjsua.h> int main() { // 初始化pjsuapjsua_config cfg; pjsua_logging_config log_cfg; pjsua_acc_config acc_cfg; pjsua_create(); pjsua_config_default(&cfg); pjsua_logging_config_default(&log_cfg); // 初始化日志系统 log_cfg.console_level = 4; pjsua_init(&cfg, &log_cfg, NULL); // 启动pjsuapjsua_start(); // 创建SIP账户 pjsua_acc_add(&acc_cfg, PJ_TRUE, &acc_id); // 设置SIP账户配置信息 acc_cfg.id = pj_str("sip:username@domain.com"); acc_cfg.reg_uri = pj_str("sip:domain.com"); acc_cfg.cred_count = 1; acc_cfg.cred_info[0].realm = pj_str("*"); acc_cfg.cred_info[0].scheme = pj_str("digest"); acc_cfg.cred_info[0].username = pj_str("username"); acc_cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD; acc_cfg.cred_info[0].data = pj_str("password"); // 注册SIP账户 pjsua_acc_set_registration(acc_id, PJ_TRUE); // 等待注册完成 while (1) { pjsua_acc_info info; pjsua_acc_get_info(acc_id, &info); if (info.status == PJSIP_REG_STATE_REGISTERED) { break; } pjsua_sleep(100); } // 注销SIP账户 pjsua_acc_set_registration(acc_id, PJ_FALSE); // 关闭pjsuapjsua_destroy(); return 0; } ``` 请注意,这只是一个简单的示例代码,您可能需要根据您的具体需求进行适当的修改和调整。希望对您有所帮助!如果您有任何进一步的问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值