VoIP应用在Ubuntu 14.04下编译FFmpeg libX264及PJSIP

 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应用经常用到

Leave a Reply