<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>国标 on Liangweidong's blog</title><link>https://liangweidonggood.github.io/tags/%E5%9B%BD%E6%A0%87/</link><description>Recent content in 国标 on Liangweidong's blog</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Thu, 15 Jun 2023 00:00:00 +0800</lastBuildDate><atom:link href="https://liangweidonggood.github.io/tags/%E5%9B%BD%E6%A0%87/index.xml" rel="self" type="application/rss+xml"/><item><title>WVP-Pro 国标视频流：GB28181 摄像头注册与 ZLMediaKit 流媒体对接</title><link>https://liangweidonggood.github.io/p/wvp-guo-biao-shi-pin-liu/</link><pubDate>Thu, 15 Jun 2023 00:00:00 +0800</pubDate><guid>https://liangweidonggood.github.io/p/wvp-guo-biao-shi-pin-liu/</guid><description>&lt;img src="https://liangweidonggood.github.io/p/wvp-guo-biao-shi-pin-liu/image/cover.jpg" alt="Featured image of post WVP-Pro 国标视频流：GB28181 摄像头注册与 ZLMediaKit 流媒体对接" /&gt;&lt;p&gt;国内安防/视频监控场景离不开&amp;quot;国标&amp;quot;——&lt;strong&gt;GB28181&lt;/strong&gt; 是公安部推的&amp;quot;安全防范视频监控联网系统信息传输、交换、控制技术要求&amp;quot;，海康/大华/宇视等主流厂商的 NVR、IPC 摄像头都支持 SIP 信令注册到平台。&lt;strong&gt;WVP-Pro&lt;/strong&gt;（wvp_pro）是开源的 GB28181 视频平台，把 SIP 信令、流媒体（集成 ZLMediaKit）、Web 管理、API 对接打包到一容器里，&lt;strong&gt;最适合&amp;quot;快速把海康摄像头接到自己平台&amp;quot;&lt;/strong&gt;。这篇文章讲清楚容器化部署、摄像头注册、SDP IP/流 IP 配置、流端口规划。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;阅读对象&lt;/strong&gt;：要给客户/公司搭视频监控平台、要把海康/大华摄像头统一管理的开发或集成商&lt;br&gt;
&lt;strong&gt;覆盖范围&lt;/strong&gt;：WVP-Pro 容器化部署、GB28181 摄像头注册、SDP IP/流 IP 配置、收流端口规划、ZLMediaKit 集成&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="一为什么是-wvp-pro"&gt;一、为什么是 WVP-Pro
&lt;/h2&gt;&lt;p&gt;GB28181 平台选型，对比几个常见方案：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;方案&lt;/th&gt;
					&lt;th&gt;特点&lt;/th&gt;
					&lt;th&gt;适用&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;&lt;strong&gt;WVP-Pro&lt;/strong&gt;&lt;/td&gt;
					&lt;td&gt;Java + ZLMediaKit，开源，社区活跃&lt;/td&gt;
					&lt;td&gt;二次开发、对接业务系统&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;萤石云 / 阿里云视频监控&lt;/td&gt;
					&lt;td&gt;SaaS，按量付费&lt;/td&gt;
					&lt;td&gt;不想运维，但要付费&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;海康 iVMS / 大华 DSS&lt;/td&gt;
					&lt;td&gt;厂商私有平台&lt;/td&gt;
					&lt;td&gt;单品牌摄像头&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;GB28181Server&lt;/td&gt;
					&lt;td&gt;另一款开源&lt;/td&gt;
					&lt;td&gt;极简接入&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;LiveGBS&lt;/td&gt;
					&lt;td&gt;国标 GB28181 视频平台&lt;/td&gt;
					&lt;td&gt;商业 / 开源双版本&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;When to use&lt;/strong&gt;：要给客户做 GB28181 视频接入、二次开发、API 集成到自有平台，WVP-Pro 是首选。它把&amp;quot;信令 + 流媒体 + Web 管理&amp;quot;全打包，单容器跑起来就能对接海康/大华摄像头。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="二容器化部署"&gt;二、容器化部署
&lt;/h2&gt;&lt;h3 id="21-拉镜像"&gt;2.1 拉镜像
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker pull 648540858/wvp_pro:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="22-启动"&gt;2.2 启动
&lt;/h3&gt;&lt;p&gt;WVP-Pro 涉及多个端口：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;18080&lt;/strong&gt;：Web 管理界面 + API&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;9980&lt;/strong&gt;：HTTP 流媒体服务（拉流播放）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;5060&lt;/strong&gt;：SIP 信令端口（摄像头注册）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;9554&lt;/strong&gt;：RTSP 端口（部分流媒体场景）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;33010-33020&lt;/strong&gt;：媒体收流端口（每个摄像头分配一个）&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --name wvp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;WVP_IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;{{PUBLIC_IP}}&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -itd &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart&lt;span class="o"&gt;=&lt;/span&gt;always &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 18080:18080 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 33010-33020:33010-33020/udp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 33010-33020:33010-33020/tcp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 9980:9980 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 5060:5060 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 5060:5060/udp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -p 9554:9554 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 648540858/wvp_pro:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;WVP_IP 必须设为公网 IP&lt;/strong&gt;：摄像头要从公网注册进来，WVP 注册信令的 IP 必须是公网可达的。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="23-配置文件位置"&gt;2.3 配置文件位置
&lt;/h3&gt;&lt;p&gt;WVP-Pro 容器内：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/opt/wvp/config/application.yml&lt;/code&gt;：WVP 主配置（Spring Boot）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/opt/media/config.ini&lt;/code&gt;：ZLMediaKit 配置（流媒体）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;启动后&lt;strong&gt;立即&lt;/strong&gt;把配置 &lt;code&gt;cp&lt;/code&gt; 出来，挂载进容器：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 第一次启动后导出&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker cp wvp:/opt/media/config.ini /data/wvp/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker cp wvp:/opt/wvp/config/application.yml /data/wvp/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;必须挂出来&lt;/strong&gt;：WVP 容器升级/重启后会清空容器内配置，不挂出来就回到默认 IP。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="24-host-网络模式"&gt;2.4 host 网络模式
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;--net=host&lt;/code&gt; 模式让所有端口直接用宿主机 IP，&lt;strong&gt;省去端口映射的麻烦&lt;/strong&gt;：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run --name wvp &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --env &lt;span class="nv"&gt;WVP_IP&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;{{PUBLIC_IP}}&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -itd &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --restart&lt;span class="o"&gt;=&lt;/span&gt;always &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --net&lt;span class="o"&gt;=&lt;/span&gt;host &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /data/wvp/application.yml:/opt/wvp/config/application.yml &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -v /data/wvp/config.ini:/opt/media/config.ini &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; 648540858/wvp_pro:latest
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="三核心配置"&gt;三、核心配置
&lt;/h2&gt;&lt;h3 id="31-applicationyml关键段"&gt;3.1 application.yml（关键段）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&lt;/span&gt;&lt;span class="lnt"&gt;18
&lt;/span&gt;&lt;span class="lnt"&gt;19
&lt;/span&gt;&lt;span class="lnt"&gt;20
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;sip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;PUBLIC_IP}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;5060&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;domain&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3402000000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;34020000002000000001&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;password&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;REDACTED}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;media&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 流 IP（公网 IP，摄像头推流回来用）&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;PUBLIC_IP}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# HTTP 流端口&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;http-port&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9980&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&gt;# 收流端口范围&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;port-range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;33010&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;33020&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;send-port-range&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;33010&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="m"&gt;33020&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;sdp-ip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;PUBLIC_IP}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;stream-ip&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;{{&lt;span class="l"&gt;PUBLIC_IP}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;stream-on-demand&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;record-push-live&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;auto-apply-play&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id="32-zlmediakit-配置configini"&gt;3.2 ZLMediaKit 配置（config.ini）
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-ini" data-lang="ini"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[http]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;9980&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;allow_ip_range&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;0.0.0.0/0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;[rtp]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;30000-30100&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;流端口范围&lt;/strong&gt;：每个摄像头推流回来占一个端口，&lt;strong&gt;N 个摄像头至少要 N 个端口&lt;/strong&gt;。生产环境开 33010-33020 共 11 个端口是基础款。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="33-修改配置后重启"&gt;3.3 修改配置后重启
&lt;/h3&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;span class="lnt"&gt;16
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 进入容器&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker &lt;span class="nb"&gt;exec&lt;/span&gt; -it wvp bash
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 修改 application.yml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="s1"&gt;&amp;#39;s/sdp-ip: .*/sdp-ip: {{PUBLIC_IP}}/&amp;#39;&lt;/span&gt; /opt/wvp/config/application.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="s1"&gt;&amp;#39;s/stream-ip: .*/stream-ip: {{PUBLIC_IP}}/&amp;#39;&lt;/span&gt; /opt/wvp/config/application.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="s1"&gt;&amp;#39;s/port: 5060/port: 5060/&amp;#39;&lt;/span&gt; /opt/wvp/config/application.yml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 改 ZLMediaKit 端口&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="s1"&gt;&amp;#39;69s/^.*$/port=9980/&amp;#39;&lt;/span&gt; /opt/media/config.ini
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sed -i &lt;span class="s1"&gt;&amp;#39;111s/^.*$/port=9554/&amp;#39;&lt;/span&gt; /opt/media/config.ini
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;exit&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 重启 WVP&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker restart wvp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;重启后 SDP IP 和流 IP 会还原成 WVP_IP&lt;/strong&gt;（即启动参数 &lt;code&gt;--env WVP_IP&lt;/code&gt;），&lt;strong&gt;必须&lt;/strong&gt;改成公网 IP 后重启，否则摄像头注册后无法推流。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="四添加摄像头"&gt;四、添加摄像头
&lt;/h2&gt;&lt;h3 id="41-登录-web-管理"&gt;4.1 登录 Web 管理
&lt;/h3&gt;&lt;p&gt;访问 &lt;code&gt;http://{{PUBLIC_IP}}:18080/#/login&lt;/code&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;默认账号：&lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;默认密码：&lt;code&gt;admin&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;生产环境&lt;/strong&gt;：首次登录立即改密码。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="42-摄像头接入流程"&gt;4.2 摄像头接入流程
&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;摄像头端配置&lt;/strong&gt;（海康威视为例）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;平台接入 → 平台管理 → 添加平台&lt;/li&gt;
&lt;li&gt;协议类型：GB28181&lt;/li&gt;
&lt;li&gt;服务器 IP：&lt;code&gt;{{PUBLIC_IP}}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;端口：&lt;code&gt;5060&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;SIP 用户名：&lt;code&gt;34020000001110000009&lt;/code&gt;（WVP 配置里的 SIP ID）&lt;/li&gt;
&lt;li&gt;认证密码：与 &lt;code&gt;application.yml&lt;/code&gt; 一致&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;WVP 端查看注册&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;登录 Web → 控制台&lt;/li&gt;
&lt;li&gt;信令服务器配置：填 SIP 信息&lt;/li&gt;
&lt;li&gt;设备列表：刷新等待注册状态变为&amp;quot;在线&amp;quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;通道管理&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;设备列表 → 选中摄像头 → 通道&lt;/li&gt;
&lt;li&gt;视频通道编码 ID：&lt;code&gt;34020000001320000001&lt;/code&gt;（每个通道独立）&lt;/li&gt;
&lt;li&gt;通道状态变&amp;quot;在线&amp;quot;后即可拉流&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id="43-拉取-rtsp-流"&gt;4.3 拉取 RTSP 流
&lt;/h3&gt;&lt;p&gt;在浏览器 F12 网络面板里：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;进入设备列表 → 通道管理&lt;/li&gt;
&lt;li&gt;点击&amp;quot;播放&amp;quot;&lt;/li&gt;
&lt;li&gt;F12 切到 Network 标签&lt;/li&gt;
&lt;li&gt;找到带 RTSP 的请求&lt;/li&gt;
&lt;li&gt;复制 URL（格式：&lt;code&gt;rtsp://{{CAM_USER}}:{{CAM_PASS}}@{{CAM_IP}}:554/Streaming/Channels/101&lt;/code&gt;）&lt;/li&gt;
&lt;/ol&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;rtsp://&lt;/strong&gt; 这个地址是摄像头&lt;strong&gt;直连&lt;/strong&gt;的 RTSP 流，&lt;strong&gt;不是&lt;/strong&gt; WVP 转发的。要走 WVP 转发，用 WebRTC / HTTP-FLV / HLS（在 Web 管理界面&amp;quot;播放&amp;quot;按钮自动选协议）。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="五典型部署架构"&gt;五、典型部署架构
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[海康/大华 NVR/摄像头] [WVP-Pro 服务]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SIP 5060 ──注册信令──→ {{PUBLIC_IP}}:5060 (WVP 收 SIP)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; RTSP ──拉/推流──→ {{PUBLIC_IP}}:33010-20 (WVP 收流)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [ZLMediaKit]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; │
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; [Web 管理 / API]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; http://{{PUBLIC_IP}}:18080
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;[客户端]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; Web 浏览器 ──HTTP-FLV/WebRTC──→ {{PUBLIC_IP}}:18080 / 9980
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="六踩坑清单"&gt;六、踩坑清单
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;SDP IP/流 IP 还原成内网 IP&lt;/strong&gt;——重启 WVP 后必须重新 &lt;code&gt;sed&lt;/code&gt; 改公网 IP&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;33010-33020 端口未开放&lt;/strong&gt;——UDP/TCP 都要在公网防火墙开放&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nginx 反代 18080&lt;/strong&gt;——&lt;strong&gt;不能&lt;/strong&gt;用 Nginx 反代 WVP 的 18080 端口，WebRTC/WebSocket 走 18080，Nginx 反代会断流。要么直接暴露 18080，要么用 stream 段&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SIP 注册不上&lt;/strong&gt;——SIP ID 不在 20 位标准格式、密码不对、WVP 端信令配置和摄像头端不一致&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;拉流 404&lt;/strong&gt;——通道未注册成功，或者流端口没开&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;状态变红不在线&lt;/strong&gt;——摄像头到 WVP 的网络不通（防火墙、路由、NAT），抓 SIP 包定位&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="七2024-视角补充"&gt;七、2024+ 视角补充
&lt;/h2&gt;&lt;p&gt;本文写于 2023-06，2024-2026 期间 WVP-Pro / ZLMediaKit 关键演进：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;WVP-Pro 4.7+&lt;/strong&gt;（2024-08）：&lt;strong&gt;GB/T 28181-2022&lt;/strong&gt; 协议全面支持（vs 老 2016 协议）；&lt;strong&gt;国密 SM2/SM4 算法&lt;/strong&gt;支持（政企合规刚需）；&lt;strong&gt;WebRTC 推流&lt;/strong&gt;原生（不再依赖 webrtc-streamer）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WVP-Pro 5.x&lt;/strong&gt;（2025-Q3）：&lt;strong&gt;K8s 部署模式&lt;/strong&gt;（Spring Cloud 微服务拆分）、&lt;strong&gt;分布式集群&lt;/strong&gt;（多实例注册中心共享）、&lt;strong&gt;AI 事件检测&lt;/strong&gt;（接入 ONVIF + 移动侦测 / 入侵检测）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ZLMediaKit 2024+&lt;/strong&gt;（持续迭代）：&lt;strong&gt;WebRTC WHIP / WHEP&lt;/strong&gt; 标准协议；&lt;strong&gt;SRT over WebRTC&lt;/strong&gt; 互通；&lt;strong&gt;AI 推理模块&lt;/strong&gt;（内置 ONNX Runtime + 主流模型）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WVP 替代品&lt;/strong&gt;（2024+ 视角）：
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;国标 GB28181 商业平台&lt;/strong&gt;：海康 iVMS / 大华 DSS / 宇视 UNV 仍是政企采购首选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;开源&lt;/strong&gt;：&lt;a class="link" href="https://github.com/livegbs/GB28181-Server" target="_blank" rel="noopener"
 &gt;LiveGBS&lt;/a&gt; 2024+ 社区活跃&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;云服务&lt;/strong&gt;：腾讯云 / 阿里云 / 华为云 国标网关（按量计费，无需自建）&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实战建议（2025-2026 视角）&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;纯 GB28181 + Web 播放&lt;/strong&gt; → WVP-Pro 4.7+ + ZLMediaKit 仍是开源首选&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI 集成&lt;/strong&gt;（人脸 / 车辆 / 入侵）→ WVP 5.x + ONVIF + 边缘 AI 盒子&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;政企合规&lt;/strong&gt; → 商业平台 / 国密改造 / 等保测评一条龙&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K8s 部署&lt;/strong&gt; → WVP 5.x 微服务模式（注意 Spring Cloud 复杂度）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="八参考资料"&gt;八、参考资料
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;WVP-Pro 文档：https://doc.wvp-pro.cn/&lt;/li&gt;
&lt;li&gt;GB28181 协议规范：GB/T 28181-2016 / GB/T 28181-2022&lt;/li&gt;
&lt;li&gt;ZLMediaKit：https://github.com/ZLMediaKit/ZLMediaKit&lt;/li&gt;
&lt;li&gt;LiveGBS：&lt;a class="link" href="https://github.com/livegbs/GB28181-Server" target="_blank" rel="noopener"
 &gt;github.com/livegbs/GB28181-Server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;海康威视 GB28181 配置手册：各型号 NVR/IPC 平台接入章节&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="下一步"&gt;下一步
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;想用 WebRTC 播放？→ &lt;a class="link" href="https://liangweidonggood.github.io/p/liu-mei-ti-yu-webrtc-shi-shi-shi-pin/" &gt;流媒体与 WebRTC 实时视频&lt;/a&gt; 一文&lt;/li&gt;
&lt;li&gt;想做企业 VPN？→ &lt;a class="link" href="https://liangweidonggood.github.io/p/openvpn-zi-jian-vpn-fu-wu/" &gt;OpenVPN 自建 VPN 服务&lt;/a&gt; 一文&lt;/li&gt;
&lt;li&gt;想做流媒体服务器？→ 上面的 &lt;a class="link" href="https://liangweidonggood.github.io/p/liu-mei-ti-yu-webrtc-shi-shi-shi-pin/" &gt;流媒体与 WebRTC 实时视频&lt;/a&gt; 一文里 ZLMediaKit / MediaMTX / go2rtc 都讲到了&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>