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 。具体就不展开了,直接列出需要修改的部分,需要修改的内容不仅限于如下的部分(其实就是指定库目录和包含目录,谁需要就给谁配一下)

  1. 进入指定目录../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相关推荐

  1. 在Windows环境下编译VPX

    首先到CygWin的官网下载CygWin的安装包,编译环境需在此环境下进行,https://cygwin.com/install.html,安装的过程中,记得一定要安装perl,make,wget,a ...

  2. Windows环境下编译Airsim

    AirSim是微软基于UE4(后来也添加了Unity工程)开发的一款开源模拟器,可以模拟无人机.无人车.源码地址: https://github.com/Microsoft/AirSim 下面简单说下 ...

  3. Windows环境下编译FreeRDP

    关于在Linux下如何编译FreeRDP,在github的wiki上面已经说的很明白了,而且相当简单,具体细节参考网址:FreeRDP构建说明.大抵就是make,make install之类的,并且之 ...

  4. Windows环境下编译OpenOCD

    1.安装git for windows sdk 下载地址:Git for Windows ps:如果安装失败,需要将安装目录删除后才能重新安装. 2.打开 Git SDK 64-bit,安装编译所需环 ...

  5. 在Windows环境下编译cocos2d-x-3.0

    1. 安装配置开发环境 1.1 安装JDK 1) 下载并安装jdk-7u7-windows-i586.exe     2) 设置[JAVA_HOME]为"C:\Program Files\J ...

  6. windows环境下编译ACE+TAO问题及解决办法

    参考文章1:https://blog.csdn.net/lsyyoyo/article/details/80977353 参考文章2:https://blog.csdn.net/qq_14994573 ...

  7. 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 ...

  8. Qt最新版5.13在Windows环境静态编译安装和部署的完整过程(VS 2017/VS 2019)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

  9. Qt最新版5.12在Windows环境静态编译安装和部署的完整过程(VS2017)

    文章目录 为什么要静态编译 1.源码下载 2. 编译工具下载 ActivePerl Python Ruby 编译环境选择 3.编译 1.修改源码里的qtbase\mkspecs\common\msvc ...

最新文章

  1. 参加前端培训主要学习什么语言
  2. php企业网站源码安装教程,PHPSCUP企业建站系统v1.4 安装图文教程
  3. 六道面试中常见的智力题 来看看你会做几道?
  4. 春运渡劫?Python帮你12306抢回家的火车票
  5. git 删除远程分支
  6. YOLO学习-3:ubuntu16.04+ yolov3(darknet)+GPU(nvidia 1080ti)+opencv2.4.11 摄像头测试实践
  7. jq输出文本_如何用 Linux 命令行工具解析和格式化输出 JSON | Linux 中国
  8. tensorflow之softmax
  9. redist mysql_Windows下安装 MySQL
  10. 《大数据技术原理与应用》(第三章 HDFS 课后答案)
  11. VC++、MFC中最好的开源项目
  12. Unity Android Unable to load resource的问题
  13. Linux用户不同UID分类区别
  14. 给Ubuntu18.04/Nvidia nano永久分配swap空间
  15. 程序员小说 Out Of Memory (三)
  16. 为企业微信“服务商应用”更改微信插件中的消息弹出样式
  17. img图片在webpack中使用
  18. OnePlus 7T LineageOS 编译向导
  19. 贪心算法(Greedy Algorithms)
  20. 如何在linux上直接运行python程序

热门文章

  1. 2022年建筑装饰行业报告:企业微网蓄势待发,万亿赛道谁主沉浮?
  2. 大数据系统搭建(一)基础配置
  3. android APK 解析软件包出现问题 解决办法
  4. cloud全家桶介绍
  5. 强化学习算法A2C(Advantage Actor-Critic)和A3C(Asynchronous Advantage Actor-Critic)算法详解以及A2C的Pytorch实现
  6. chrony时间同步
  7. 什么是Timestamp——时间戳?
  8. ORA-20005 统计信息被锁定
  9. MySQL(三):InnoDB和MyISAM
  10. HTML网页调用海康摄像头,[FastVideo]Web Html5 无插件方式连接海康摄像头[2]