VoIP应用在Ubuntu 14.04下编译FFmpeg libX264及PJSIP
PJSIP是一个开源的SIP协议栈。它支持多种SIP的扩展功能,可说算是最目前流行的SIP协议栈之一了。 它实现了SIP、SDP、RTP、STUN、TURN和ICE。PJSIP作为基于SIP的一个多媒体通信框架提供了非常清晰的API,以及NAT穿越的功能。PJSIP具有非常好的移植性,几乎支持现今所有系统:从桌面系统、嵌入式系统到智能手机。PJSIP同时支持语音、视频、状态呈现和即时通讯。
PJSIP很强大,很多VOIP语音视频通话应用都用它…
下面来说说如何在ubuntu下进行编译
Ubuntu编程环境
sudo apt-get install build-essential
如果你要以git的方式checkout源码
sudo apt-get install build-essential git-core
建立工作目录
mkdir -p $HOME/workspace/voip mkdir -p $HOME/workspace/toolchain
cd $HOME/workspace/voip
编译yasm
下载源码包:
http://yasm.tortall.net/Download.html
广告
./configure --prefix=$HOME/workspace/toolchain/yasm/ make -j4 make install
将yasm加入环境变量
export PATH=$HOME/workspace/toolchain/yasm/bin:$PATH
编译libX264
下载源码包:http://www.videolan.org/developers/x264.html
./configure --prefix=$HOME/workspace/toolchain/libx264/ --enable-static --enable-shared make -j4 make install
编译FFmpeg
下载源码包:https://www.ffmpeg.org/download.html#releases
./configure --prefix=$HOME/workspace/toolchain/ffmpeg --enable-shared --disable-static --enable-memalign-hack --extra-cflags="-I$HOME/workspace/toolchain/libx264/include" --extra-ldflags="-L$HOME/workspace/toolchain/libx264/lib" --enable-gpl --enable-libx264 make -j4 make install
编译SDL2.0
下载源码包:http://www.libsdl.org/download-2.0.php
./configure --prefix=$HOME/workspace/toolchain/sdl make -j4 make install
编译PJSIP
下载源码包:http://www.pjsip.org/download.htm
./configure --prefix=$HOME/workspace/toolchain/pjsip --with-sdl=$HOME/workspace/toolchain/sdl/ --with-ffmpeg=$HOME/workspace/toolchain/ffmpeg/ make -j4 make install
15 Comments
请问这样可以视频通话吗?
邮箱 wu@mr-wu.cn
sdl目录
抱歉又来打扰您啦。主要是遇到一个问题,一直找不到答案,不知道您知不知道解决方法。第一张图片是编译pjsip报错。第二张是编译出来的sdl2的目录。
抱歉,我周末家里来了朋友,要作陪,所以没有去研究这个问题,稍后我看看。、
谢谢关注 O(∩_∩)O~
希望在今晚之前您能解决所有问题 O(∩_∩)O~
您好,一直按照您的方法在做,但是出现了一个问题,不知道您可不可以帮我看一下。
稍等,晚上回去给你录个 编译过程视频
谢谢关注 O(∩_∩)O~
嗯 我编译是1.3和1.8就出错,2.4(最新版本)就不出错了。然而,我用的代码使用的是1.3和1.8的版本 https://github.com/klaus3000/QjSimple
编译项目SSL出错::-1: error: ../pjproject-2.4/pjlib/lib/libpj-i686-pc-linux-gnu.a(ssl_sock_ossl.o): undefined reference to symbol ‘X509_free@@OPENSSL_1.0.0′
/lib/i386-linux-gnu/libcrypto.so.1.0.0:-1: error: error adding symbols: DSO missing from command line
然后我试图把项目里ssl去掉就media-codec出错,应该是需要重新编译去掉ssl:
../pjproject-2.4/pjmedia/lib/libpjmedia-codec-i686-pc-linux-gnu.a(audio_codecs.o):-1: In function `pjmedia_codec_register_audio_codecs’:
../pjproject-2.4/pjmedia/lib/libpjmedia-codec-i686-pc-linux-gnu.a(audio_codecs.o):-1: In function `pjmedia_codec_register_audio_codecs’: …
…
…
然后我发觉试试运行pjsua的demo,竟然可以用,那么肯定是qt项目里配置有问题。最后,看了下编译过程加载的包,然后编译项目成功了。
linux-g++:LIBS += -lpjsua2-i686-pc-linux-gnu -lstdc++ -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 \
-lpjmedia-audiodev-i686-pc-linux-gnu -lpjmedia-i686-pc-linux-gnu -lpjnath-i686-pc-linux-gnu \
-lpjlib-util-i686-pc-linux-gnu -lsrtp-i686-pc-linux-gnu -lresample-i686-pc-linux-gnu -lgsmcodec-i686-pc-linux-gnu \
-lspeex-i686-pc-linux-gnu -lilbccodec-i686-pc-linux-gnu -lg7221codec-i686-pc-linux-gnu -lportaudio-i686-pc-linux-gnu \
-lpj-i686-pc-linux-gnu -luuid -lm -lrt -lpthread -lasound
没有博客所以激动随便贴这里,应该会有人需要的吧。
谢谢。
你好,
没想到那么你就回复我了。
目前我根据pjsip的官方编译教程编译,ubuntu版本是14.04.02,不知道为什么一直在ssl,audio_codec等都出错,要找合适的包确实有点吃力了。
你教程里看上去都是基本的编译设置,只是在sdl和ffmpeg自己编译的包。如果没出错在ssl就奇怪了。呵呵。
或者14.04.02跟14.04.1有那么差别(好像openssl开发包作用域被ubuntu官方更改什么的)。
首先感谢您的评论,我是在 Ubuntu 14.04.1 LTS 64位系统下编译的,当时下载的如果没有版本号,用的是 Latest 版本。 我会重新再编译一遍,然后带上具体的版本号,谢谢支持!O(∩_∩)O~
请问每个包使用的是哪个版本?
建议加上版本号,要不自己去找适合的很痛苦啊。还有你编译环境是32bit还是64bit?
谢谢 详细指教。
PJSIP sip界很好的开源库
PJSIP sip界很好的开源库
PJSIP VOIP应用经常用到