利用 qt+pjsip 学习 voip

对于sip客户端,在windows下有好用的 eyebeam / sjphone 等好用的软件,但是在linux下,笔者没有发现好用的,安装过 xlite  ekgia 等,不是配置过于复杂就是操作不习惯(可能很多自身喜好)。于是有了用 pjsip 这个开源的sip库,结合qt做界面,做一个符合自身使用习惯的 sip 客户端。支持拨打、接听电话等功能。

当然 pjsip 本身提供了大量的例子,pisua 就是一个功能强大的例子,本文也是参考其完成的。但是 pjsua 是一个命令行方式的 ua。本次大部分工作量是做界面展示功能。

开发环境准备:

1、qt 相关库的安装,一并安装 qt creator

2、pjsip 下载,并编译。在linux下编译是比较容易的,具体步骤请参考官方手册 http://trac.pjsip.org/repos/wiki/Getting-Started

      编译完成后,会将每个模块编译成静态库,被放在对应模块的 lib 目录下

3、在 qt creator 创建一个工程,比如叫 pjua 然后配置好依赖关系。编辑 pjua.pro 文件,如下:

INCLUDEPATH += pjsip/include

GCC 库的链接是有顺序的,参数从右往左加载,所以如果需要链接的库本身存在依赖问题,一定要注意顺序,将被依赖的库放在依赖库的右边
LIBS +=  -L ../../voip_ua_linux/pjsip/lib/
LIBS +=        -lpjsua-i686-pc-linux-gnu -lpjsip-ua-i686-pc-linux-gnu    -lpjsip-simple-i686-pc-linux-gnu     -lpjsip-i686-pc-linux-gnu   -lpjmedia-codec-i686-pc-linux-gnu   -lpjmedia-i686-pc-linux-gnu  -lpjmedia-videodev-i686-pc-linux-gnu
LIBS +=        -lpjmedia-audiodev-i686-pc-linux-gnu  -lpjmedia-i686-pc-linux-gnu   -lpjnath-i686-pc-linux-gnu  -lpjlib-util-i686-pc-linux-gnu  -lpj-i686-pc-linux-gnu
LIBS +=        -lgsmcodec-i686-pc-linux-gnu    -lspeex-i686-pc-linux-gnu    -lilbccodec-i686-pc-linux-gnu
LIBS +=        -lportaudio-i686-pc-linux-gnu  -lresample-i686-pc-linux-gnu   -lsrtp-i686-pc-linux-gnu

INCLUDEPATH 设置你的 pjsip 库的一些头文件路径

LIBS 设置具体要链接进来的库

笔者就是因为最开始不清楚 GCC 库链接是有顺序,导致在构建工程的时候来时包有未定义的引用,花费了较多时间来找原因!


小插曲:在ubuntu下使用 qt creator 作为 IDE 开发程序时,可能不能输入中文。这是因为默认 qt 不支持中文输入,需要另外安装包

sudo apt-get install fcitx-libs-qt5

你可能感兴趣的:(voip)