一次WVP+ZLM部署实战:从环境搭建到视频点播的完整避坑指南

一次WVP+ZLM部署实战:从环境搭建到视频点播的完整避坑指南 1. 环境准备从零搭建WVPZLM基础架构第一次接触WVPWeb Video Platform和ZLMZLMediaKit时我被它们强大的视频处理能力吸引但部署过程确实踩了不少坑。这里分享我的实战经验帮你避开那些让我熬夜的陷阱。先说硬件要求建议至少4核CPU8GB内存的服务器我最初用2核4GB的云服务器测试当同时处理5路以上视频流时就频繁卡顿。操作系统推荐Ubuntu 20.04 LTS这是经过大量实践验证的稳定版本。关键依赖安装# 更新系统包 sudo apt update sudo apt upgrade -y # 安装基础依赖 sudo apt install -y docker.io docker-compose git curl net-tools安装完记得将当前用户加入docker组sudo usermod -aG docker $USER newgrp docker # 立即生效有次部署时发现docker命令报权限错误就是因为漏了这步。建议每次部署新环境时先用docker ps测试下基础环境是否正常。2. ZLM媒体服务器的Docker化部署ZLM作为流媒体服务核心其部署质量直接影响后续所有功能。官方提供的Docker镜像已经包含完整环境但端口映射是个大坑。正确的容器启动命令docker run -id --name zlm \ -p 1935:1935 \ # RTMP协议端口 -p 8080:80 \ # HTTP-FLV/HTTP-TS -p 8443:443 \ # HTTPS -p 8554:554 \ # RTSP -p 10000:10000 \ # WebRTC -p 10000:10000/udp \ -p 8000:8000/udp \ # RTP over UDP -p 9000:9000/udp \ # RTCP over UDP -p 30000-30500:30000-30500/tcp \ # RTP over TCP -p 30000-30500:30000-30500/udp \ # RTP over UDP zlmediakit/zlmediakit:master这里有个血泪教训云服务商的安全组必须同时开放TCP和UDP协议有次排查两小时才发现是阿里云控制台只开了TCP端口。建议用以下命令测试端口连通性# 测试TCP端口 telnet your_server_ip 1935 # 测试UDP端口(需要nc工具) nc -uzv your_server_ip 100003. WVP平台配置详解WVP的配置文件application.yml藏在jar包同级的config目录下。这几个参数必须重点检查参数项推荐值作用说明media.id与ZLM实例一致必须与ZLM的mediaServerId匹配media.ip服务器内网IP收流地址media.stream-ip服务器公网IP播放地址media.port与ZLM映射端口一致通常保持默认10000启动WVP后访问http://服务器IP:18080用默认账号admin/admin登录。首次登录建议立即修改密码我就遇到过被暴力破解的情况。性能调优参数# 调整JVM内存参数(在启动命令中) java -Xms512m -Xmx2048m -jar wvp-pro.jar根据服务器配置调整Xmx值一般设为物理内存的70%。有次OOM崩溃就是因为默认配置没改处理多路视频时直接内存溢出。4. 国标设备对接实战国标GB/T28181协议对接是核心需求但设备注册经常出问题。先确认设备网络可达性# 从WVP服务器ping设备 ping 摄像头IP # 测试28181端口 telnet 摄像头IP 5060设备注册流程在设备端配置SIP服务器地址为WVP的IP和端口默认5060填写设备ID格式310115009913200000014401020049认证密码需要与WVP配置的sip.password一致常见问题排查设备显示注册失败检查WVP的sip.ip是否配置为公网IP注册成功但无通道确认设备开启了自动推送通道信息视频流无法播放在ZLM日志中搜索SSRC值核对流地址5. 视频点播全流程排错指南点播超时是最常见的问题我整理了这个排查清单基础检查WVP与ZLM版本匹配建议都用最新稳定版服务器时间同步时差会导致SSL握手失败# 安装NTP服务 sudo apt install ntp -y sudo timedatectl set-ntp on网络检查用tcpdump抓包分析sudo tcpdump -i any port 5060 -w sip.pcap检查NAT穿越# 查看NAT类型 sudo conntrack -L | grep 5060SSRC问题处理在WVP的通道管理点击编辑按钮去掉严格SSRC校验的勾选。这个选项在某些厂商设备上会导致校验失败。播放器调试直接在浏览器开发者工具查看网络请求FLV流检查http://zlm_ip:8080/live/stream_id.flv是否返回200HLS流验证/live/stream_id/hls.m3u8能否正常生成6. 生产环境优化建议经过多次压测总结这些优化经验ZLM参数调整[rtp] ; 增加RTP超时时间 timeout_sec60 ; 开启TCP_NODELAY tcp_nodelay1 [hls] ; 优化HLS切片设置 seg_num5 seg_duration2WVP线程池配置spring: task: execution: pool: core-size: 50 max-size: 200 queue-capacity: 1000监控方案使用Prometheus采集指标# ZLM开启监控 docker run -e ENABLE_PROMETHEUS1 ...Grafana仪表盘导入ZLM官方模板记得定期检查日志文件# ZLM日志 docker logs -f zlm # WVP日志 tail -f logs/wvp-pro.log7. 典型故障案例分析案例1点播10秒后中断现象每次播放固定10秒后断开 排查发现ZLM的rtp.timeout_sec默认为10秒 解决修改为60秒并重启服务案例2跨运营商卡顿现象电信用户访问联通服务器延迟高 解决开启ZLM的enable_rtp_multiplex参数减少UDP包数量案例3HLS延迟高现象移动端播放HLS有10秒以上延迟 优化调整HLS切片参数为seg_num3 seg_duration1这些配置调整后我们的直播延迟从最初的5秒降低到800毫秒以内。特别是在弱网环境下通过开启ZLM的low_latency模式进一步提升了用户体验。