windows编译ZLMediaKit流媒体服务webrtc
环境说明
ZLMediaKit编译需要的软件
| visual studio | 2022 |
|---|---|
| cmake | 3.29.0-rc2 |
| OpenSSL | 1.1.1w(不想踩坑的话安装这个版本) |
| libsrtp | 2.6.0 |
ZLMediaKit编译后运行需要
| libsrtp | 编译后且配置环境变量 |
|---|---|
| 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

配置环境变量, 一定要配置正确!!!

测试
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软件

完成后出现红色配置,勾选上BUILD_SHARED_LIBS、ENABLE_OPENSSL、以及CMAKE_INSTALL_PREFIX的路径,然后点生成。注意这里有个问题Could NOT find OpenSSL

如果3顺利的话,完成后的结果(换回1.1.1的测试结果),然后点open project

会打开vs

生成后会出现一些错误(但无影响)

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
配置环境变量到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

libsrtp编译正确且配置环境变量
开启成功的话, 会出现下面,然后安装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,无法继续执行代码。重新安装程序可能会解决此问题
检查srtp2.dll的环境变量是否正确,如:D:\XXX\soft\libsrtp-2.6.0\libsrtp-2.6.0\install\lib

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
添加了环境变量
```
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
windows编译ZLMediaKit流媒体服务webrtc的更多相关文章
- Ubuntu18.04编译ZLMediakit支持webrtc
背景 最近在做流媒体相关的一些东西, 比较了一些开源的流媒体服务, 目前 srs 和 ZlmediaKit 项目是评价比较高的, 今天主要在 Ubuntu18.04 上编译 ZlmediaKit, 并 ...
- 编译最新版webrtc源码和编译好的整个项目10多个G【分享】
编译最新版webrtc源码和编译好的整个项目10多个G[分享] 参考https://webrtc.org/native-code/development/编译最新版webrtc源码: Git clon ...
- OGRE 2.1 Windows 编译
版权所有,转载请注明链接 OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE ...
- Windows编译ejabberd
Windows编译ejabberd(金庆的专栏)安装 erlang OTP. 添加路径到 PATH, 使 erl 可以运行.git clone ejabberd安装 rebar:git clone g ...
- 【转载】OGRE 2.1 Windows 编译
OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE: OGRE官方推出了最新 ...
- CEF3.2623使用记录:windows编译
CEF3.2623使用记录:windows编译 1:cef3.2623下载地址 2623是cef3最后一个支持xp系统的版本,且可以支持html的audio标签,可以用作对html音频的处理下载地址为 ...
- Windows 编译安装 nginx 服务器 + rtmp 模块
有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...
- 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)
单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 说实话很不想写这篇文章,因为这和我一贯推崇的最好全部编译并使用w ...
- 单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件)
单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件) webrtc的音频处理模块分为降噪ns,回音消除aec,回声 ...
- 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件)
webrtc的音频处理模块分为降噪ns和nsx,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到 ...
随机推荐
- 【解决一个小问题】proto文件中的enum,去掉长长的重复的enum名字
在proto中定义的enum,通常类型名字都会带上enum的前缀,很丑陋,如何去掉呢? enum DataSourceType{ NotUse = 0; MySQL = 1; ElasticSearc ...
- python.exe和pythonw.exe的区别(区分.py、.pyw、.pyc、.pyo文件)
python和pythonw 在Windows系统搭建好Python的环境后,进入Python的安装目录,大家会发现目录中有python.exe和pythonw.exe两个程序.如下图所示: 它们到底 ...
- SqlSugar更新数据
1.根据实体对象更新 所谓按实体对象更新就是:db.Updateable(参数对象) 有参数的重载 db.Updateable(实体或者集合).ExecuteCommand() //右标题1 下面的所 ...
- 解决:docker开启mongo镜像
首先通过docker pull mongo拉取mongo镜像 (如果带版本,拉取为响应版本,若不带版本则拉取最新版本) 开启 mongodb 容器 可以选择将宿主机的mongo工作目录进行共享,作为d ...
- glTexImage2D: 读取位置XXX时发生访问冲突
在跟着Learn OpenGL教程学习纹理部分时,大家或许会加载一张自己喜欢的图片作为纹理,但加载某些图片时会报以下错误: 读取位置XXX时发生访问冲突. 这个错误通常出现在以下位置: uns ...
- scrapy框架使用:分布式、增量式
scrapy框架的使用 前记:爬虫框架部分整理完成,后续慢慢完善, 声明: 1)仅作为个人学习,如有冒犯,告知速删! 2)不想误导,如有错误,不吝指教! 创建工程: scrapy startproje ...
- 【简写MyBatis】01-简单映射器
前言 新开一个坑,为了学习一下MyBatis的源码,写代码是次要的,主要为了吸收一下其中的思想和手法. 目的 关联对象接口和映射类的问题,把 DAO 接口使用代理类,包装映射操作. 知识点 动态代理 ...
- JS 这一次彻底理解插入排序
壹 ❀ 引 在前两篇排序文章中,我们分别介绍了冒泡排序与选择排序,趁热打铁,我们接着聊插入排序.老实说,在分析排序过程中头脑很清楚,过后再尝试写出排序代码还有点坎坷...可能是我脑瓜子不太机灵的问题, ...
- NC213912 芭芭拉冲鸭~(续)
题目链接 题目 题目描述 芭芭拉这次来到了一棵字母树,这同样是一棵无根树,每个节点上面有一个小写字母. 芭芭拉想知道,自己从x冲刺到y,从x走到y收集所有字母,选择其中一部分字母组成一个回文串,这个回 ...
- Swoole从入门到入土(15)——WebSocket服务器[初步接触]
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.换句话说,Websocket让web可以与服务端实现长连接. 在Swoole中,通过内置的 WebSock ...