赞
踩
本文在本篇文章基础上,记录一些踩坑点。
PJSIP使用流程,基于 simple_pjsua.c
修改默认配置代码
SIP服务相关可参考本人前文:
Yealink&Linux | miniSIPServer使用说明 | 福大嵌入式实时系统课学习 | 音频通话
//服务器ip
#define SIP_DOMAIN "172.20.10.14"
//本地sip服务分机及密码
#define SIP_USER "100"
#define SIP_PASSWD "100"
//sip服务域名
#define SIP_REALM "myvoipapp.com"
这段代码提供了按下“m”拨打电话的功能。
/* If URL is specified, make call to the URL. */
if (argc > 1) {
pj_str_t uri = pj_str(argv[1]);
status = pjsua_call_make_call(acc_id, &uri, 0, NULL, NULL, NULL);
if (status != PJ_SUCCESS) error_exit("Error making call", status);
}
修改for循环,增加make call功能,对配置的分机进行呼叫。
/* Wait until user press "q" to quit. */ for (;;) { char option[10]; char uri[100]; puts("Press 'h' to hangup all calls, 'q' to quit, 'm' to make call"); if (fgets(option, sizeof(option), stdin) == NULL) { puts("EOF while reading stdin, will quit now.."); break; } if (option[0] == 'q') break; if (option[0] == 'h') pjsua_call_hangup_all(); if (option[0] == 'm') { puts("Enter SIP URI to call: "); if (fgets(uri, sizeof(uri), stdin) == NULL) { puts("Error reading SIP URI"); continue; } pj_str_t pj_uri = pj_str(uri); status = pjsua_call_make_call(acc_id, &pj_uri, 0, NULL, NULL, NULL); if (status != PJ_SUCCESS) puts("Error making call"); } }
在Visual Studio中的使用可参考本人前文:
Windows&Linux | PJSIP使用说明 | 福大嵌入式实时系统课学习 | 音频通话
…/pjproject-2.14.1/pjsip/include
…/pjproject-2.14.1/pjlib/include
…/pjproject-2.14.1/pjlib-util/include
…/pjproject-2.14.1/pjmedia/include
…/pjproject-2.14.1/pjnath/include
Iphlpapi.lib
dsound.lib
dxguid.lib
netapi32.lib
mswsock.lib
ws2_32.lib
odbc32.lib
odbccp32.lib
ole32.lib
user32.lib
gdi32.lib
advapi32.lib
libpjproject-i386-Win32-vc14-Debug.lib
pjsua-lib-i386-Win32-vc14-Debug.lib
pjlib-i386-Win32-vc14-Debug.lib
pjlib-util-i386-Win32-vc14-Debug.lib
pjmedia-i386-Win32-vc14-Debug.lib
pjnath-i386-Win32-vc14-Debug.lib
- pjsua-lib:最高层次抽象API,该库是基于pjsip-ua及以下库做了高层次的分装。
- pjlib库:最底层、最基础的库,实现平台抽象和框架(数据结构、内存分配、文件I/O,线程同步等)
- pjlib-util库:封装常用算法,如MD5、CRC32等,以及json、xml格式解析
- pjmedia库:处理SDP协商、媒体编码和传输等
- pjnath库:处理NAT穿越问题
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。