PJSIP视频通话客户端
目录
- 前言
- 语音功能实现
- 编译环境
- 编译
- 视频功能实现
- 编译环境
- 编译
- 客户端
- 总结
- 参考
前言
PJSIP 是一个免费的开源多媒体通信库,用 C 语言编写,实现了基于标准的协议,如 SIP、SDP、RTP、STUN、TURN 和 ICE。它将信令协议 (SIP) 与丰富的多媒体框架和 NAT 穿越功能结合到高级 API 中,该 API 具有便携性,适用于从台式机、嵌入式系统到移动手机的几乎任何类型的系统。
官方网站:https://www.pjsip.org/
PJSIP开源库的架构图如下:
项目实现:
- 用开源代码实现一个SIP客户端(PJSIP);
- 用实现的客户端完成在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
语音功能实现
编译环境
- 操作系统:Windows 10专业版
- IDE:Visual Studio 2017
- 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进行界面绘制。
编译环境
新增功能库及工具如下:
- Qt Creator 4.3.0
- FFmpeg 4.2.1-win32
- 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视频通话客户端相关推荐
- win10 x64 VS2017 PJSIP 视频通话编译流程
win10 x64 VS2017 PJSIP 视频通话编译流程 1. 下载PJSIP源码 PJSIP源码下载地址:https://www.pjsip.org/ 2. 阅读一遍官方的文档 文档地址:ht ...
- Windows | PJSIP使用说明 | 北邮计算机网络实验课作业 | 视频通话
文章目录 官网 首页 使用说明文档 下载地址 实验环境 安装 Build Preparation for Windows Requirements Tools and SDKs Build and r ...
- 2021音视频开发的“坑”,等你来填!
上周五快手完成港股IPO,首日涨幅就达到200%,作为"老对手"坊间也一直传闻字节跳动将于今年完成上市,而已经提前一步赴美上市的bilibili也计划赴港二次上市,资本市场对长/短 ...
- Android网络电话软件Sipdroid试用
SipDroid v2.7 简介:sipdroid是一款基于网络的语音及视频通话客户端软件,sipdroid本身不经营网络语音服务,仅仅是一款开源的sip客户端软件,你需要自备voip账号. 主要功能 ...
- VOIP电话系统的开发思路
Asterisk,pjsip等开源项目的发展为开发VOIP电话系统提供了便捷和廉价的途径. 本人基于VOIP项目实践的经验,从技术上对VOIP电话系统的开发思路进行总结,希望对大家开发VOIP电话系统 ...
- 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试
[网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...
- linphone android中文,Linphone(安卓) 客户端APP语音视频通话流程解读
最近项目中用到语音与视频通话,在网上找了一款名为Linphone的开源app软件(基于android系统),经过一段时间的研究与学习,总算实现了语音/视频通话功能,在此和各位分享一下我的心得. Lin ...
- 在centos8环境下用asterisk18配置pjsip和webrtc音视频通话教程(一)
记录一下2021年采用asterisk18配置pjsip分机和webrtc音视频的教程,测试采用浏览器WebRTC呼叫软电话sip分机,WebRTC接听之间的拨号和内部SIP分机和浏览器WebRTC分 ...
- 在centos8环境下用asterisk18配置pjsip和webrtc音视频通话教程(二)
在上一篇文章,我们介绍了asterisk18在centos8.3环境的编译安装,下面我们继续介绍如何在asterisk18环境中调试成功我们的分机之间通话(包括webrtc). 1) 通过命令 /op ...
- 做移动端视频通话软件,大致看了下现有的开源软件(转)
转自:链接 要做一个移动端视频通话软件,大致看了下现有的开源软件 一) sipdroid1)架构sip协议栈使用JAVA实现,音频Codec使用skype的silk(Silk编解码是Skype向第三方 ...
最新文章
- IDC评述网:2012年11月全国IDC品牌排行榜
- python视频课程推荐-听说程序员都在用,5款Python开发工具推荐
- STM 32如何实现程序自加密
- 如何改变“便宜没好货”的这类用户心理?
- 微软应用商店_微软自家的软件也放弃Windows 10
- 学习日报 1029 sqlserver的初使用
- 月子中心管理系统方案/软件/案列/小程序/网站
- 支付宝对应APPID
- Oracle12C-针对log4j漏洞补丁修复
- 41 神经网络-神经元模型及神经网络模型
- 如何查看计算机关机事件,深度技术win7系统如何查看电脑的开关机时间【图文】...
- 人生进度条百分之20_1分钟get技能:缺了“进度条”,你注定和80%的失败者一样实现不了人生目标...
- 我的世界红石计算机教程1,《我的世界》红石电脑制作原理及使用教程
- 独立开发变现周刊(第44期):12岁的小男孩在9个小时内NFT卖了40万美元!
- STM32Cube STM32L053配置GPIO达到最低功耗详解含测量实际电流值
- stm32解锁电调、电机速度控制
- linux和windows双系统怎么引导,如何解决Linux和Windows双系统的引导问题
- APM 飞行模式切换--源码详解
- 计算机类sci四大水刊,医学sci中的四大水刊,你知道吗
- 新必应(new bing)申请