環(huán)境說明
ZLMediaKit編譯需要的軟件
visual studio | 2022 |
---|---|
cmake | 3.29.0-rc2 |
OpenSSL | 1.1.1w(不想踩坑的話安裝這個版本) |
libsrtp | 2.6.0 |
ZLMediaKit編譯后運行需要
libsrtp | 編譯后且配置環(huán)境變量 |
---|---|
ZLMediaKit | 編譯后文件 |
visual studio
cmake
visual stuido 20222,自帶cmake
測試是否成功
C:\Users\XXX>cmake
Usage
cmake [options] <path-to-source>
cmake [options] <path-to-existing-build>
cmake [options] -S <path-to-source> -B <path-to-build>
Specify a source directory to (re-)generate a build system for it in the
current working directory. Specify an existing build directory to
re-generate its build system.
Run 'cmake --help' for more information.
OpenSSL
可以到OpenSSL安裝window編譯版本月劈, 記得要下載是exe或msi文件康谆,不要light的文件!!!!!
按步驟安裝脱羡,安裝地址為:C:\Program Files\OpenSSL-Win64
配置環(huán)境變量序矩, 一定要配置正確J鞑t。婴栽÷郑?/strong>
測試
C:\Users\XXX>openssl -v
OpenSSL 3.2.1 30 Jan 2024 (Library: OpenSSL 3.2.1 30 Jan 2024)
可以不重啟電腦,但必須關閉已經打開cmd窗口愚争,否則會顯示'openssl' 不是內部或外部命令映皆,也不是可運行的程序 或批處理文件。
libsrtp
libsrtp下載后解壓轰枝,解壓路徑地址為: D:\XXX\soft\libsrtp-2.6.0
有兩種編譯方式:
第一種: visual stuido和cmake結合使用
首先在D:\XXX\soft\libsrtp-2.6.0\libsrtp-2.6.0新建build和install兩個文件夾
-
打開cmake軟件
Snipaste_2024-02-29_14-26-41 -
完成后出現紅色配置捅彻,勾選上BUILD_SHARED_LIBS、ENABLE_OPENSSL鞍陨、以及CMAKE_INSTALL_PREFIX的路徑步淹,然后點生成。注意這里有個問題Could NOT find OpenSSL
Snipaste_2024-02-29_14-29-54 -
如果3順利的話诚撵,完成后的結果(換回1.1.1的測試結果)缭裆,然后點open project
Snipaste_2024-02-29_16-54-09 -
會打開vs
Snipaste_2024-02-29_17-13-25 -
生成后會出現一些錯誤(但無影響)
Snipaste_2024-02-29_17-14-51 -
install文件夾生成的目錄
install目錄│文件列表: ├ include │ └ srtp2 │ │ auth.h │ │ cipher.h │ │ crypto_types.h │ └ srtp.h └ lib │ srtp2.dll │ srtp2.lib └ cmake └ libSRTP │ libSRTPConfig.cmake │ libSRTPConfigVersion.cmake │ libSRTPTargets-debug.cmake └ libSRTPTargets.cmake
-
配置環(huán)境變量到path
D:\XXX\soft\libsrtp-2.6.0\libsrtp-2.6.0\install D:\XXX\soft\libsrtp-2.6.0\libsrtp-2.6.0\install\lib
編譯ZLMediaKit
在使用VS打開ZLMediaKit項目時,如果未開啟webrtc, 會出現
[CMake] -- set_file_group D:/XXX/project/ZLMediaKit/src 205
1> [CMake] -- srt 功能已開啟
1> [CMake] CMake Warning at webrtc/CMakeLists.txt:28 (message):
1> [CMake] srtp 未找到, WebRTC 相關功能打開失敗
要開啟webrtc寿烟,需要保證以下正確
-
開啟了webrtc
Snipaste_2024-02-29_17-51-14 libsrtp編譯正確且配置環(huán)境變量
開啟成功的話, 會出現下面澈驼,然后安裝ZLMediaKit
> [CMake] -- Enable wepoll
1> [CMake] -- set_file_group D:/XXX/project/ZLMediaKit/3rdpart/ZLToolKit/src 80
1> [CMake] -- set_file_group D:/XXX/project/ZLMediaKit/src 205
1> [CMake] -- srt 功能已開啟
1> [CMake] -- found library: D:/XXX/soft/libsrtp-2.6.0/libsrtp-2.6.0/install/lib/srtp2.lib
1> [CMake] -- SCTP LIBRARIES: SCTP_LIBRARIES-NOTFOUND
1> [CMake] -- SCTP INCLUDE DIRS: SCTP_INCLUDE_DIRS-NOTFOUND
1> [CMake] -- WebRTC 功能已開啟
如果不行先把out和release文件夾刪除,再重新打開vs筛武,然后安裝ZLMediaKit
測試webrtc
打開編譯目錄缝其,雙擊MediaServer.exe
先推流挎塌,用obs推流
chrome瀏覽器打開
點確定
點開始
問題
-
MediaServer.exe打開后,由于找不到 srtp2.dll内边,無法繼續(xù)執(zhí)行代碼榴都。重新安裝程序可能會解決此問題
檢查srtp2.dll的環(huán)境變量是否正確,如:D:\XXX\soft\libsrtp-2.6.0\libsrtp-2.6.0\install\lib
image-20240301112912727 Could NOT find OpenSSL
CMake Error at C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY
OPENSSL_INCLUDE_DIR) (Required is at least version "1.1.0") C:/Program Files/Microsoft Visual Studio/2022/Community/Common7/IDE/CommonExtensions/Microsoft/CMake/CMake/share/cmake-3.28/Modules/FindPackageHandleStandardArgs.cmake 230
開始以為是安裝openssl步驟有問題假残,改為第一個選項缭贡,結果還是這樣的接口
然后看了報錯
try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR
添加了環(huán)境變量
```
OPENSSL_ROOT_DIR C:\Program Files\OpenSSL-Win64
OPENSSL_CRYPTO_LIBRARY C:\Program Files\OpenSSL-Win64\lib
OPENSSL_INCLUDE_DIR C:\Program Files\OpenSSL-Win64\include
```
完成后重啟,清除緩存生成依然沒有效果
解決方式
-
換版本OpenSSL: Win64OpenSSL-1_1_1w.msi辉懒, 省很多事
C:\Users\XXX>openssl version OpenSSL 1.1.1w 11 Sep 2023
安裝完成它的lib目錄結構為:
lib目錄│文件列表: │ capi.lib │ dasync.lib │ ec_internal_test.lib │ libapps.lib │ libcrypto.def │ libcrypto.lib │ libcrypto_static.lib │ libssl.def │ libssl.lib │ libssl_static.lib │ libtestutil.lib │ openssl.lib │ ossltest.lib │ padlock.lib │ uitest.lib └ VC │ libcrypto64MD.lib │ libcrypto64MDd.lib │ libcrypto64MT.lib │ libcrypto64MTd.lib │ libssl64MD.lib │ libssl64MDd.lib │ libssl64MT.lib │ libssl64MTd.lib └ static │ libcrypto64MD.lib │ libcrypto64MDd.lib │ libcrypto64MT.lib │ libcrypto64MTd.lib │ libssl64MD.lib │ libssl64MDd.lib │ libssl64MT.lib └ libssl64MTd.lib