先去官網下載最新的源碼包,我用的版本是2.7.1 。
將源代碼解壓后,在路徑:pjproject-3.7.1\pjlib\include\pj 中創建新文件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 Files\Microsoft SDKs\Windows\v7.0\Samples\multimedia\directshow\baseclasses
中找到這個工程。
但事實上,pjproject-3.7.1中已經自帶了這個源碼,源碼位置在pjproject-3.7.1\third_party\BaseClasses中,編譯結果在pjproject-3.7.1\third_party\lib下。
可根據具體的編譯需要使用。
-----------------------------------------------------------------------------------------------------------
至此,需要的編譯環境基本上都有了,在開始編譯前,還要修改下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.