别再折腾了!Ubuntu 22.04 下 ZLMediaKit 一键编译脚本实测(附常见编译错误解决)

发布时间:2026/6/3 2:44:52

别再折腾了!Ubuntu 22.04 下 ZLMediaKit 一键编译脚本实测(附常见编译错误解决) Ubuntu 22.04 下 ZLMediaKit 极简编译指南从踩坑到一键部署在流媒体服务开发领域ZLMediaKit 凭借其卓越的性能和丰富的协议支持已成为众多开发者的首选框架。然而对于初次接触该框架的开发者而言编译过程中的依赖问题和版本冲突往往成为拦路虎。本文将分享一套经过实战检验的自动化编译方案帮助开发者快速搭建稳定的流媒体服务环境。1. 环境准备与依赖管理Ubuntu 22.04 作为长期支持版本其软件仓库中的部分库版本可能与 ZLMediaKit 的编译要求存在差异。以下是经过优化的依赖安装方案#!/bin/bash # 基础构建工具 sudo apt update sudo apt install -y git gcc make cmake pkg-config automake autoconf libtool # 核心依赖库精简版 sudo apt install -y libssl-dev libsdl2-dev libavcodec-dev libavutil-dev ffmpeg \ libass-dev libtheora-dev libva-dev libvorbis-dev zlib1g-dev # 解决常见符号链接问题 sudo ln -sf /usr/lib/x86_64-linux-gnu/libsrtp2.so.1 /usr/lib/libsrtp.so提示上述脚本已处理了最常见的 libsrtp 符号链接问题避免了后续编译中的头文件缺失错误。依赖安装完成后建议检查 OpenSSL 版本openssl version # 预期输出OpenSSL 3.0.x若系统版本为 3.0无需额外处理。对于特定需要 OpenSSL 1.1 的场景可使用以下方案方案命令适用场景多版本共存sudo apt install libssl1.1需要同时兼容新旧版本源码编译wget https://www.openssl.org/source/openssl-1.1.1w.tar.gz需要特定补丁版本2. 源码获取与编译优化传统 git clone 方式在网络不稳定时容易失败推荐使用以下增强型获取方式# 国内用户首选镜像源 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit # 智能重试的子模块更新 for i in {1..3}; do git submodule update --init --recursive break || sleep 5 done针对不同的使用场景我们提供两种编译方案方案A快速开发模式调试版./build_for_linux.sh -d方案B生产环境模式发布版./build_for_linux.sh -r --with-ffmpeg --with-srtp关键参数对比参数作用推荐场景-d启用调试符号开发测试-r优化编译选项生产环境--with-ffmpeg集成FFmpeg功能需要转码--with-srtp启用SRTP加密安全传输3. 典型编译问题深度解析3.1 OpenSSL 相关错误处理错误现象SSLUtil.cpp:315:33: error: invalid conversion from const rsa_st* to RSA*解决方案确认系统OpenSSL版本一致性# 检查动态库链接 ldconfig -p | grep libssl创建兼容性符号链接sudo ln -sf /usr/lib/x86_64-linux-gnu/libssl.so.3 /usr/local/lib/libssl.so.1.1 sudo ln -sf /usr/lib/x86_64-linux-gnu/libcrypto.so.3 /usr/local/lib/libcrypto.so.1.13.2 libsrtp 兼容性问题当遇到srtp2/srtp.h: No such file or directory错误时可采用以下方案方案一使用系统包推荐sudo apt install libsrtp2-dev export PKG_CONFIG_PATH/usr/lib/x86_64-linux-gnu/pkgconfig方案二源码编译wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.5.0.tar.gz tar xzf v2.5.0.tar.gz cd libsrtp-2.5.0 ./configure --enable-openssl --prefix/usr/local make -j$(nproc) sudo make install4. 一键编译脚本实现以下是整合了所有优化措施的完整编译脚本#!/bin/bash set -e # 环境检测 if [ $(lsb_release -rs) ! 22.04 ]; then echo 建议使用Ubuntu 22.04系统 exit 1 fi # 依赖安装 install_deps() { sudo apt update sudo apt install -y \ git gcc make cmake pkg-config automake autoconf libtool \ libssl-dev libsdl2-dev libavcodec-dev libavutil-dev ffmpeg \ libass-dev libtheora-dev libva-dev libvorbis-dev zlib1g-dev } # 源码准备 prepare_source() { if [ ! -d ZLMediaKit ]; then git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit.git cd ZLMediaKit git submodule update --init --recursive fi } # 编译执行 build_project() { cd ZLMediaKit ./build_for_linux.sh -r \ --with-ffmpeg \ --with-srtp \ --openssl-dir/usr \ --srtp-dir/usr } # 主流程 main() { install_deps prepare_source build_project echo 编译完成输出目录ZLMediaKit/release/linux/Release } main $使用方式chmod x zlm_build.sh ./zlm_build.sh 21 | tee build.log5. 部署与测试验证编译完成后在release/linux/Release目录下会生成可执行文件。以下是快速启动方案# 复制配置文件 cp conf/config.ini release/linux/Release/ # 测试启动前台模式 cd release/linux/Release ./MediaServer -c config.ini性能测试建议使用ffmpeg进行推流测试ffmpeg -re -i test.mp4 -c copy -f rtsp rtsp://localhost:554/live/test使用ffplay进行拉流验证ffplay -fflags nobuffer rtsp://localhost:554/live/test监控服务器状态curl http://localhost:8080/api/statistic对于生产环境建议添加systemd服务管理# /etc/systemd/system/zlm.service [Unit] DescriptionZLMediaKit Service Afternetwork.target [Service] Typesimple Usermedia WorkingDirectory/opt/zlm ExecStart/opt/zlm/MediaServer -c /opt/zlm/config.ini Restartalways [Install] WantedBymulti-user.target在实际项目中我们发现编译后的二进制文件在不同机器间的兼容性表现优异。通过合理配置config.ini中的线程参数和缓冲区设置单机可轻松支持500路高清流并发传输。

相关新闻