From be63d75b776b32b52930a267931999a3ae9716d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AD=99=E5=B0=8F=E4=BA=91?= Date: Mon, 2 Feb 2026 15:04:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../media/zlm/ZLMMediaNodeServerService.java | 18 ++-- src/main/resources/application.yml | 94 ++++++++++++++++--- 2 files changed, 88 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java index 628ee20..93ef28b 100644 --- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java +++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMMediaNodeServerService.java @@ -662,20 +662,20 @@ public class ZLMMediaNodeServerService implements IMediaNodeServerService { streamInfoResult.setRtsp(addr, mediaServer.getRtspPort(),mediaServer.getRtspSSLPort(), app, stream, callIdParam); String flvFile = String.format("%s/%s.live.flv%s", app, stream, callIdParam); - streamInfoResult.setFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), flvFile); - streamInfoResult.setWsFlv(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), flvFile); + streamInfoResult.setFlv(addr, mediaServer.getFlvPort(),mediaServer.getFlvSSLPort(), flvFile); + streamInfoResult.setWsFlv(addr, mediaServer.getWsFlvPort(),mediaServer.getWsFlvSSLPort(), flvFile); String mp4File = String.format("%s/%s.live.mp4%s", app, stream, callIdParam); - streamInfoResult.setFmp4(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), mp4File); - streamInfoResult.setWsMp4(addr, mediaServer.getHttpPort(),mediaServer.getHttpSSlPort(), mp4File); + streamInfoResult.setFmp4(addr, mediaServer.getMp4Port(),mediaServer.getMp4Port(), mp4File); + streamInfoResult.setWsMp4(addr, mediaServer.getMp4Port(),mediaServer.getMp4Port(), mp4File); - streamInfoResult.setHls(addr, mediaServer.getHttpPort(), mediaServer.getHttpSSlPort(), app, stream, callIdParam); - streamInfoResult.setWsHls(addr, mediaServer.getHttpPort(), mediaServer.getHttpSSlPort(), app, stream, callIdParam); + streamInfoResult.setHls(addr, mediaServer.getFlvPort(), mediaServer.getFlvSSLPort(), app, stream, callIdParam); + streamInfoResult.setWsHls(addr, mediaServer.getWsFlvPort(), mediaServer.getWsFlvSSLPort(), app, stream, callIdParam); - streamInfoResult.setTs(addr, mediaServer.getHttpPort(), mediaServer.getHttpSSlPort(), app, stream, callIdParam); - streamInfoResult.setWsTs(addr, mediaServer.getHttpPort(), mediaServer.getHttpSSlPort(), app, stream, callIdParam); + streamInfoResult.setTs(addr, mediaServer.getFlvPort(), mediaServer.getFlvSSLPort(), app, stream, callIdParam); + streamInfoResult.setWsTs(addr, mediaServer.getWsFlvPort(), mediaServer.getWsFlvSSLPort(), app, stream, callIdParam); - streamInfoResult.setRtc(addr, mediaServer.getHttpPort(), mediaServer.getHttpSSlPort(), app, stream, callIdParam, isPlay); + streamInfoResult.setRtc(addr, mediaServer.getFlvPort(), mediaServer.getFlvSSLPort(), app, stream, callIdParam, isPlay); streamInfoResult.setMediaInfo(mediaInfo); diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index eee1aab..f5683de 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -83,34 +83,98 @@ sip: # 命令发送等待回复的超时时间, 单位:毫秒 timeout: 1000 -# 默认服务器配置 +# ============================================================================ +# ZLMediaKit 流媒体服务器配置 +# ============================================================================ +# 端口说明: +# 1. http-port/http-ssl-port: +# - 用途:WVP调用ZLMediaKit的RESTful API(如getMediaList、startSendRtp等) +# - 值:容器内部端口(zlmediakit容器的80/443) +# - 示例:wvp-pro通过 http://zlmediakit:80/index/api/xxx 访问ZLM的API +# +# 2. flv-port/flv-ssl-port/ws-flv-port/ws-flv-ssl-port: +# - 用途:生成给客户端(浏览器/播放器)的播放地址 +# - 值:宿主机映射的外部端口(docker-compose.yml中的端口映射) +# - 示例:客户端通过 http://220.154.136.137:9090/live/123.live.flv 播放视频 +# - 对应关系: +# * flv-port → HTTP-FLV/HLS/TS/RTC播放端口(docker映射: 9090:80) +# * flv-ssl-port → HTTPS-FLV/HLS/TS播放端口(docker映射: 8443:443) +# * ws-flv-port → WebSocket-FLV/HLS/TS播放端口(docker映射: 9090:80) +# * ws-flv-ssl-port → WebSocket-SSL播放端口(docker映射: 8443:443) +# +# 3. rtmp-port/rtsp-port/rtp-proxy-port: +# - 用途:推流和拉流的协议端口 +# - 值:宿主机映射的外部端口 +# - 示例:OBS通过 rtmp://220.154.136.137:1935/live/123 推流 +# +# 4. stream-ip/sdp-ip: +# - 用途:生成播放地址时使用的IP地址 +# - 值:宿主机的外网IP或域名 +# - 示例:220.154.136.137 +# ============================================================================ media: id: polaris - # ZLM 内网IP (Docker内部服务名) + # ZLM 内网IP (Docker内部服务名,用于容器间通信) ip: ${ZLM_HOST:zlmediakit} - # zlmediakit 容器内部端口是 80,但返回给客户端的播放地址需要使用外部映射端口 - http-port: ${MediaHttp:80} - # 返回流地址时的ip (来自 .env: Stream_IP) ?? + + # ========== API访问端口(容器内部端口) ========== + # 用于WVP调用ZLM的RESTful API + # 对应zlmediakit容器内部的HTTP端口(config.ini中的http.port=80) + # 容器间通信地址:http://zlmediakit:80/index/api/xxx + http-port: 80 + + # 用于WVP调用ZLM的HTTPS API(通常不启用) + # 对应zlmediakit容器内部的HTTPS端口(config.ini中的http.sslport=443) + http-ssl-port: 0 + + # ========== 播放地址生成配置 ========== + # 返回给客户端的流地址IP(来自docker-compose.yml的Stream_IP环境变量) + # 生成的播放地址格式:http://${stream-ip}:${flv-port}/live/123.live.flv stream-ip: ${Stream_IP:127.0.0.1} - # wvp在国标信令中使用的ip (来自 .env: SDP_IP) ?? + + # WVP在国标信令中使用的IP(来自docker-compose.yml的SDP_IP环境变量) sdp-ip: ${SDP_IP:127.0.0.1} - # zlm服务器访问WVP所使用的IP (Docker内部服务名) - # mac本地跑的时候,使用的时候 host.docker.internal + + # zlm服务器回调WVP的Hook地址(Docker内部服务名) + # ZLM通过此地址调用WVP的hook接口,如:http://wvp-pro:18978/index/hook/on_publish + # mac本地开发时使用 host.docker.internal hook-ip: ${ZLM_HOOK_HOST:wvp-pro} - # [可选] sslport - 返回给客户端的HTTPS端口 - http-ssl-port: ${MediaHttps:0} - # 流媒体端口配置 (来自 .env: WebHttp) - # 和zlmediakit 中的配置对应 ?? + + # ========== 客户端播放端口(宿主机外部端口) ========== + # 以下端口用于生成客户端播放地址,对应docker-compose.yml中的端口映射 + # + # HTTP-FLV/HLS/TS/RTC播放端口(来自docker-compose.yml的MediaHttp环境变量) + # docker映射:9090:80,客户端访问 http://220.154.136.137:9090/live/123.live.flv + # 用于生成:FLV、HLS、TS、RTC等HTTP协议的播放地址 flv-port: ${MediaHttp:-8080} + + # HTTPS-FLV/HLS/TS播放端口(来自docker-compose.yml的MediaHttps环境变量) + # docker映射:8443:443,客户端访问 https://220.154.136.137:8443/live/123.live.flv flv-ssl-port: ${MediaHttps:} + + # WebSocket-FLV/HLS/TS播放端口(来自docker-compose.yml的MediaHttp环境变量) + # docker映射:9090:80,客户端访问 ws://220.154.136.137:9090/live/123.live.flv ws-flv-port: ${MediaHttp:-8080} + + # WebSocket-SSL播放端口(来自docker-compose.yml的MediaHttps环境变量) + # docker映射:8443:443,客户端访问 wss://220.154.136.137:8443/live/123.live.flv ws-flv-ssl-port: ${MediaHttps:} - # RTP端口 (来自 .env: MediaRtp) + + # ========== 推流/拉流协议端口(宿主机外部端口) ========== + # RTP代理端口(来自docker-compose.yml的MediaRtp环境变量) + # docker映射:10000:10000,用于GB28181设备的RTP流传输 + # 对应zlmediakit config.ini中的rtp_proxy.port=10000 rtp-proxy-port: ${MediaRtp:-10003} - # RTMP端口 (来自 .env: MediaRtmp) + + # RTMP推流端口(来自docker-compose.yml的MediaRtmp环境变量) + # docker映射:1935:1935,OBS推流地址:rtmp://220.154.136.137:1935/live/123 + # 对应zlmediakit config.ini中的rtmp.port=1935 rtmp-port: ${MediaRtmp:-10001} rtmp-ssl-port: 0 - # RTSP端口 (来自 .env: MediaRtsp) + + # RTSP推流/拉流端口(来自docker-compose.yml的MediaRtsp环境变量) + # docker映射:8554:554,RTSP地址:rtsp://220.154.136.137:8554/live/123 + # 对应zlmediakit config.ini中的rtsp.port=554 rtsp-port: ${MediaRtsp:-10002} rtsp-ssl-port: 0 # [可选] 是否自动配置ZLM, 如果希望手动配置ZLM, 可以设为false, 不建议新接触的用户修改