保姆级教程:在CentOS 7上从源码编译部署ZLMediaKit流媒体服务器(含FFmpeg集成)

张开发
2026/4/15 5:14:53 15 分钟阅读

分享文章

保姆级教程:在CentOS 7上从源码编译部署ZLMediaKit流媒体服务器(含FFmpeg集成)
CentOS 7下ZLMediaKit流媒体服务器深度部署指南1. 环境准备与依赖安装在CentOS 7系统上部署ZLMediaKit需要特别注意基础环境的搭建。不同于Ubuntu等发行版CentOS 7的默认软件仓库版本较旧我们需要手动处理多个关键依赖。首先确保系统已更新至最新状态sudo yum update -y sudo yum install -y epel-release核心编译工具链安装需要特别注意版本兼容性# 安装基础编译工具 sudo yum groupinstall -y Development Tools sudo yum install -y wget git make cmake3 # 验证GCC版本 gcc --version # 若版本低于4.8需要手动升级对于CMake官方仓库的版本通常过低推荐源码编译安装wget https://cmake.org/files/v3.21/cmake-3.21.3.tar.gz tar -xzvf cmake-3.21.3.tar.gz cd cmake-3.21.3 ./bootstrap --prefix/usr/local make -j$(nproc) sudo make install提示在生产环境中建议将关键工具安装在/usr/local目录下避免与系统自带软件包冲突。2. 源码获取与编译优化ZLMediaKit的源码获取需要特别注意子模块的处理方式git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init --recursive编译配置时的关键参数优化参数推荐值说明ENABLE_SERVERON启用服务器功能ENABLE_WEBRTCOFF除非需要WebRTC支持ENABLE_FFMPEGON启用FFmpeg集成BUILD_SHARED_LIBSOFF静态链接更稳定实际编译命令示例mkdir build cd build cmake .. -DCMAKE_BUILD_TYPERelease \ -DENABLE_SERVERON \ -DENABLE_FFMPEGON make -j$(nproc)3. FFmpeg深度集成方案ZLMediaKit与FFmpeg的集成是流媒体处理的核心。推荐采用源码编译方式安装FFmpeg# 安装依赖 sudo yum install -y nasm yasm libass-devel freetype-devel openssl-devel # 编译安装FFmpeg wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.bz2 tar -xjvf ffmpeg-4.4.tar.bz2 cd ffmpeg-4.4 ./configure --enable-shared --enable-pic --enable-gpl --enable-nonfree make -j$(nproc) sudo make install配置关键参数示例[ffmpeg] bin/usr/local/bin/ffmpeg cmd%s -re -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264 -preset ultrafast -tune zerolatency -f flv %s snap%s -i %s -y -f mjpeg -t 0.001 -vf scale640:360 %s4. 高级配置与性能调优ZLMediaKit的配置文件需要根据实际业务场景进行深度定制。以下是关键性能参数建议网络优化配置[rtmp] handshakeSecond10 keepAliveSecond30 [http] keepAliveSecond60 maxReqSize8192HLS切片优化[hls] segDur3 segNum5 fileBufSize131072内存管理建议配置[general] flowThreshold2048 maxStreamWaitMS10000 streamNoneReaderDelayMS30000注意所有配置修改后需要重启服务生效建议先备份原始配置。5. 系统服务化与监控将ZLMediaKit设置为系统服务可确保稳定运行# 创建服务文件 sudo tee /etc/systemd/system/zlm.service EOF [Unit] DescriptionZLMediaKit Streaming Server Afternetwork.target [Service] Typesimple ExecStart/usr/local/ZLMediaKit/release/linux/Release/MediaServer -c /etc/zlm/config.ini Restartalways Usermedia Groupmedia [Install] WantedBymulti-user.target EOF # 启用服务 sudo systemctl daemon-reload sudo systemctl enable zlm sudo systemctl start zlm监控建议使用内置API接口curl http://127.0.0.1:80/index/api/getThreadsLoad6. 安全加固实践生产环境部署必须考虑安全因素防火墙配置sudo firewall-cmd --permanent --add-port80/tcp sudo firewall-cmd --permanent --add-port1935/tcp sudo firewall-cmd --permanent --add-port554/tcp sudo firewall-cmd --reloadAPI安全[api] secretyour_strong_password_here apiDebug0权限控制sudo useradd -r -s /sbin/nologin media sudo chown -R media:media /usr/local/ZLMediaKit7. 常见问题诊断编译错误排查缺少openssl开发包sudo yum install openssl-devel版本冲突确保所有依赖符合最低版本要求运行时问题# 查看日志 journalctl -u zlm -f # 端口占用检查 netstat -tulnp | grep -E 80|1935|554性能问题定位top -p $(pgrep MediaServer) strace -p $(pgrep MediaServer) -c

更多文章