本来想采用 CentOS7 编译,过程中各种ssl版本低,cmake版本低的错误。于是采用 Debian12 编译,实现了语音对讲。后续再尝试在 CentOS7 上进行编译。
系统情况
系统环境:
- 服务器:128GB 内存 56 核心 HDD、SSD、NVME 多硬盘
- 操作系统:Debian-12.9
- 网卡:万兆网卡
依赖库
核心依赖库:
- openssl
- cmake
- libsrtp
参见 ZLM 官方的根据系统需要安装的库,逐一进行安装。见:https://docs.zlmediakit.com/zh/tutorial/
需提前安装基本库:
yum -y install gcc gcc-c++ make
sudo apt install build-essential
sudo apt install libssl-dev
sudo apt install libsdl-dev
sudo apt install libavcodec-dev
sudo apt install libavutil-dev先下载 ffmpeg 7.x,解压并复制 ffmpeg 和 ffprobe 到 /usr/local/bin 下。
升级 OpenSSL 到 3.x
这个 Debian12 默认就安装的 3.0 可以用 openssl version -a 进行验证。
OpenSSL 3.0.13 30 Jan 2024 (Library: OpenSSL 3.0.13 30 Jan 2024)
built on: Fri Feb 2 21:17:10 2024 UTC
platform: linux-x86_64
options: bn(64,64)
......如不是 openssl 3.x 需自行升级。
CentOS 7 升级 OpenSSL3
OpenSSL3 下载地址:https://openssl-library.org/source/
因为是 CentOS7,我下载的 openssl-3.0.16.tar 版本
首先更新系统库:
yum update -y
yum install -y perl-IPC-Cmd
yum install -y openssl openssl-devel
yum install -y zlib zlib-devel openssl-devel sqlite-devel bzip2-devel libffi libffi-devel gcc gcc-c++
yum install -y wget开始编译:
cd openssl-3.0.16
./config --prefix=/usr/local --openssldir=/usr/local/ssl shared zlib
make -j8
make install
# 2
./config --prefix=/usr/local/openssl shared zlib备份并创建软链接 libssl.so.3
mv -v /usr/bin/openssl /usr/bin/openssl-1.1.1
ln -s /usr/local/bin/openssl /usr/bin/openssl
ln -s /usr/local/include/openssl /usr/include/openssl
ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so.3
ln -s /usr/local/lib64/libcrypto.so.3 /usr/lib64/libcrypto.so.3
rm -v /usr/lib64/libssl.so
ln -s /usr/local/lib64/libssl.so.3 /usr/lib64/libssl.so验证:
[openssl-3.0.16]# openssl version -a
OpenSSL 3.0.16 11 Feb 2025 (Library: OpenSSL 3.0.16 11 Feb 2025)
built on: Fri May 30 00:55:47 2025 UTC
platform: linux-x86_64
options: bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB -DNDEBUG
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/lib64/engines-3"
MODULESDIR: "/usr/local/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0x7ffaf3bfffebffff:0x29c67afDebian 和 Ubuntu 等系统,ssl 默认在:/lib/x86_64-linux-gnu
检查 ssl 库位置,并写入到 ld 中。
echo "/usr/local/lib64/" >> /etc/ld.so.conf使修改后的 /etc/ld.so.conf 生效
ldconfig -vcmake 升级
可在 cmake 的官方站点 https://cmake.org/download/,下载 cmake 安装文件。
编译 ZLM 的最低 cmake 版本为 3.16 及以上。
有 sh 版本,也有 tar 源码。可选择下载:
- https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.sh
- https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-windows-x86_64.msi
- https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-windows-x86_64.zip
- https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7-linux-x86_64.tar.gz
- https://github.com/Kitware/CMake/releases/download/v3.31.7/cmake-3.31.7.tar.gz
sh安装
解压到本地,copy 并覆盖 /usr/bin/cmake 即可完成安装。
./cmake-3.31.7-linux-x86_64.sh --prefix=/usr
cd /usr/cmake-3.31.7-linux-x86_64
cp -v bin/* /usr/bin/
cp -rv share/* /usr/share/源码编译安装
采用源码,下载到本地并解压。
tar -zxvf cmake-3.25.3.tar.gz
cd cmake-3.25.3
./configure
make -j8
sudo make install最后用 cmake -version 验证,输出 cmake version 3.25.3 成功。
libsrtp 安装
libsrtp 是 SRTP (Secure Realtime Transport Protocol) 安全实时传输协议的开发包。作为 ZLM WebRTC 直接的依赖(没开启 WebRTC 的时候,我没安装,ZLM 也能编译通过)
下载地址:
开始编译
tar -xvf libsrtp-2.7.0.tar
cd libsrtp-2.7.0
./configure --enable-openssl
make
sudo make install社区推荐:
./configure --prefix=/usr/lcoal --enable-openssl --with-openssl-dir=/usr/local/opensslZLM 编译
下载ZLM代码
#国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init开启WebRTC编译
对讲和语音需要 webrtc 支持,需要开启:-DENABLE_WEBRTC
mkdir build
cd build
cmake .. -DENABLE_WEBRTC=true编译的成果在:ZLMediaKit/release/linux/Debug 下,可进行验证。
cd release/linux/Debug
./MediaServer -c config.iniZLM 设置 HTTPS
设置 zlm 支持 ssl
[http]
# HTTP 协议端口
port=19092
sendBufSize=65536
# HTTPS 协议端口
sslport=8443
# 允许跨域请求
allow_cross_domains=1采用 https://ip:8443/ 进行访问,即可实现对讲。
