windows 11编译zlmediakit
之前做了一个 GB28181的轻量平台,但是要想安装程序需要一点容器之类的操作经验,在使用上确实有点不太方便。因此我就想着把程序做成用户双击 直接使用的模式。 为了实现这个目的,需要在 windows 上编译 zlmediakit。
本文档介绍如何在 Windows 11 环境下编译 ZLMediaKit。
由于在按照官方教程编译时出现了几个错误,并且文档有些地方写的不清不楚的,我觉得有必要更新写一篇文档补充下。
请跟随步骤一步一步操作。
1. 环境准备
在开始编译之前,请确保你的开发环境已安装以下软件:
- Visual Studio: VS2022(需安装 C++ 桌面开发组件)。
- Git: 用于克隆代码仓库。
我进行编译时使用的是 Windows11系统,VS2022。 编译过程中无需打开 vs2022。只要 powershell 以及 x64 Native Tools Command Prompt for VS 2022。
2. 获取代码
打开命令行工具(CMD 或 PowerShell),执行以下命令克隆代码并初始化子模块:
1 | # 克隆主仓库 |
我当前编译的是 2026/3/1 日的最新 master 分支代码。
3、基于 scoop + vcpkg 的 Windows 版编译
注意: 以下是 zlmediakit 官网关于 windows编译的内容,我对其中进行了部分修改保证编译能成功。
以下为基于 scoop + vcpkg 编译 ZLMediaKit 的一种方式。
scoop: Windows 命令行下使用的软件包安装管理工具vcpkg: 微软发起的 C++ 库管理器,其中有大量常用开源库
由于可以在命令行下使用,可以非常方便的进行自动化集成,推荐大家试用。
⚠️ 注意
- 以下所有操作如无特殊说明均需在 PowerShell 命令行下进行
4、基于 scoop 及 vcpkg 安装编译依赖
4.1 下载安装 scoop 并使用 scoop 安装依赖工具
说明: 直接在 powershell 中执行下面的命令即可,该步骤中很少出错。
以下是为了安装依赖工具 cmake 和 ninja(可选,但建议安装),如已安装,可跳过。
具体可参考其官网说明,以下仅列出相关简要步骤:
**设置环境变量
SCOOP**,用于配置scoop的下载安装目录(包括其管理的软件包):1
$env:SCOOP = 'C:\work\develop\scoop'
为当前用户设置允许执行 PowerShell 脚本:
1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
安装
scoop:1
iwr -useb get.scoop.sh | iex
为
scoop添加extras软件仓库:1
scoop bucket add extras
安装
cmake及ninja:1
scoop install cmake ninja
💡 提示:为方便后续使用,需将
C:\work\develop\scoop设置到环境变量SCOOP中,将C:\work\develop\scoop\shims追加到环境变量PATH中。


4.2 下载配置 vcpkg 并使用 vcpkg 安装依赖库
以下是为了安装相关依赖库,具体包括:openssl 以及 libsrtp,其他可选依赖(如:ffmpeg)也应可安装,暂未测试。
vcpkg 具体使用可参考:
**下载
vcpkg**,其中包括各种配置脚本以及开源库的编译脚本,下载路径假设为C:\work\develop:1
git clone https://github.com/microsoft/vcpkg
下载预编译的
vcpkg包管理工具:1
.\vcpkg\bootstrap-vcpkg.bat -disableMetrics
编译
openssl:1
.\vcpkg\vcpkg.exe install --triplet=x64-windows-static openssl
**编译
libsrtp**(需要ENABLE_OPENSSL):编辑
C:\work\develop\vcpkg\ports\libsrtp\portfile.cmake,修改vcpkg_configure_cmake为如下:(注意 下面配置修改成了当前版本的内容)1
2
3
4
5
6
7
8vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
"-DCMAKE_PROJECT_INCLUDE=${CMAKE_CURRENT_LIST_DIR}/cmake-project-include.cmake"
-DLIBSRTP_TEST_APPS=OFF
-DENABLE_OPENSSL:BOOL=ON
${FEATURE_OPTIONS}
)然后进行编译(官方方法):
1
.\vcpkg\vcpkg.exe install --triplet=x64-windows-static libsrtp
或者 (后期我使用的方法)
1
.\vcpkg\vcpkg.exe install "libsrtp[openssl]:x64-windows-static"
说明 : 我成功使用 1 步骤编译了 程序,但是程序在后面的使用中发现 webrtc 有问题,最后查找原因发现可能是 openssl 同 libsrtp 兼容的问题。我先是用的官方方法编译的 libsrtp ,后面使用上面的命令重新编译了 libsrtp 才正常。
1
2
3# 先卸载,再重新安装
.\vcpkg\vcpkg.exe remove libsrtp:x64-windows-static --recurse
.\vcpkg\vcpkg.exe install "libsrtp[openssl]:x64-windows-static"
5、编译 ZLMediaKit
从开始菜单中打开 VS2022 的开发者命令行模式(x64 Native Tools Command Prompt for VS 2022)。默认未找到基于 PowerShell 的 x64 位版本,可先使用 cmd 版本,然后执行 powershell 切换到 PowerShell。


5.1 修改 CMakeLists.txt
在文件里搜索: OPENSSL_LIBRARIES ,将内容修改成下面的内容:
1 | 查找 openssl 是否安装 |
主要是替换成下面的脚本,其它不动(每个zlm版本可能都不太一样,需要注意修改的地方):
1 | if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND OPENSSL_USE_STATIC_LIBS) |
5.1 执行编译命令
1 | # 在zlmediakit 源码根目录下执行下面的命令。执行前请确保下载了 zlm 的源码,并且执行了 git submodule update --init --recursive |
编译成功后,源码目录下多一个 release 目录,编译的程序在里面。
6、运行
在 C:\work\develop\ZLMediaKit\release\windows\RelWithDebInfo 目录直接双击运行 MediaServer.exe 即可。

只要复制 MediaServer.exe , MediaServer.exe , www目录,到其它位置,就可以使用基本的功能。

7、问题
问题1:webrtc 显示 openssl 问题
原因:openssl 与 libsrtp 兼容有问题,需要重新编译libsrtp。
1 | # 先卸载,再重新安装 |




















