pjsip的下载网页如下:
https://www.pjsip.org/download.htm
我使用的是2.9版本,可以直接点击下面链接下载
https://www.pjsip.org/release/2.9/pjproject-2.9.tar.bz2
根据编译文档,我们需要额外的第三方库:
1、SDL
GB28181协议附加参数使用了SDL协议,所以必须下载编译,地址是
https://www.libsdl.org/release/SDL2-2.0.10.tar.gz
编译的话,直接
./configure
make
sudo make install
2、ffmpeg
pjsip库使用ffmpeg进行音视频方面的编解码,所以也需要下载,下载网页
http://ffmpeg.org/download.html
我使用的是4.2.1版本,另外,受版权限制,ffmpeg只包含了h264的解码,所以需要额外下载x264,以便支持h264的编码。h265目前也比较流行,所以还需要下载x265。
下载x264
ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
但在我机子上使用wget下载失败,所以只好找了另外个网站下载
http://download.videolan.org/pub/videolan/x264/snapshots/
我图省事,禁用了nasm,执行下面命令编译x264,编译成静态库是ffmpeg官方建议的
./configure --enable-static --disable-asm
make
sudo make install
下载x265
https://bitbucket.org/multicoreware/x265/downloads/x265_3.2.tar.gz
解压后进入build/linux目录,执行./make-Makefiles.bash 出现配置界面,有时候会显示找不到nasm和numa两个库,直接yum安装即可,没有改变的话直接按q退出配置,然后make,然后sudo make install
ffmpeg编译
configure前需要先执行export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH导入pkgconfig文件夹,此文件夹里应包含x264.pc和x265.pc,不然提示找不到相关库。另外需额外--extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl,我这里不添加这几个参数是找不到x264的,特别是最后一个--extra-libs=-ldl,所以最后命令是
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-shared --disable-static --enable-gpl --enable-libx264 --enable-libx265
但这样编译出来的库没有调试信息,一旦自己项目中关于ffmpeg的代码出问题,无法找出原因,故增加了相关调试信息的配置,增加调试信息的话,x264需要重新编译,configure增加-fPIC选项,即./configure --enable-static --disable-asm --extra-cflags=-fPIC,不然ffmpeg编译时会提示-fPIC问题
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
./configure --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib --extra-libs=-ldl --enable-shared --disable-static --enable-gpl --enable-libx264 --enable-libx265 --enable-debug=3 --disable-optimizations --disable-asm --disable-stripping
configure后直接make 和 sudo make install
3、pjsip
解压后,按照之前那篇文章,修改pjsip的源码,以便支持GB28181的扩展
GB28181开发(二) pjsip库SDP协议扩展
执行./configure --with-sdl=/usr/local -with-ffmpeg=/usr/local,如果需要调试模式,则是./configure --with-sdl=/usr/local -with-ffmpeg=/usr/local CFLAGS='-g' 其中如果不指定ffmpeg的位置,会导致找不到ffmepg库。然后make dep, 然后make,然后sudo make install
最后/usr/local/include截图
/usr/local/lib截图
/usr/local/lib/pkgconfig截图