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 ...
随机推荐
- 变分信息瓶颈 (Variational Information Bottleneck) 公式推导
互信息 互信息用于表示两个随机变量相互依赖的程度.随机变量 \(X\) 和 \(Y\) 的互信息定义为 \[\begin{aligned} I(X, Y) & = \mathrm{KL}[p( ...
- Mac安装Adobe PS_AE_PR等系列软件提示错误代码146怎么办?
在安装Mac版Adobe系列软件的时候,不管PS.AE.PR.AI等,如果出现错误代码146,下面两个方法能够轻松解决. 解决方法一:需要我们打开「系统设置」-「隐私与安全」-「App管理」,打开「i ...
- Redmi AX6000 刷 OpenWrt
一直想尝试玩玩软路由,但是家里实在没有软路由的需求,外加不知道该入手什么机器来刷软路由,所以迟迟没有入手.最近研究生要开学了,但是学校的有线网要下载专用软件认证才能上网,终于找到合适的理由入手一款软路 ...
- MacTeX 使用
MacTeX 是一个 TeX Live 的 macOS 定制版本.它包括: TeX Live GUI 应用程序 Ghostscript 关于 MacTeX 的介绍可以查看 MacTex 主页 安装 b ...
- 用 SQL 写的俄罗斯方块游戏「GitHub 热点速览」
在开始介绍上周热门开源项目之前,要插播一条开源新闻:Nginx 已正式迁移至 GitHub. 近日,Nginx 官方宣布将 Nginx 开源项目,从 Mercurial 迁移至 GitHub 代码托管 ...
- 小tips:docker 配置国内镜像地址
在配置文件daemon.json中添加国内镜像,让其下载加速. vi /etc/docker/daemon.json 如下国内镜像: { "registry-mirrors": [ ...
- EF Core – Temporal Table 时态表
前言 EF core 6.0 开始有 build-in 的 Temporal Table 支持了. 关于 SQL Server Temporal Table 可以看这篇. 主要参考 What's Ne ...
- 【HFSS】HFSS绘制梯形走线的5种方法
使用HFSS仿真PCB走线,需要对走线进行建模,但是由于PCB制造过程中的蚀刻导致走线截面不是理想的矩形,而是接近梯形.为了使仿真尽量精确,需要将PCB走线截面绘制成梯形.下面介绍几种绘制梯形走线的方 ...
- 基于语义增强的少样本检测,突破新类别偏见 | ICIP'24
Few-shot目标检测(FSOD)旨在在有限标注实例的情况下检测新颖对象,在近年取得了显著进展.然而,现有方法仍然存在偏见表示问题,特别是在极低标注情况下的新颖类别.在微调过程中,一种新颖类别可能会 ...
- Java如何将Object转换成指定Class对象
在Java中,将Object转换为指定类型的Class对象实际上是两个不同概念的操作: 将Object实例转换为特定类型的实例:这通常涉及到类型转换(如(MyType) myObject)或者通过反射 ...