win10 x64 VS2017 PJSIP 視頻通話編譯流程


win10 x64 VS2017 PJSIP 視頻通話編譯流程

1. 下載PJSIP源碼

PJSIP源碼下載地址:https://www.pjsip.org/

2. 閱讀一遍官方的文檔

文檔地址:https://trac.pjsip.org/repos/wiki/Getting-Started

本文以Win10 + VS2017 為例

官方文檔最好還是先讀一遍。

3. 下載SDL

SDL 官方地址:https://www.libsdl.org/download-2.0.php

下載如下圖版本

avatar

我們需要的是下載后得到的 SDL2-devel-2.0.10-VC\SDL2-2.0.10\lib\x64\ 目錄下的文件
如下圖:
avatar

4. 下載ffmpeg

下載地址:https://ffmpeg.zeranoe.com/builds/

這里需要下載兩個版本

avatar

注意: Dev 是編譯需要用到里面的 lib 文件
Shared 目前理解為運行時需要用到的dll

5. 安裝Windows SDK

下載地址:https://developer.microsoft.com/en-US/windows/downloads/windows-10-sdk

avatar

6. VS2017 打開PJSIP

因為PJSIP官網提供的是VS2015的版本,如果用VS2017打開需要升級平台工具集 v140 到 v141

升級步驟參考此處:https://blog.csdn.net/qq_38265674/article/details/80539228

7. 配置PJSIP 編譯環境

7.1 配置config_site.h

pj配置,新建空白的config_site.h
路徑為:.\pjlib\include\pj\config_site.h
內容如下:

#define PJMEDIA_HAS_VIDEO         1

#define PJMEDIA_VIDEO_DEV_HAS_SDL       1

#define PJMEDIA_VIDEO_DEV_HAS_DSHOW     1

#define PJMEDIA_HAS_FFMPEG         1

7.2 編譯前配置ffmpeg 和 SDL

將下載的DEV 版本的ffmpeg 的所有lib文件放入 .\pjproject-2.9\lib\ 目錄下,注意你是x86還是x64

將下載的SDL 所有lib 文件也放入此目錄下,有文章說只放sdl2.lib 但是我試了一致編譯不通過,放所有的lib就可以編譯通過

在.\pjproject-2.9\ 新建 include 文件夾

並在include 新建文件夾 ffmpeg 和sdl

將下載的DEV 版本的ffmpeg 的 .\ffmpeg-4.2-win64-dev\include\ 下所有的文件拷貝到新建的\include\ffmpeg\ 目錄

將下載的 SDL 的.\SDL2-devel-2.0.10-VC\SDL2-2.0.10\include\ 下所有的文件拷貝到新建的 \include\sdl\ 目錄下

7.3 配置編譯環境

對相應的項目右鍵屬性進行如下配置

對項目 pjmedia_videodev 的 VC++目錄 -> 包含目錄 添加 ;$(MSBuildStartupDirectory)\include\sdl;

對項目 pjmedia_videodev 的 VC++目錄 -> 庫目錄 添加 ;$(MSBuildStartupDirectory)\lib;

對項目 pjmedia 的 VC++目錄 -> 包含目錄 添加 ;$(MSBuildStartupDirectory)\include\ffmpeg;

對項目 pjmedia 的 VC++目錄 -> 庫目錄 添加 ;$(MSBuildStartupDirectory)\lib;

對項目 pjmedia_codec 的 VC++目錄 -> 包含目錄 添加 ;$(MSBuildStartupDirectory)\include\ffmpeg;

對項目 pjmedia_codec 的 VC++目錄 -> 庫目錄 添加 ;$(MSBuildStartupDirectory)\lib;

注意: 確保 你安裝的windows SDK 版本是你編譯時選擇的版本。編譯時需要修改pjproject-2.9\pjmedia\src\pjmedia-codec\ffmpeg_vid_codecs.c 1713行 FF_INPUT_BUFFER_PADDING_SIZE 為 AV_INPUT_BUFFER_PADDING_SIZE

avatar

7.4 設置PJSUA 為啟動項進行編譯

注意你選則的編譯平台,我選擇的都是x64 的
avatar

編譯成功后,生成的文件在 .\pjproject-2.9\pjsip-apps\bin\pjsua-x86_64-x64-vc14-Debug.exe

如果此時直接雙擊運行則會報錯,缺少 *.dll

所以需要將之前下載的 ffmpeg shared 版本下的 .\ffmpeg-20190826-0821bc4-win64-shared\bin\下的所有 dll 拷貝的生成的 .\pjproject-2.9\pjsip-apps\bin\路徑下

同樣對於SDL 也需要將下載的 sdl2.dll 拷貝到 .\pjproject-2.9\pjsip-apps\bin\路徑下 路徑下

這樣在運行時應該不會報錯

運行截圖
avatar

8. 使用編譯后的pjsua進行視頻通話

視頻通話前需要開啟視頻設置

vid enable ; 打開視頻
vid acc autotx on ; 即使打開了視頻,默認視頻也不會自動開始傳輸。要修改該設置
vid acc autorx on ; 即使接收到了視頻,默認也不會播放,要修改該設置

這之前在進行呼叫前設置

在命令行輸入 m 進行呼叫

在命令行繼續輸入 sip:192.168.19.73 呼叫另一台電腦

兩個運行的pjsua 都需要進行上面的開啟視頻設置

接收方的電腦需要 先輸入 a 進行接收通話,回車后輸入 200 建立通話

此時雙方通信只有音頻,需要開啟視頻的傳送

vid call tx on 1 ; 打開視頻發送

雙方都要設置,這樣才能進行視頻發送

顯示預覽窗框使用

vid dev prev on -1 ; 打開采集的設備的預覽窗口

到此大功告成,可以愉快的與自己進行視頻通話了,哈哈哈哈!!!

參考網址

pjsip win32啟用視頻通話

Win10環境下使用VS2015編譯PJProject

解決Visual Studio(2017)軟件無法重新生成問題

Getting Started: Building and Using PJSIP and PJMEDIA


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM