VS2015实现PJSIP库的编译与运行

本文介绍了如何在VS2015中编译和运行PJSIP库,详细步骤包括从官方网站下载PJSIP,解压到pjproject-2.8,以及在VS2015中创建新工程并添加PJSIP库。在编译过程中可能会遇到头文件缺失的问题,解决方法是手动添加所需头文件。
摘要由CSDN通过智能技术生成

PJSIP介绍

​​​ ​​​​​​​PJSIP是一个用C语言编写的免费开源多媒体通信库,实现了基于标准的协议,如SIP,SDP,RTP,STUN,TURN和ICE。它将**信令协议(SIP)**与丰富的多媒体框架和NAT遍历功能结合到高级API中,该API可移植,适用于从桌面,嵌入式系统到移动手持设备的几乎任何类型的系统。PJSIP既紧凑又功能丰富。它支持音频,视频,状态和即时消息,并具有丰富的文档。PJSIP 非常便携。在移动设备上,它抽象出系统相关的功能,并且在许多情况下能够利用设备的本机多媒体功能。PJSIP由一个自2005年以来专门为该项目工作的小团队开发,有来自世界各地的数百名开发人员参与,并自2007年起在SIP互操作性事件(SIPit)中定期进行测试。

PJSIP的下载

直接去开源的官方网站下载[https://www.pjsip.org/]

VS2015下载安装编译库

解压PJSIP -> pjproject-2.8

  1. 解压后的文件,具体文件内容我也是初学者没有具体的分析,这边不做介绍。
    解压后的文件描述
  2. VS2015添加库,VS添加库的方法比较简单
  • 以添加pjsip库为例:
    VS创建新的工程,添加项目,寻找项目的路径。\libpjsip\pjlib\build
    寻找VS工程添加即可。
  • 编译
    编译的时候回出问题,显示找不到头文件config_site.h
    只要自己按需求在目录\libpjsip\pjlib\include\pj添加一个config_site.h头文件即可。
  • 头文件内容参考
#if defined(PJ_WIN32_WINCE) && PJ_WIN32_WINCE!=0

   /*
    * PJLIB settings.
    */

   /* Disable floating point support */
   #define PJ_HAS_FLOATING_POINT		0

   /*
    * PJMEDIA settings
    */

   /* Select codecs to disable */
   #define PJMEDIA_HAS_L16_CODEC		0
   #define PJMEDIA_HAS_ILBC_CODEC		0

   /* We probably need more buffers on WM, so increase the limit */
   #define PJMEDIA_SOUND_BUFFER_COUNT		32

   /* Fine tune Speex's default settings for best performance/quality */
   #define PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY	5

   /* For CPU reason, disable speex AEC and use the echo suppressor. */
   #define PJMEDIA_HAS_SPEEX_AEC		0

   /* Previously, resampling is disabled due to performance reason and
    * this condition prevented some 'light' wideband codecs (e.g: G722.1)
    * to work along with narrowband codecs. Lately, some tests showed
    * that 16kHz <-> 8kHz resampling using libresample small filter was 
    * affordable on ARM9 260 MHz, so here we decided to enable resampling.
    * Note that it is important to make sure that libresample is created
    * using small filter. For example PJSUA_DEFAULT_CODEC_QUALITY must
    * be set to 3 or 4 so pjsua-lib will apply small filter resampling.
    */
   //#define PJMEDIA_RESAMPLE_IMP		PJMEDIA_RESAMPLE_NONE
   #define PJMEDIA_RESAMPLE_IMP		PJMEDIA_RESAMPLE_LIBRESAMPLE

   /* Use the lighter WSOLA implementation */
   #define PJMEDIA_WSOLA_IMP			PJMEDIA_WSOLA_IMP_WSOLA_LITE

   /*
    * PJSIP settings.
    */

   /* Set maximum number of dialog/transaction/calls to minimum to reduce
    * memory usage 
    */
   #define PJSIP_MAX_TSX_COUNT 		31
   #define PJSIP_MAX_DIALOG_COUNT 		31
   #define PJSUA_MAX_CALLS			4

   /*
    * PJSUA settings
    */

   /* Default codec quality, previously was set to 5, however it is now
    * set to 4 to make sure pjsua instantiates resampler with small filter.
    */
   #define PJSUA_DEFAULT_CODEC_QUALITY		4

   /* Set maximum number of objects to minimum to reduce memory usage */
   #define PJSUA_MAX_ACC			4
   #define PJSUA_MAX_PLAYERS			4
   #define PJSUA_MAX_RECORDERS			4
   #define PJSUA_MAX_CONF_PORTS		(PJSUA_MAX_CALLS+2*PJSUA_MAX_PLAYERS)
   #define PJSUA_MAX_BUDDIES			32

#endif	/* PJ_WIN32_WINCE */


/*
* Typical configuration for Symbian OS target
*/
#if defined(PJ_SYMBIAN) && PJ_SYMBIAN!=0

   /*
    * PJLIB settings.
    */

   /* Disable floating point support */
   #define PJ_HAS_FLOATING_POINT		0

   /* Misc PJLIB setting */
   #define PJ_MAXPATH				80

   /* This is important for Symbian. Symbian lacks vsnprintf(), so
    * if the log buffer is not long enough it's possible that
    * large incoming packet will corrupt memory when the log tries
    * to log the packet.
    */
   #define PJ_LOG_MAX_SIZE			(PJSIP_MAX_PKT_LEN+500)

   /* Since we don't have threads, log buffer can use static buffer
    * rather than stack
    */
   #define PJ_LOG_USE_STACK_BUFFER		0

   /* Disable check stack since it increases footprint */
   #define PJ_OS_HAS_CHECK_STACK		0


   /*
    * PJMEDIA settings
    */

   /* Disable non-Symbian audio devices */
   #define PJMEDIA_AUDIO_DEV_HAS_PORTAUDIO	0
   #define PJMEDIA_AUDIO_DEV_HAS_WMME		0

   /* Select codecs to disable */
   #define PJMEDIA_HAS_L16_CODEC		0
   #define PJMEDIA_HAS_ILBC_CODEC		0
   #define PJMEDIA_HAS_G722_
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值