ZLMediaKit(webrtc)在CentOS7上的高效部署与常见问题解决指南
1. 环境准备与依赖安装在CentOS7上部署ZLMediaKit(webrtc)前需要先搞定基础环境。我遇到过不少新手直接克隆代码就开始编译结果被各种报错劝退。下面这些依赖就像盖房子前要打的地基缺一不可。1.1 更新系统与基础工具刚装好的CentOS7就像个毛坯房得先装几样必备工具。建议先执行这些命令yum update -y yum install -y epel-release yum groupinstall -y Development Tools这里有个坑要注意CentOS7默认的git版本太老1.8.x而ZLMediaKit需要2.x版本。我推荐用IUS仓库安装新版yum remove -y git yum install -y https://repo.ius.io/ius-release-el7.rpm yum install -y git236 git version # 应该显示2.36.x1.2 编译工具链升级ZLMediaKit需要较新的gcc和cmake。有次我用默认的gcc4.8编译遇到一堆C11兼容问题折腾了半天才发现是编译器太老。先安装高版本gccyum install -y centos-release-scl yum install -y devtoolset-9 scl enable devtoolset-9 bash gcc --version # 应该显示9.x版本cmake建议用3.20版本wget https://github.com/Kitware/CMake/releases/download/v3.20.5/cmake-3.20.5.tar.gz tar zxvf cmake-3.20.5.tar.gz cd cmake-3.20.5 ./bootstrap make -j$(nproc) make install1.3 关键依赖安装WebRTC功能需要这几个核心组件OpenSSL 1.1千万别用系统自带的1.0版本我吃过这个亏wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz tar zxvf openssl-1.1.1k.tar.gz cd openssl-1.1.1k ./config --prefix/usr/local/openssl --openssldir/usr/local/openssl make -j$(nproc) make installlibsrtp这是WebRTC的加密传输必备wget https://github.com/cisco/libsrtp/archive/refs/tags/v2.3.0.tar.gz tar zxvf v2.3.0.tar.gz cd libsrtp-2.3.0 ./configure --enable-openssl --with-openssl-dir/usr/local/openssl make -j$(nproc) make installFFmpeg处理媒体流的核心yum install -y nasm yasm wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.bz2 tar jxvf ffmpeg-4.4.tar.bz2 cd ffmpeg-4.4 ./configure --prefix/usr/local/ffmpeg --enable-shared make -j$(nproc) make install安装完后记得更新动态库缓存echo /usr/local/lib /etc/ld.so.conf echo /usr/local/ffmpeg/lib /etc/ld.so.conf ldconfig2. ZLMediaKit源码编译2.1 获取源码与子模块官方源码在GitHub但国内用户建议用Gitee镜像git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit git submodule update --init这里有个隐藏坑点如果网络不好导致子模块下载失败可以手动修改.gitmodules文件中的URL为gitee镜像地址。2.2 编译配置技巧创建build目录并配置编译选项mkdir build cd build cmake .. \ -DENABLE_WEBRTCON \ -DOPENSSL_ROOT_DIR/usr/local/openssl \ -DOPENSSL_LIBRARIES/usr/local/openssl/lib \ -DCMAKE_INSTALL_PREFIX/usr/local/zlm几个关键参数说明-DENABLE_WEBRTCON必须开启才能支持WebRTCOPENSSL相关路径要指向我们自定义安装的位置CMAKE_INSTALL_PREFIX指定安装目录2.3 编译与安装开始编译建议用tmux或nohupmake -j$(nproc) make install编译完成后在release/linux/Debug下会生成可执行文件MediaServer。我习惯做个软链接方便使用ln -s /usr/local/zlm/release/linux/Debug/MediaServer /usr/local/bin/zlm3. 配置与优化3.1 基础配置调整配置文件通常位于/usr/local/zlm/config.ini重点修改这些部分[rtc] externIP你的公网IP # 必须设置否则内网客户端无法连接 port8000 # 建议保持默认 timeoutSec15 [http] port8091 # WebRTC测试页面端口 sslport443特别提醒如果服务器在NAT后需要在路由器做端口映射且外部端口必须与rtc.port一致否则STUN协议会失效。3.2 性能调优参数根据服务器配置调整[thread] rtmp4 # RTMP线程数 rtsp4 # RTSP线程数 shell1 # API管理线程内存管理设置[protocol] enable_audio1 # 是否处理音频 max_stream_wait_ms5000 # 等待流超时3.3 安全配置建议关闭不必要的协议[protocol] enable_rtmp0 # 如果只用WebRTC可以关闭 enable_rtsp0Hook鉴权配置如需[hook] enable1 admin_paramssecret你的密码4. 运行与管理4.1 启动方式选择测试运行cd /usr/local/zlm/release/linux/Debug ./MediaServer -c /usr/local/zlm/config.ini生产环境建议用systemd管理cat /etc/systemd/system/zlm.service EOF [Unit] DescriptionZLMediaKit Service [Service] Typesimple ExecStart/usr/local/zlm/release/linux/Debug/MediaServer -c /usr/local/zlm/config.ini Restartalways [Install] WantedBymulti-user.target EOF systemctl daemon-reload systemctl start zlm systemctl enable zlm4.2 日志查看技巧默认日志在控制台输出生产环境建议重定向./MediaServer -c config.ini zlm.log 21 关键日志关键字RTC推流成功WebRTC推流建立ICE状态变化网络穿透状态DTLS握手完成加密通道建立4.3 性能监控内置HTTP API可以查看状态curl http://127.0.0.1:8091/api/statistic输出示例{ code: 0, data: { connections: 5, webrtc: { push: 2, play: 3 } } }5. 常见问题解决5.1 WebRTC连接失败排查症状能打开测试页面但无法播放检查步骤确认externIP设置正确检查防火墙firewall-cmd --add-port8000/udp # RTC端口 firewall-cmd --add-port8091/tcp # HTTP端口测试STUN服务curl http://127.0.0.1:8091/index/api/webrtc?applivestreamtest5.2 编译错误处理错误1GLIBCXX版本不匹配strings /usr/lib64/libstdc.so.6 | grep GLIBCXX如果缺少高版本需要更新libstdccp /usr/local/gcc/lib64/libstdc.so.6.0.26 /usr/lib64 rm -f /usr/lib64/libstdc.so.6 ln -s /usr/lib64/libstdc.so.6.0.26 /usr/lib64/libstdc.so.6错误2openssl相关错误确认编译时指定的openssl路径与实际安装路径一致检查ldd MediaServer | grep ssl5.3 音视频问题无声音检查配置文件enable_audio1测试时使用Chrome浏览器对WebRTC支持最完善卡顿调整rembBitRate限制码率检查服务器带宽iftop -i eth06. 进阶技巧6.1 集群部署方案多节点部署时建议使用相同的配置文件通过API控制流量切换curl http://主节点IP:8091/index/api/addStreamProxy?applivestreamtesturlrtmp://备用节点IP/live/test6.2 自定义Web页面默认测试页面在/usr/local/zlm/www可以替换成自己的页面。记得修改script const peer new RTCPeerConnection({ iceServers: [{ urls: stun:你的服务器IP:8000 }] }); /script6.3 录制与回放开启录制功能[record] app_namerecord file_path/data/zlm_records file_second3600回放URL格式http://服务器IP:8091/record/live/流名/2023-07-01/10-00-00.mp4
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2477675.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!