先去官网下载最新的源码包,我用的版本是2.7.1 。
将源代码解压后,在路径:pjproject-3.7.1pjlibincludepj 中创建新文件config_site.h,内容如下:
1 #ifndef __CONFIG_SITE_H__
2 #define __CONFIG_SITE_H__ 3 4 #define PJMEDIA_HAS_VIDEO 1 5 #define PJMEDIA_HAS_OPENH264_CODEC 1 6 #define PJMEDIA_HAS_LIBYUV 1 7 #define PJMEDIA_VIDEO_DEV_HAS_SDL 1 8 #define PJMEDIA_VIDEO_DEV_HAS_DSHOW 1 9 #define PJMEDIA_HAS_FFMPEG 1 10 11 #endif
- ffmpeg
去ffmpeg的一个编译站点https://ffmpeg.zeranoe.com/builds/ 下载最新的开发版本,我下载的是3.4.1 。
将它解压到pjproject-3.7.1下,ffmpeg的include和lib目录应该是在pjproject-3.7.1/ffmpeg-3.4.1-win32-dev下。
- SDL
去SDL官网https://www.libsdl.org/download-2.0.php下载SDL的编译版本,我下载的是2.0.7 。
将它解压到pjproject-3.7.1下,SDL的include和lib目录应该是在pjproject-3.7.1/SDL2-2.0.7下。
- OpenH264
去OpenH264官网下载源码,具体编译方法请参考另一帖《Windows下用VS2015+MSYS编译OpenH264》。
将源码解压到pjproject-3.7.1下,按照帖子里的方法去编译即可。编译完成后,openh264.lib的路径是在pjproject-3.7.1/openh264-master下。
- baseclasses
这个包用来生成strmbasd.lib和strmbase.lib,代码来源于Window 7 SDK,可以从这个链接下载https://www.microsoft.com/en-us/download/details.aspx?id=18950
将ISO文件加载到虚拟光驱,但你不必全部安装,只需要将setup下的WinSDKSamples安装即可,之后就可以在
C:Program FilesMicrosoft SDKsWindowsv7.0Samplesmultimediadirectshowaseclasses
中找到这个工程。
但事实上,pjproject-3.7.1中已经自带了这个源码,源码位置在pjproject-3.7.1 hird_partyBaseClasses中,编译结果在pjproject-3.7.1 hird_partylib下。
可根据具体的编译需要使用。
-----------------------------------------------------------------------------------------------------------
至此,需要的编译环境基本上都有了,在开始编译前,还要修改下pjproject-vs14解决方案中的一些配置:
要在pjmedia、pjmedia-codec、pjmedia-videodev、pjsua这几个工程中中添加ffmpeg、SDL、OpenH264的include或lib路径。
右键点击工程->属性->配置中选择“所有配置”->C/C++->常规->附加包含目录中添加include路径;
右键点击工程->属性->配置中选择“所有配置”->链接器->常规->附加库目录中添加lib路径。
最后一个关键点是pjsua工程,要在链接器->输入->忽略特定默认库中添加libcmt.lib(release版本)或libcmtd.lib(debug版本),还要在链接器->命令行->其他选项中添加/SAFESEH:NO,忽略一个错误警告:error LNK2026 模块对于 SAFESEH 映像是不安全的。
That's all.