目录

  • 前言
  • 语音功能实现
    • 编译环境
    • 编译
  • 视频功能实现
    • 编译环境
    • 编译
    • 客户端
  • 总结
  • 参考

前言

PJSIP 是一个免费的开源多媒体通信库,用 C 语言编写,实现了基于标准的协议,如 SIP、SDP、RTP、STUN、TURN 和 ICE。它将信令协议 (SIP) 与丰富的多媒体框架和 NAT 穿越功能结合到高级 API 中,该 API 具有便携性,适用于从台式机、嵌入式系统到移动手机的几乎任何类型的系统。
官方网站:https://www.pjsip.org/

PJSIP开源库的架构图如下:

项目实现:

  1. 用开源代码实现一个SIP客户端(PJSIP);
  2. 用实现的客户端完成在SIP呼叫中心上的注册和测试,并实现语音通话、视频通话。

项目地址:https://github.com/tomorrow-rain/pjsip

部分工具包下载:

pjproject-2.9
链接:https://pan.baidu.com/s/1y6wO05pFzMBVwRgBpm0kiA
提取码:7ick

ffmpeg-4.2.1-win32
链接:https://pan.baidu.com/s/1axlEqgrfdIyxN94xjRGl-Q
提取码:rdpm

SDL2-devel-2.0.12-VC
链接:https://pan.baidu.com/s/1BkhXYbQ0T_1iznVSbX-CNA
提取码:ruo8


语音功能实现

编译环境

  1. 操作系统:Windows 10专业版
  2. IDE:Visual Studio 2017
  3. PJSIP 2.9

编译

从官网下载并解压pjproject-2.9.zip,在pjlib\include\pj目录中创建空的头文件config_site.h。

运行pjproject-vs14.sln,将pjsua设置为启动项。期间会出现一些兼容性的问题,需要对一些依赖库等等进行更新与安装,或者修复。

编译项目build,或者可以直接点release(或者debug)生成解决方案会生成exe文件。

在pjsip-apps\bin目录下找到编译生成的pjsua-i386-Win32-vc14-Release.exe文件,由于服务器不支持tcp,打开cmd,执行pjsua-i386-Win32-vc14-Release.exe --no-tcp,并输入:sip:12345@10.105.240.15与IVR通信。


视频功能实现

视频功能程序在语音通话基础上实现,需要增加FFmpeg、SDL进行视频功能实现,并结合Qt进行界面绘制。

编译环境

新增功能库及工具如下:

  1. Qt Creator 4.3.0
  2. FFmpeg 4.2.1-win32
  3. SDL2-devel-2.0.12-VC

编译

下载后的FFmpeg和SDL解压到项目目录下。
修改ffmpeg-4.2.1-win32-dev\include\libavcodec目录下的avcodec.h头文件,添加一行:

把相关的dll文件复制到系统SysWOW64下:


在visual studio中在pjmedia、pjmedia-codec、pjmedia-videodev、pjsua等几个工程中添加ffmpeg、SDL的include和lib路径

例如对 pjsua 添加include路径:

添加lib路径:

在pjsua属性中Command Line下的其他选项中填入:/SAFESEH:NO

在配置文件config_site.h中写入:

#define PJMEDIA_HAS_VIDEO           1
#define PJMEDIA_VIDEO_DEV_HAS_SDL   1
#define PJMEDIA_VIDEO_DEV_HAS_DSHOW 1
#define PJMEDIA_HAS_FFMPEG          1

之后,编译生成Release和Debug文件。

客户端

下载Qt后,将Qt安装目录下的msvc2015加入环境变量。
对项目目录下的vidgui.pro文件中追加一行:QT += core gui widgets,再将vidgui.pro文件中的11行的debug改成release,12和14行的vc8改成vc14。这是因为新版本的vs使用的是vc14。

此外,还需要对一些版本不兼容的函数进行修改,具体细节如下:


在cmd中键入qmake -tp vc,生成文件:

和语音通信实验类似,将FFMpeg、SDL等库进行配置,以及在visual studio中进行设置,然后进行编译,生成可以视频通信的exe文件:




在pjproject-2.9\pjsip-apps\src\vidgui\release目录下的可执行文件,双击打开exe:

(语音+视频)
拨打视频通话需要在Url框里输入对方的ip地址和端口号,点击Call,等待对方接听
对方接收视频通话只需要点击Answer,视频通话即可开始

(语音)
客户端还具备仅拨打语音通话,不打视频通话的功能,仅需要在界面中把“Enable video”的确认框取消


总结

做的时候参考了其他教程,可以说是困难重重。
尝试用其他版本的pjproject、ffmpeg、sdl,但是最终无法显示视频(可以打开摄像头,但是没有视频),试了好几遍都是没成功,最终使用了教程中的版本,算是做出来了。


参考

https://blog.csdn.net/stone_fall/article/details/103074300
https://www.cnblogs.com/GYY2046/p/11455747.html

PJSIP视频通话客户端相关推荐

  1. win10 x64 VS2017 PJSIP 视频通话编译流程

    win10 x64 VS2017 PJSIP 视频通话编译流程 1. 下载PJSIP源码 PJSIP源码下载地址:https://www.pjsip.org/ 2. 阅读一遍官方的文档 文档地址:ht ...

  2. Windows | PJSIP使用说明 | 北邮计算机网络实验课作业 | 视频通话

    文章目录 官网 首页 使用说明文档 下载地址 实验环境 安装 Build Preparation for Windows Requirements Tools and SDKs Build and r ...

  3. 2021音视频开发的“坑”,等你来填!

    上周五快手完成港股IPO,首日涨幅就达到200%,作为"老对手"坊间也一直传闻字节跳动将于今年完成上市,而已经提前一步赴美上市的bilibili也计划赴港二次上市,资本市场对长/短 ...

  4. Android网络电话软件Sipdroid试用

    SipDroid v2.7 简介:sipdroid是一款基于网络的语音及视频通话客户端软件,sipdroid本身不经营网络语音服务,仅仅是一款开源的sip客户端软件,你需要自备voip账号. 主要功能 ...

  5. VOIP电话系统的开发思路

    Asterisk,pjsip等开源项目的发展为开发VOIP电话系统提供了便捷和廉价的途径. 本人基于VOIP项目实践的经验,从技术上对VOIP电话系统的开发思路进行总结,希望对大家开发VOIP电话系统 ...

  6. 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试

    [网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...

  7. linphone android中文,Linphone(安卓) 客户端APP语音视频通话流程解读

    最近项目中用到语音与视频通话,在网上找了一款名为Linphone的开源app软件(基于android系统),经过一段时间的研究与学习,总算实现了语音/视频通话功能,在此和各位分享一下我的心得. Lin ...

  8. 在centos8环境下用asterisk18配置pjsip和webrtc音视频通话教程(一)

    记录一下2021年采用asterisk18配置pjsip分机和webrtc音视频的教程,测试采用浏览器WebRTC呼叫软电话sip分机,WebRTC接听之间的拨号和内部SIP分机和浏览器WebRTC分 ...

  9. 在centos8环境下用asterisk18配置pjsip和webrtc音视频通话教程(二)

    在上一篇文章,我们介绍了asterisk18在centos8.3环境的编译安装,下面我们继续介绍如何在asterisk18环境中调试成功我们的分机之间通话(包括webrtc). 1) 通过命令 /op ...

  10. 做移动端视频通话软件,大致看了下现有的开源软件(转)

    转自:链接 要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方 ...

最新文章

  1. IDC评述网:2012年11月全国IDC品牌排行榜
  2. python视频课程推荐-听说程序员都在用,5款Python开发工具推荐
  3. STM 32如何实现程序自加密
  4. 如何改变“便宜没好货”的这类用户心理?
  5. 微软应用商店_微软自家的软件也放弃Windows 10
  6. 学习日报 1029 sqlserver的初使用
  7. 月子中心管理系统方案/软件/案列/小程序/网站
  8. 支付宝对应APPID
  9. Oracle12C-针对log4j漏洞补丁修复
  10. 41 神经网络-神经元模型及神经网络模型
  11. 如何查看计算机关机事件,深度技术win7系统如何查看电脑的开关机时间【图文】...
  12. 人生进度条百分之20_1分钟get技能:缺了“进度条”,你注定和80%的失败者一样实现不了人生目标...
  13. 我的世界红石计算机教程1,《我的世界》红石电脑制作原理及使用教程
  14. 独立开发变现周刊(第44期):12岁的小男孩在9个小时内NFT卖了40万美元!
  15. STM32Cube STM32L053配置GPIO达到最低功耗详解含测量实际电流值
  16. stm32解锁电调、电机速度控制
  17. linux和windows双系统怎么引导,如何解决Linux和Windows双系统的引导问题
  18. APM 飞行模式切换--源码详解
  19. 计算机类sci四大水刊,医学sci中的四大水刊,你知道吗
  20. 新必应(new bing)申请

热门文章

  1. java http 手机浏览器下载word文档失败的问题
  2. 用批处理的方式压缩文件
  3. Ubuntu-阿里云搭建Gitlub
  4. php 怎么打出来的,word书名号怎么打出来
  5. UI设计师面试时如何自我介绍
  6. 如何写好高考英语作文
  7. Linux下查看输入设备、获取输入事件的详细方法
  8. 解决无法启动“start web server”:
  9. 解除浏览器hao123首页
  10. python做波士顿房价预测