环境说明

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

cmake可以到这两个地方下载:下载1下载2

测试是否成功

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 stuidocmake结合使用

  1. 首先在D:\XXX\soft\libsrtp-2.6.0\libsrtp-2.6.0新建build和install两个文件夹

  2. 打开cmake软件

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

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

  5. 会打开vs

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

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

  • 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

添加了环境变量

```
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的更多相关文章

  1. Ubuntu18.04编译ZLMediakit支持webrtc

    背景 最近在做流媒体相关的一些东西, 比较了一些开源的流媒体服务, 目前 srs 和 ZlmediaKit 项目是评价比较高的, 今天主要在 Ubuntu18.04 上编译 ZlmediaKit, 并 ...

  2. 编译最新版webrtc源码和编译好的整个项目10多个G【分享】

    编译最新版webrtc源码和编译好的整个项目10多个G[分享] 参考https://webrtc.org/native-code/development/编译最新版webrtc源码: Git clon ...

  3. OGRE 2.1 Windows 编译

    版权所有,转载请注明链接 OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE ...

  4. Windows编译ejabberd

    Windows编译ejabberd(金庆的专栏)安装 erlang OTP. 添加路径到 PATH, 使 erl 可以运行.git clone ejabberd安装 rebar:git clone g ...

  5. 【转载】OGRE 2.1 Windows 编译

    OGRE 2.1 Windows 编译 环境: Windows 7 64Bit Visual Studio 2012 OGRE 2.1 CMake 2.8.12.1 OGRE: OGRE官方推出了最新 ...

  6. CEF3.2623使用记录:windows编译

    CEF3.2623使用记录:windows编译 1:cef3.2623下载地址 2623是cef3最后一个支持xp系统的版本,且可以支持html的audio标签,可以用作对html音频的处理下载地址为 ...

  7. Windows 编译安装 nginx 服务器 + rtmp 模块

    有关博客: <Windows 编译安装 nginx 服务器 + rtmp 模块>.<Ubuntu 编译安装 nginx>.<Arm-Linux 移植 Nginx> ...

  8. 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件)

    单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 说实话很不想写这篇文章,因为这和我一贯推崇的最好全部编译并使用w ...

  9. 单独编译和使用webrtc音频降噪模块(附完整源码+测试音频文件)

    单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件) 单独编译和使用webrtc音频回声消除模块(附完整源码+测试音频文件) webrtc的音频处理模块分为降噪ns,回音消除aec,回声 ...

  10. 单独编译和使用webrtc音频增益模块(附完整源码+测试音频文件)

    webrtc的音频处理模块分为降噪ns和nsx,回音消除aec,回声控制acem,音频增益agc,静音检测部分.另外webrtc已经封装好了一套音频处理模块APM,如果不是有特殊必要,使用者如果要用到 ...

随机推荐

  1. 【小实验】使用 wrk 的 docker 容器来压测另一个容器

    作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 GET 请求 想压测容器环境的服务性能,发现两个麻烦: 本 ...

  2. 期盼已久全平台支持-开源IM项目OpenIM之uniapp更新

    国内uniapp使用广泛,OpenIM的uniapp sdk以及文档和demo (https://github.com/OpenIMSDK/Open-IM-Uniapp-Demo)都已更新,本文主要展 ...

  3. Web 3.0 - 圈里的百科

    Web3.0只是由业内人员制造出来的概念词语,最常见的解释是,网站内的信息可以直接和其他网站相关信息进行交互,能通过第三方信息平台同时对多家网站的信息进行整合使用:用户在互联网上拥有自己的数据,并能在 ...

  4. CF1045G AI robots题解

    题目链接:洛谷 或者 CF 本题考虑转化为 cdq 分治模型 对于 cdq 分治来说,只需要考虑左边对右边的影响,那我们要考虑该怎样设置第一维度的左右对象.很显而易见的是抛开 \(q\) 限制而言,我 ...

  5. Arduino语言基础(萌新)

    Arduino语言基础(萌新) Arduino语言注解Arduino语言是建立在C/C++基础上的,其实也就是基础的C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化 ...

  6. 针对SpringBoot服务端返回的空对象和空数组问题

    返回的Json会自动过滤掉空指针的对象,但是若遇到非空指针的没有任何内容的对象,举例如下: public class Person { private String name; private Int ...

  7. 《ASP.ENT Core 与 RESTful API 开发实战》-- 读书笔记(第2章)

    第 2 章 .NET Core 和 ASP.NET Core 2.1 .NET Core 简介 .NET Core 是一个通用的开发平台,最重要的特点是跨平台,同时也是一个开源平台 .NET Core ...

  8. .NET Core开发实战(第7课:用Autofac增强容器能力)--学习笔记(下)

    07 | 用Autofac增强容器能力:引入面向切面编程(AOP)的能力 如何获取没有命名的服务呢? // Autofac 容器获取实例的方式是一组 Resolve 方法 var service = ...

  9. Linux-使用cat查看文件后出现乱码,整个终端显示包括shell提示符都是乱码

    问题描述:在bash下用cat显示二进制文件后会出现乱码,整个终端显示包括shell提示符都是乱码,这个跟语言环境无关. 解决办法: 恢复的话,大致有以下几种方法:方法一:盲打输入echo -e '\ ...

  10. react中的setState是同步还是异步?react为什么要将其设计成异步?

    壹 ❀ 引 了解react的同学都知道,react遵守渲染公式UI=Render(state),状态决定了组件UI最终渲染的样子(props也可以理解为外部传入的状态),由此可见state对于reac ...