Windows下WVPZLM公网部署stream-ip与sdp-ip配置避坑指南最近在帮朋友排查一个视频监控项目的问题时遇到了典型的公网部署困境——设备注册成功却无法播放实时视频。经过一番折腾发现根本原因出在WVP配置文件中的stream-ip和sdp-ip这两个看似简单的参数上。今天我就来详细剖析这两个配置项的公网部署要点分享几个真实场景下的配置案例帮你避开我踩过的那些坑。1. 关键配置项的核心作用解析1.1 stream-ip流媒体地址的生命线stream-ip参数决定了ZLMediakit服务器向客户端返回的流媒体地址中的IP部分。这个IP必须满足一个核心条件客户端能够通过这个IP访问到ZLM服务器。在公网部署时常见错误包括直接填写服务器内网IP如192.168.1.100填写了错误的公网IP如家庭宽带的动态IP已变更云服务器填写了弹性公网IP但未配置安全组规则# 错误配置示例直接使用内网IP stream-ip: 192.168.0.100 # 正确配置示例阿里云ECS stream-ip: 47.102.123.451.2 sdp-ipSDP协议中的关键标识sdp-ip出现在SDP协议中用于设备间媒体协商。这个IP需要满足GB28181设备能够访问该IP与SIP信令中的Contact头域IP保持一致在NAT环境下需要特别注意内外网映射关系典型问题场景某安防设备厂商的摄像头在收到包含内网IP的SDP时会直接丢弃媒体流请求。2. 不同网络环境下的配置实战2.1 阿里云ECS部署方案对于云服务器部署需要特别注意安全组和端口映射确认实例绑定的弹性公网IP安全组放行规则以阿里云为例协议类型端口范围授权对象用途说明TCP50600.0.0.0/0SIP信令端口UDP30000-305000.0.0.0/0RTP媒体流端口TCP800.0.0.0/0HTTP接口端口配置文件关键项media: ip: 172.16.0.2 # 内网IP stream-ip: 47.102.123.45 # 弹性公网IP sdp-ip: 47.102.123.45 # 同上 http-port: 80提示云服务器通常需要关闭源/目的检查否则可能导致流媒体传输异常。2.2 家庭宽带动态公网IP方案动态IP环境需要解决IP变化问题DDNS配置流程注册花生壳或阿里云解析服务在路由器配置DDNS自动更新设置域名解析TTL为最短时间如60秒端口转发规则以TP-Link路由器为例外部端口5060 → 内部服务器5060TCP外部端口30000-30500 → 相同内部端口UDPWVP配置示例sip: ip: ddns.example.com # 使用域名而非IP media: stream-ip: ddns.example.com sdp-ip: ddns.example.com3. 多端口模式公网部署的必选项原始文章特别强调的必须使用多端口模式这一点非常关键。单端口模式在公网环境下基本无法使用原因在于NAT穿透问题大多数路由器无法正确处理单端口下的多路RTP流防火墙限制企业网络通常限制UDP单端口高带宽使用QoS策略运营商对单端口大流量传输会进行限速启用多端口模式的正确姿势rtp: enable: true port-range: 30000,30500 # 建议范围不小于50个端口配套的防火墙命令Windows为例New-NetFirewallRule -DisplayName ZLM_RTP_Ports -Direction Inbound -Protocol UDP -LocalPort 30000-30500 -Action Allow4. 排错工具箱常见问题与解决方法4.1 设备注册成功但无法播放排查步骤检查WVP日志过滤关键字Send INVITE确认SDP中的c行IP是否为公网可达地址使用Wireshark抓包分析SIP信令流程4.2 媒体流超时断开典型原因及解决方案端口未正确映射确认路由器端口转发规则流地址不可达在客户端执行telnet stream-ip 30000测试连通性NAT类型限制建议改为全锥型NATFull Cone4.3 云端部署的特殊注意事项安全组策略需要放行RTP端口范围云厂商的中间件如阿里云的SLB可能修改SIP消息弹性公网IP需要与ECS实例绑定配置检查清单[ ]stream-ip与sdp-ip设置为公网可达地址[ ] RTP端口范围在防火墙已放行[ ] SIP信令中的Contact头包含正确公网IP[ ] ZLM的hook地址可被WVP访问最后分享一个真实案例某项目使用阿里云ECS部署后发现移动4G网络可以播放而电信宽带无法播放。最终发现是云安全组只配置了TCP端口放行漏掉了UDP端口的30000-30500范围。这个细节问题折腾了团队整整两天——公网部署真的容不得半点配置疏忽。