pjsip windows demo编译运行 (pjsip 2.9 qt环境)

手把手教你用PJSIP+Qt搭建简易视频通话Demo(含学号注册功能) 本文详细介绍了如何利用PJSIP和Qt框架在Windows平台上搭建支持学号验证的视频通话系统。从环境配置、PJSIP编译到Qt界面集成,逐步指导开发者实现视频通话核心功能,适用于高校计算机网络实验课程。 阅读详情
AI摘要

本文档详细介绍了如何在Windows环境下使用Visual Studio将PJSIP库与Qt应用程序整合,包括编译PJSIP库、配置Qt项目、创建基于线程的VoIP应用等步骤。此外,还提供了丰富的参考资料,如C++和C语言示例代码,以及针对不同编程语言的PJSIP应用案例。

1、编译参考 https://www.cnblogs.com/GYY2046/p/11455747.html

编译完成后在pjsip2.9/lib下产生一个libpjproject-i386-Win32-vc14-Debug.lib 就是所有的lib 

2、创建qt gui 程序 在 lib 和include 导入lib 和头文件

ffmpeg和sdk的都在incude目录

pjsip的需要导入的参考

3、将这些考入include下

4、最后vs项目配置lib 和include

 也可以参考vidgui写 也可参考pjsip-apps\src\samples 下的pjsua2_demo.cpp 或者simple_pjsua.c

5、创建一个qt thread 导入lib


#include <pjsua2.hpp>

#include <sdl/SDL.h>

#pragma comment(lib, "avcodec.lib")
#pragma comment(lib, "avdevice.lib")
#pragma comment(lib, "avfilter.lib")
#pragma comment(lib, "avformat.lib")
#pragma comment(lib, "avutil.lib")
#pragma comment(lib, "postproc.lib")
#pragma comment(lib, "swresample.lib")
#pragma comment(lib, "swscale.lib")

#pragma comment(lib, "libpjproject-i386-Win32-vc14-Debug.lib")
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wsock32.lib")
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "dsound.lib")  
#undef main
 
using namespace pj;

这个是c++的

c的去掉using namespace pj;和#include <pjsua2.hpp>改成pjsip.h

线程不能停掉

 void run(){

pjsua_acc_id acc_id;
    pj_status_t status;

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

    /* 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);
    }

    /* Init pjsua */
    {
    pjsua_config cfg;
    pjsua_logging_config log_cfg;

    pjsua_config_default(&cfg);
    cfg.cb.on_incoming_call = &on_incoming_call;
    cfg.cb.on_call_media_state = &on_call_media_state;
    cfg.cb.on_call_state = &on_call_state;

    pjsua_logging_config_default(&log_cfg);
    log_cfg.console_level = 4;

    status = pjsua_init(&cfg, &log_cfg, NULL);
    if (status != PJ_SUCCESS) error_exit("Error in pjsua_init()", status);
    }

    /* Add UDP transport. */
    {
    pjsua_transport_config cfg;

    pjsua_transport_config_default(&cfg);
    cfg.port = 5060;
    status = pjsua_transport_create(PJSIP_TRANSPORT_UDP, &cfg, NULL);
    if (status != PJ_SUCCESS) error_exit("Error creating transport", status);
    }

    /* Initialization is done, now start pjsua */
    status = pjsua_start();
    if (status != PJ_SUCCESS) error_exit("Error starting pjsua", status);

    /* Register to SIP server by creating SIP account. */
    {
    pjsua_acc_config cfg;

    pjsua_acc_config_default(&cfg);
    cfg.id = pj_str("sip:" SIP_USER "@" SIP_DOMAIN);
    cfg.reg_uri = pj_str("sip:" SIP_DOMAIN);
    cfg.cred_count = 1;
    cfg.cred_info[0].realm = pj_str(SIP_DOMAIN);
    cfg.cred_info[0].scheme = pj_str("digest");
    cfg.cred_info[0].username = pj_str(SIP_USER);
    cfg.cred_info[0].data_type = PJSIP_CRED_DATA_PLAIN_PASSWD;
    cfg.cred_info[0].data = pj_str(SIP_PASSWD);

    status = pjsua_acc_add(&cfg, PJ_TRUE, &acc_id);
    if (status != PJ_SUCCESS) error_exit("Error adding account", status);
    }

    /* 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);
    }

while (!exit)
{ sleep(1);//1s
        

}

on_error:
    pjsua_destroy();

}

7、

如果你觉得麻烦可以去 https://item.taobao.com/item.htm?id=618486196283

sip服务器搭建可参考:https://blog.youkuaiyun.com/Java_lilin/article/details/103063930

pjsip java 参考:https://blog.youkuaiyun.com/Java_lilin/article/details/103511795

pjsip  c# 参考 https://blog.youkuaiyun.com/Java_lilin/article/details/106229860

更多写法可以参考安卓pjsua2代码:https://blog.youkuaiyun.com/Java_lilin/article/details/89212406

 

测试交流群261074724 

 

 

 

 

 

 

 

 

使用Qt和PJSIP学习VoIP 在本文中,我们将探讨如何使用Qt和PJSIP库学习和实现VoIP功能。Qt是一个跨平台的应用程序开发框架,而PJSIP是一个开源的VoIP库,提供了实现VoIP通信所需的基本功能。在Qt Designer中创建一个主窗口,并添加一个拨号按钮(callButton)、一个挂断按钮(hangUpButton)和一个目标号码文本框(destinationLineEdit)。本文提供了一个使用Qt和PJSIP的简单VoIP客户端示例,您可以根据自己的需求进行扩展和修改。首先,我们需要安装Qt和PJSIP库。 阅读详情

相关推荐

【GB28181】PJSIP库(七)C++接口PJSUA2类详解:Call、Buddy

PJSIP库 C++ 部分接口PJSUA2的Call、Buddy的说明和使用

郭老二 1263

FFmpeg4.3系列之28:SIP+eXosip+pjsip小白入门

敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。我将带领大家一起来学习:学习sip协议的基本原理、流程、结构;编译开源库源码osip,eXosip,pjsip(包括windows和Linux两套环境);使用eXosip或pjsip进行案例实战;具体内容包括:  1.sip协议讲解,包括原理、结构、协议内容、流程分析等。2.osip与eXosip的源码编译,使用eXosip进行案例实战并详解流程。3.pjsip的源码编译,使用pjsip进行案例实战并详解流程。

pjsip最新版本带视频demo

pjsip官方代码编译出的最新Android平台的Demo,加入了openh264的支持,可以视频通话

探索PJSIP Video Demo:一个开源的VoIP与视频通话解决方案

探索PJSIP Video Demo:一个开源的VoIP与视频通话解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目简介 是一个基于PJSIP库的开源项目,专注于实现VoIP(Voice over Internet Protocol)和视频通话功能。该项目由开发者sxcong维护,旨在提供一个简单易用的示例,帮助开发者快速理解和集成多媒体通信到自己的应用中。 技术分析...

gitblog_00089的博客 1140

pjsip demo

一个完整的pjsip案例,在公司测试已经通过。

PJSIP-Android-Demo亲测可用

PJSIP是一个开放源代码的SIP协议栈,它支持多种SIP的扩展功能 。本资料基于PJSIP的语音电话Android Demo AS工程。

Windows环境下编译pjsip

pjsip大体上是一套开源SIP协议栈,更多内容可以参考pjsip背景组成等。项目需求在 Windows上部署运行,并开发客户端,客户端打算用MicroSip改造。MicroSip依赖pjsip。 首先编译pjsip。依赖ffmpeg和sdl2。 下载pjsip源码 https://www.pjsip.org/download.htm 源码主要结构: lib: [PJPROJECT的lib库] pjlib:[基础框架库] pjlib-util...

moyebaobei1的博客 5057

pjsip在android上的demo

pjsip在android上面的应用。主要现在官方只提供pjsua会话管理,所以具体的接口查看可以到pjsuajni文件中查看,我感觉现在支持android还是比较弱的。。当然主要原因还是android竟然需要ndk这么个玩意。本来用pjsip可以大大的提高实行速度,毕竟c的执行速度是java的10~20倍。所以官方又重新编写了一堆c++文件经过swig转化成对应的java文件,我估计他们会吐槽的。不排除还会有很多bug。。。

基于sip的语音对讲 Demo

SipVoice 该 demo 基于https://github.com/VoiSmart/pjsip-android 项目实现语音对讲对讲功能。 还有很多关于 pjsip 的功能和 API 请移步 pjsip-android。 正常运行该 Demo ,需要已有 Sip 服务端,Constants 中配置 ip 和端口。 解决了一个坑,通话2分钟必定断开,在 pjsip-android 提了 is...

狂奔的奶牛 5050

基于qt和PJSIP库的小项目

基于qt和PJSIP库的小项目 , 可以为初学者学习PJSIP库提供参考 .

QT集成pjsip2.5.1 包含视频功能

使用QT对pjsip进行视频展示及其他的一些功能

C# Pjsip (Pjsua2 api ) 2.10 windows sip语音呼叫教程

1、安装swigwin-4.0.1 下载地址http://www.swig.org/download.html注意是swigwin Windows users should downloadswigwin-4.0.1which includes a prebuilt executable. 配置目录到win path 2、下载pjsip2.10.zip 编译lib 具体参考https://blog.csdn.net/Java_lilin/article/details/103511795编...

Java_lilin的专栏 4647

pjsip-csharp:建立pjsip并从C#使用

pjsip-csharp build pjsip and use from C# 一、编译 1. 下载 2. 用VS打开pjproject-vs8.sln解决方案 3. 在pjlib\include\pj目录下添加config_site.h文件 二、转换为DLL可用 1. 安装 2. 打开pjsip-apps\src\swig目录,并且创建csharp文件夹,然后进去执行 swig -I../../../../pjlib/include -I../../../../pjlib-util/include -I../../../../pjmedia/include -I../../../../pjsip/include -I../../../../pjnath/include -w312 -c++ -csharp -o pjsua2_wrap.cpp ../pjsua2.i 3. 创建Win3

Pjsip笔记之pjsip使用示例

学习一个程序,最希望的就是有个demo,通过demo的API调用逻辑,跟踪程序的执行过程,了解里面的设计。 Pjsip一个最简单的示例就是simple_pjsua.c,位于:pjsip_apps/src/samples目录下。不到200行的代码。却演示了pjsip初始化到拨打电话和挂点电话的API调用逻辑。 主要的逻辑在main函数中: pjsua接口使用时,需要创建、初始化、开始和销毁

croop520的专栏 1万+

用Python+ArcGIS分析厦门共享单车数据:5分钟搞定订单时长与距离分布的可视化

本文详细介绍了如何利用Python和ArcGIS Pro 3.x快速分析厦门共享单车数据,实现订单时长与距离分布的可视化。通过数据清洗、预处理和高级可视化技巧,揭示用户行为特征,为运营优化提供数据支持。文章还提供了环境配置、代码示例和业务洞察,帮助开发者高效完成数据分析任务。

weixin_28327051的博客 335

DDS器件原理与应用(AD9833 AD9834)

是DDS的核心组成部分,用于实现相位的累加,并输出相应的幅值。相位累加器由M位宽加法器和M位宽寄存器组成,通过时钟控制,将上一次累加结果反馈到加法器输入端实现累加功能,从而使每个时钟周期内的相位递增数为,并取相位累加结果作为地址输出给ROM查找表部分。DDS的相位信息被存放在累加寄存器中,虽然幅值和相位不是线性关系,但寄存器累加值和相位可以是线性关系,很容易用寄存器的累加值表达相位信息。

m0_49968063的博客 6440

pjsip网络电话demo:实现高清网络通话的利器

pjsip网络电话demo:实现高清网络通话的利器 去发现同类优质开源项目:https://gitcode.com/ 在数字化时代,网络电话已成为人们沟通的重要方式。今天,就为大家推荐一款开源项目——pjsip网络电话demo。它以简洁的界面、稳定的性能和高清的音质,成为了网络电话领域的佼佼者。 项目介绍 pjsip网络电话demo是基于pjsip协议开发的一款网络电话应用程序。它不仅支持高清音质...

gitblog_06732的博客 455

白鲸优化算法(BWO)详解:从生物灵感 to 工程实践

白鲸优化算法(BWO)是一种新型的群体智能优化算法,模拟白鲸的游泳、捕食和鲸落行为。该算法通过平衡因子控制探索与开发阶段的转换:探索阶段采用正弦/余弦函数模拟白鲸的同步游泳,开发阶段引入莱维飞行增强局部搜索,鲸落阶段通过随机更新避免局部最优。BWO具有参数少、实现简单、收敛速度快等优点,已在多个优化问题上展现出优异性能。其数学模型将白鲸的三种核心行为抽象为位置更新公式,实现了全局搜索与局部开发的自然平衡。

qq_42212808的博客 290

pjsipdemo完整案例:开源SIP解决方案的一站式体验

pjsipdemo完整案例:开源SIP解决方案的一站式体验 【下载地址】pjsipdemo完整案例 这是一个基于pjsip的完整开源案例,展示了从初始化、注册、建立通话到挂断通话的全流程。pjsip作为开源的SIP协议栈和媒体框架,支持语音、视频和即时消息等多种功能,广泛应用于跨平台开发。本案例经过内部测试,确保实际可运...

gitblog_06797的博客 524

汽车UDS诊断之诊断会话控制服务(0x10)深度剖析

DiagnosticSessionControl就是诊断会话控制。 请求消息定义 A_Data类型 参数名称 Cvt 字节值 助记符 #1 诊断会话控制请求SID M 0x10 DSC #2 子功能=[诊断会话类型] M 0x00-0xFF LEV_DS_ ...

心骗小白话的博客 7418

9篇2章2节:GBD 数据库的数据申请详解

无论您是初入公共卫生领域的学生、资深的科研工作者,还是政策决策者,GBD数据库都将成为您数据分析与决策支持中不可或缺的重要工具。

MD Code 2597

利用 qt+pjsip 学习 voip

对于sip客户端,在windows下有好用的 eyebeam

socay 的专栏 6981

视觉Transformer实战 | Token-to-Token Vision Transformer(T2T-ViT)详解与实现

Vision Transformer (ViT) 在计算机视觉领域取得了巨大成功,但标准的 ViT 存在一些局限性,如需要大规模预训练数据、对局部结构建模不足等。Token-to-Token ViT (T2T-ViT) 通过引入渐进式分词过程改进了原始 ViT,使其能够在中小型数据集上取得更好的性能。本节将详细介绍 T2T-ViT 的技术原理,并使用 PyTorch 从零开始实现 T2T-ViT。

盼小辉丶的博客 4万+

WindowsPJSIP

Windows环境下的pisip编译

LilXJ的博客 679

论文阅读:ICLR 2023 FINE-TUNING ALIGNED LANGUAGE MODELS COMPROMISES SAFETY, EVEN WHEN USERS DO NOT INTEND

对大型语言模型(LLMs)进行微调以适应特定用例通常涉及对预训练的LLMs进行进一步的定制。Meta公开发布Llama模型和OpenAI的API允许在自定义数据集上微调GPT-3.5 Turbo,也鼓励这种做法。但是,这种自定义微调与安全成本有何关联?我们注意到,尽管现有的安全对齐基础设施可以在推理时限制LLMs的有害行为,但它们并未涵盖将微调权限扩展到最终用户时的安全风险。我们的红队研究发现,即使是只有几个设计有敌意的训练示例进行微调,也可以破坏LLMs的安全对齐。

CSPhD-winston的博客 809

Google 二次签名 导致 Facebook , Google 登录失败

google 授权登录

xq610928的博客 1957
上一篇: freeswitch 基于webrtc网页视频、语音通话官方例子video_demo安装
下一篇: webrtc 服务器 janus android使用教程1:Echo Test
java_lilin
博客等级 码龄14年 364粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值