Windows环境下编译pjsip
pjsip大体上是什么,更多内容可以参考pjsip背景组成等。项目需求在 Windows上部署运行,并开发客户端,客户端打算用MicroSip改造。MicroSip依赖pjsip。
首先编译pjsip 2-11-1。依赖ffmpeg和sdl2,好多案例openh264不是必须的,但是我调用本地摄像头需要依赖openh264, windows 版本需要单独编译,我会单独说一下。
- 下载pjsip源码
Download PJSIP - Open Source SIP, Media, and NAT Traversal library
源码主要结构:
lib: [PJPROJECT的lib库]
pjlib:[基础框架库]
pjlib-util:[辅助工具库]
pjmedia:[开源的媒体栈]
pjnath:[开源的NAT-T辅助库]
pjsip:[开源的SIP协议栈]
pjsip-apps[demo]
- 下载ffmpeg, 下载windows版本
Download FFmpeg
- 下载sdl2
Simple DirectMedia Layer - SDL version 2.0.18 (stable)
- 编译方法,官方其实写的非常详细了,下面列了支持的平台
Windows 平台编译教程如下Getting-Started/Windows – pjsip Open source SIP, media, and NAT traversal stacks/libraries for smartphones 。具体就不展开了,直接列出需要修改的部分,需要修改的内容不仅限于如下的部分(其实就是指定库目录和包含目录,谁需要就给谁配一下)
- 进入指定目录
../pjlib/include/pj/
,创建config_site.h即可(VS必须手动创建),这个文件可以为空,为空是使用默认值。干脆把config_site_simple.h复制一份重命名为config_site.h
参考配置
/*支持视频的参数*/
#define PJMEDIA_HAS_VIDEO 1
#define PJMEDIA_HAS_OPENH264_CODEC 1
#define PJMEDIA_HAS_LIBYUV 1
#define PJMEDIA_VIDEO_DEV_HAS_SDL 1
#define PJMEDIA_VIDEO_DEV_HAS_DSHOW 1/*ffmpeg 支持*/
#define PJMEDIA_HAS_FFMPEG 1/*如果希望调用摄像头信息,除了默认支持VP8,还需要支持H264,这个也是网上好多其他教程部分情况无法调用摄像头的原因*/
#define PJMEDIA_HAS_OPENH264_CODEC 1
//#define PJMEDIA_HAS_VPX_CODEC 1 //by default VP8 codec is enabled
//#define PJMEDIA_HAS_VPX_CODEC_VP9 1 //enable VP9 codec
2. 我使用vs2019编译,需要把Windows SDK和平台工具集统一
3. 引入sdl2 和 ffmpeg
参考:
- 完成上述配置,实际编译过程依然会报错,错误信息基本是pjsystest 、pjsip_test等项目找不到依赖的静态库,其实这些项目和pjsip本身没多大关系,是一些辅助的项目,分别单独设置一下就可以了,或者从当前解决方案内移除就可以啦。不影响项目运行。
- 编译成功,可以运行pjsip-apps/bin/下的exe,效果如下
- 测试打电话和发视频
主叫端:
被叫需要回复a, 以及回传一个,进行应答
可以看到Media 的信息包括:
只有语音没有视频:1 audio & 0 video
来自: from<sip:192.168.1.23>
打给:to<sip:192.168.1.111>
需要按a 接听,按h 拒绝接听
接听后需要回复一个100-600之间的任意整数。
然后就可以畅快通话了。
- 打视频电话
需要先设置启用视频信息,双方都需要设置
vid enable ; 打开视频
vid acc autotx on ; 即使打开了视频,默认视频也不会自动开始传输。要修改该设置
vid acc autorx on ; 即使接收到了视频,默认也不会播放,要修改该设置
接听方接听后,需要回复
vid call tx on 1 // 打开视频发送
这时候就可以看到视频了
重新打电话
接听放协商回复
这时候看到Media: 1 audio & 1 video ,实测不回复也会开启视频传输
看下视频效果
发起方:
接听方:
本地测试,还可以,感觉略微有延迟。
Windows环境下编译pjsip相关推荐
- 在Windows环境下编译VPX
首先到CygWin的官网下载CygWin的安装包,编译环境需在此环境下进行,https://cygwin.com/install.html,安装的过程中,记得一定要安装perl,make,wget,a ...
- Windows环境下编译Airsim
AirSim是微软基于UE4(后来也添加了Unity工程)开发的一款开源模拟器,可以模拟无人机.无人车.源码地址: https://github.com/Microsoft/AirSim 下面简单说下 ...
- Windows环境下编译FreeRDP
关于在Linux下如何编译FreeRDP,在github的wiki上面已经说的很明白了,而且相当简单,具体细节参考网址:FreeRDP构建说明.大抵就是make,make install之类的,并且之 ...
- Windows环境下编译OpenOCD
1.安装git for windows sdk 下载地址:Git for Windows ps:如果安装失败,需要将安装目录删除后才能重新安装. 2.打开 Git SDK 64-bit,安装编译所需环 ...
- 在Windows环境下编译cocos2d-x-3.0
1. 安装配置开发环境 1.1 安装JDK 1) 下载并安装jdk-7u7-windows-i586.exe 2) 设置[JAVA_HOME]为"C:\Program Files\J ...
- windows环境下编译ACE+TAO问题及解决办法
参考文章1:https://blog.csdn.net/lsyyoyo/article/details/80977353 参考文章2:https://blog.csdn.net/qq_14994573 ...
- Qt最新版5.14在Windows环境静态编译安装和部署的完整过程 VS 2019-Qt static link build Windows 32 bit/64 bit
文章目录 为什么要静态编译(static link) 1.源码下载/source code download 2. 编译工具下载/compiler download 编译环境选择:MinGW/MSVC ...
- Qt最新版5.13在Windows环境静态编译安装和部署的完整过程(VS 2017/VS 2019)
文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...
- Qt最新版5.12在Windows环境静态编译安装和部署的完整过程(VS2017)
文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...
最新文章
- 参加前端培训主要学习什么语言
- php企业网站源码安装教程,PHPSCUP企业建站系统v1.4 安装图文教程
- 六道面试中常见的智力题 来看看你会做几道?
- 春运渡劫?Python帮你12306抢回家的火车票
- git 删除远程分支
- YOLO学习-3:ubuntu16.04+ yolov3(darknet)+GPU(nvidia 1080ti)+opencv2.4.11 摄像头测试实践
- jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
- tensorflow之softmax
- redist mysql_Windows下安装 MySQL
- 《大数据技术原理与应用》(第三章 HDFS 课后答案)
- VC++、MFC中最好的开源项目
- Unity Android Unable to load resource的问题
- Linux用户不同UID分类区别
- 给Ubuntu18.04/Nvidia nano永久分配swap空间
- 程序员小说 Out Of Memory (三)
- 为企业微信“服务商应用”更改微信插件中的消息弹出样式
- img图片在webpack中使用
- OnePlus 7T LineageOS 编译向导
- 贪心算法(Greedy Algorithms)
- 如何在linux上直接运行python程序
热门文章
- 2022年建筑装饰行业报告:企业微网蓄势待发,万亿赛道谁主沉浮?
- 大数据系统搭建(一)基础配置
- android APK 解析软件包出现问题 解决办法
- cloud全家桶介绍
- 强化学习算法A2C(Advantage Actor-Critic)和A3C(Asynchronous Advantage Actor-Critic)算法详解以及A2C的Pytorch实现
- chrony时间同步
- 什么是Timestamp——时间戳?
- ORA-20005 统计信息被锁定
- MySQL(三):InnoDB和MyISAM
- HTML网页调用海康摄像头,[FastVideo]Web Html5 无插件方式连接海康摄像头[2]