pjsip编译、说明及vs2022使用示例
一、源码获取及编译


1. 下载pjsip源代码

2. 使用VS2022编译

编译:

二、数据结构说明
三、接口说明
功能
pj_status_t pjsua_create(void)
参数
返回值
功能
void pjsua_config_default(pjsua_config *cfg)
参数
cfg : 需要初始化的pjsua配置指针
返回值
功能
void pjsua_logging_config_default(pjsua_logging_config *cfg)
参数
cfg : 需要初始化的pjsua日志配置指针
返回值
功能
pj_status_t pjsua_init(const pjsua_config *ua_cfg, const pjsua_logging_config *log_cfg, const pjsua_media_config *media_cfg)
参数
ua_cfg : user agent配置
log_cfg : 日志配置
media_cfg : 媒体配置
返回值
功能
void pjsua_transport_config_default(pjsua_transport_config *cfg)
参数
cfg : 需要初始化的udp配置指针
返回值
功能
pj_status_t pjsua_transport_create(pjsip_transport_type_e type, const pjsua_transport_config *cfg, pjsua_transport_id *p_id)
参数
type : transport类型,可选参数有 PJSIP_TRANSPORT_UDP 、 PJSIP_TRANSPORT_TCP 、 PJSIP_TRANSPORT_TLS 等。
cfg : 需要使用的udp配置
p_id : 可选参数,用于接收transport ID
返回值
功能
pj_status_t pjsua_start(void)
参数
返回值
功能
void pjsua_acc_config_default(pjsua_acc_config *cfg)
参数
cfg : 需要初始化的pjsua账号配置
返回值
pj_status_t pjsua_acc_add(const pjsua_acc_config *acc_cfg, pj_bool_t is_default, pjsua_acc_id *p_acc_id)
参数
acc_cfg : 账号配置信息,比如sip账号id、密码、注册地址等。
is_default : 是否是默认账户
p_acc_id : 用于接收account id数据
返回值
功能
pj_status_t pjsua_call_make_call(pjsua_acc_id acc_id, const pj_str_t *dst_uri, const pjsua_call_setting *opt, void *user_data, const pjsua_msg_data *msg_data, pjsua_call_id *p_call_id)
参数
acc_id : 账号id
dst_uri : 需要外呼的sip uri,比如 sip:1000@192.168.137.100:5060
opt : 呼叫设置
user_data : 需要附加的用户数据
msg_data : INVITE请求里面扩展的header头,NULL时不设置
p_call_id : 用于接收call id的指针
返回值
void pjsua_msg_data_init(pjsua_msg_data *msg_data)
参数
msg_data : 需要初始化的变量
返回值
功能
pj_status_t pjsua_call_hangup(pjsua_call_id call_id, unsigned code, const pj_str_t *reason, const pjsua_msg_data *msg_data)
参数
call_id : 需要挂断呼叫的call id
code : 挂机sip状态码,比如 200、603 等
reason : 挂机原因
msg_data : 需要添加的消息头
返回值
四、基于MFC的示例

工程名称: pjPhone

1、添加依赖库

2、配置工程属性


完整内容可从如下渠道获取:

完整内容可从如下渠道获取:
3、编译及使用


3)接听效果

五、资源获取

pjsip编译、说明及vs2022使用示例的更多相关文章
- Linux内核编译中的各类错误示例
1. do_gettimeofday()函数的使用 linux发行版:Ubuntu22.04 linux内核:5.15.0-52-generic 预编译内核:linux-6.0.1 添加在linux- ...
- 搭建基于MinGW平台的《OpenGL蓝皮书(OpenGL SuperBibe 5th)》示例代码编译环境
副标题:搭建基于MinGW平台的<OpenGL超级宝典>(OpenGL蓝皮书第5版)GLTools 编译环境.示例代码:Triangle.cpp @ SB5.zip 以下内容以及方法均参考 ...
- win10 x64 VS2017 PJSIP 视频通话编译流程
win10 x64 VS2017 PJSIP 视频通话编译流程 1. 下载PJSIP源码 PJSIP源码下载地址:https://www.pjsip.org/ 2. 阅读一遍官方的文档 文档地址:ht ...
- IOS 之 PJSIP 笔记(二) iPJSUA 的简单使用
上一篇在编译完之后,就很不负责的结束了,本篇就对 PJSIP 库中提供的一个示例 iPJSUA 的使用,做一个简单的介绍.也能解除很多人对官方文档的一个困扰,起码我是被困扰过了. 首先,要确保你的 P ...
- OpenSceneGraph 编译 error LNK2019:unresolved external symbol 错误
在编译 OpenSceneGraph 的一个简单示例时, #include <osgViewer/Viewer> #include <osgDB/ReadFile> void ...
- hello-weapp 微信小程序最简示例教程
打开微信小程序官方开发文档,最好全篇看一遍,基本上就会了. 点击文档中 工具 选项卡中 下载工具页面 下载对应系统版本的微信开发者工具 注意:脱离微信开发者工具是不能调试的 好了,安装下工具即可打开, ...
- SlidingMenu的编译及使用
1. 在github上有一个效果不错的开源库,SlidingMenu 最新的代码下载下来后,ExampleListActivity项目会报错: No resource found that ...
- 即时编译和打包您的 Groovy 脚本(转)
在本文中将会涉及到: 使用 CliBuilder 来实现对命令行选项的支持,脚本执行时所需要的参数将通过命令行选项的方式传递. 使用 GroovyClassLoader 加载 Groovy class ...
- 【.net 深呼吸】细说CodeDom(9):动态编译
知道了如果构建代码文档,知道了如何生成代码,那么编译程序集就很简单了. CodeDomProvider 类提供了三个可以执行编译的方法: 1.CompileAssemblyFromSource——这个 ...
- 如何将一段文本编译成C#内存程序的过程
string code = null; // 1. 生成要编译的代码.(示例为了简单直接从程序集内的资源中读取) Stream stram = typeof(CodeDOM).Assembly .Ge ...
随机推荐
- 为什么重写hashCode一定也要重写equals方法?
这是一个经典的问题,我们先从==开始看起 == "==" 是运算符 如果比较的对象是基本数据类型,则比较的是其存储的值是否相等: 如果比较的是引用数据类型,则比较的是所指向对象的地 ...
- Winform 子窗体调用父窗体方法
子窗体部分 1.定义委托 /// <summary> /// 双击委托事件 /// </summary> /// <param name="path" ...
- 深入浅出Stream流
Java 8的新特性之一就是流stream,配合同版本出现的 Lambda ,使得操作集合(Collection)提供了极大的便利. 案例引入 在JAVA中,涉及到对数组.Collection等集合类 ...
- SpringBoot定时任务实现数据同步
业务的需求是,通过中台调用api接口获得,设备数据,要求现实设备数据的同步. 方案一:通过轮询接口的方式执行 pullData() 方法实现数据同步 该方式的原理是先清空之前的所有数据,然后重新插入通 ...
- 声明式 Shadow DOM:简化 Web 组件开发的新工具
在现代 Web 开发中,Web 组件已经成为创建模块化.可复用 UI 组件的标准工具.而 Shadow DOM 是 Web 组件技术的核心部分,它允许开发人员封装组件的内部结构和样式,避免组件的样式和 ...
- docker启动问题: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
系统环境:centos 7 docker版本:Docker version 26.1.4, build 5650f9b 问题:Job for docker.service failed because ...
- 蓝桥杯-全球变暖 (DFS)
你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... .##.... ....##. ..####. .. ...
- 利用PaddleHub 进行人脸检测识别、并对图片进行抠图
利用PaddleHub 进行人脸检测识别.并对图片进行抠图 本文是利用百度的飞桨平台的paddle进行人脸的检测和抠图,但是里面也有一些小问题,特记录一下笔记,以便以后观看学习. 环境:pytho ...
- flink 大批量任务提交 yarn 失败问题
问题现象 用户迁移到新集群后,反馈他们开发平台大量 flink 任务提交失败了,当时集群的 yarn 资源是足够的 排查过程 用户是在他们的开发平台上提交的,查看他们失败的任务,发现是他们提交端主动 ...
- ArgoWorkflow教程(五)---Workflow 的多种触发模式:手动、定时任务与事件触发
上一篇我们分析了argo-workflow 中的 archive,包括 流水线GC.流水线归档.日志归档等功能.本篇主要分析 Workflow 中的几种触发方式,包括手动触发.定时触发.Event 事 ...