news 2026/5/29 19:14:58

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
别再折腾了!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*'

解决方案:

  1. 确认系统OpenSSL版本一致性:

    # 检查动态库链接 ldconfig -p | grep libssl
  2. 创建兼容性符号链接:

    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.1

3.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 install

4. 一键编译脚本实现

以下是整合了所有优化措施的完整编译脚本:

#!/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 2>&1 | tee build.log

5. 部署与测试验证

编译完成后,在release/linux/Release目录下会生成可执行文件。以下是快速启动方案:

# 复制配置文件 cp conf/config.ini release/linux/Release/ # 测试启动(前台模式) cd release/linux/Release ./MediaServer -c config.ini

性能测试建议:

  1. 使用ffmpeg进行推流测试:

    ffmpeg -re -i test.mp4 -c copy -f rtsp rtsp://localhost:554/live/test
  2. 使用ffplay进行拉流验证:

    ffplay -fflags nobuffer rtsp://localhost:554/live/test
  3. 监控服务器状态:

    curl http://localhost:8080/api/statistic

对于生产环境,建议添加systemd服务管理:

# /etc/systemd/system/zlm.service [Unit] Description=ZLMediaKit Service After=network.target [Service] Type=simple User=media WorkingDirectory=/opt/zlm ExecStart=/opt/zlm/MediaServer -c /opt/zlm/config.ini Restart=always [Install] WantedBy=multi-user.target

在实际项目中,我们发现编译后的二进制文件在不同机器间的兼容性表现优异。通过合理配置config.ini中的线程参数和缓冲区设置,单机可轻松支持500+路高清流并发传输。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 19:14:00

Windows下源码编译Open3D,我踩过的那些坑(附保姆级避坑指南)

Windows平台Open3D源码编译实战:深度排错与高效解决方案 引言 在三维视觉和点云处理领域,Open3D作为一款功能强大的开源库,正受到越来越多开发者的青睐。虽然官方提供了预编译版本,但在某些特定场景下,我们仍然需要从…

作者头像 李华
网站建设 2026/5/29 19:12:11

2026宁夏小程序定制开发公司技术实力测评榜单

摘要:在宁夏小程序定制开发市场竞争日益分层化的2026年,技术架构的先进性与工程交付的可靠性已取代单纯的价格与工期,成为企业选型时的核心决策变量。本文基于对宁夏本地多家技术服务商的持续跟踪,围绕Serverless架构落地能力、多…

作者头像 李华
网站建设 2026/5/29 18:56:25

如何轻松掌控你的微信聊天数据:WeChatMsg完全使用指南

如何轻松掌控你的微信聊天数据:WeChatMsg完全使用指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…

作者头像 李华