pjproject开篇

在voip行业多年,知道很多优秀的库,pjproject精致轻量,是一个入门级的学习素材。为了记录自己的学习成果,准备写一系列关于pjproject的相关博客。pjproject的官方地址是pjproject官方网站

概述

PJSIP 开源库由一系列功能库所组成:

  • PJLIB 是系统抽象层  
  • PPJLIB-UTIL 提供有用的工具函数  
  • PJNATH 解决NAT 穿越问题  
  • PJMEDIA 和PJMEDIA-CODEC 负责SDP 协商、媒体编码和媒体传输  
  • PJSIP 是核心SIP 协议栈  
  • PJSIP-SIMPLE 实现Presence个人信息和即时消息  
  • PJSIP-UA 提供SIP 用户代理库  
  • PJSUA 位于最高层,整合了下层模块的全部功能。

pjproject开篇_第1张图片

其实归结起来三大块,底层公共库pjlib,媒体栈pjmedia,sip协议栈pjsip。由于我的工作主要是音视频,因此分两个子系列,pjlib和pjmedia,pjsip暂不计划写博客笔记。

如果要开发一个软电话,有两种方法。第一种直接调用PJSUA-LIB的API,里面封装了sip和media,这种开发方式快速不灵活,其中示例代码pjproject-2.8\pjsip-apps\src\samples\simple_pjsua.c使用最高层的API,代码量很少。第二种选择在应用程序分别调用pjmedia和pjsip的API,这种方式灵活,也是比较主流的开发方法。示例代码pjproject-2.8\pjsip-apps\src\samples\simpleua.c使用比较底层的API,代码量相对较大,需要自己创建pjsip和pjmedia相关对象。

下面开始在ubuntu x64上编译运行pjproject

预编译

https://trac.pjsip.org/repos/wiki/Getting-Started/Build-Preparation

编译代码之前,需要创建自定义配置文件pjlib/include/pj/config_site.h,对于基于Makefile的编译系统是可以由Makefile自动创建的,但是对于如Windows的VS,需要手工创建。为什么需要创建自定义配置文件,因为受版本控制的配置文件在更新时容易被覆盖。自定义配置文件可以参考pjlib/include/config_site_sample.h

编译

https://trac.pjsip.org/repos/wiki/Getting-Started/Autoconf

./configure --prefix=/home/hyq/workspace/out --enable-shared --disable-static > hyq_configure.txt

make dep

make

make install

示例路径

https://trac.pjsip.org/repos/wiki/Getting-Started/Running-Applications

pjsua在pjsip-apps/bin

samples在在pjsip-apps/bin/samples

pjlib-test

pjmedia-test

pjsip-test

运行示例

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hyq/workspace/out/lib

make pjlib-test可以测试pjlib,同理可运行其它模块的测试,详细看Makefile就可以知道有哪些模块。

你可能感兴趣的:(pjproject,pjsip,pjlib,pjproject)