wvp-GB28181-pro icon indicating copy to clipboard operation
wvp-GB28181-pro copied to clipboard

云服务,点超时,收流超时.,或者黑屏无法播放

Open keehub opened this issue 2 years ago • 45 comments

一. 部署环境

 CentOS Linux release 7.6.1810 (Core) 内网Ip 192.168.0.57
 Docker version 20.10.7, build f0df350
 OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)

端口全部开放,是公网部署,未使用https,海康网络摄像机镜头

二. 部署方式

  1. ZLMediaKit(最新镜像,IMAGE ID d5d4a9206a59) 直接运行脚本部署
docker run -id -p 1935:1935 -p 554:554 -p 8000:8000 -p 8001:8001 -p 10000:10000 -p 30000-30500:30000-30500  
-v /root/zlmediakit/config.ini:/opt/media/conf/config.ini zlmediakit/zlmediakit:Release.last
ZLMediaKit配置文件,点击查看 (/root/zlmediakit/config.ini)
; auto-generated by mINI class {

[api]
apiDebug=0
defaultSnap=./www/logo.png
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
snapRoot=./www/snap/

[cluster]
origin_url=
timeout_sec=15

[ffmpeg]
bin=/usr/bin/ffmpeg
cmd=%s -fflags nobuffer -i %s -c:a aac -strict -2 -ar 44100 -ab 48k -c:v libx264  -f flv %s
log=./ffmpeg/ffmpeg.log
restart_sec=0
snap=%s -i %s -y -f mjpeg -t 0.001 %s

[general]
addMuteAudio=1
continue_push_ms=3000
enableVhost=0
enable_audio=1
flowThreshold=1024
fmp4_demand=0
hls_demand=0
maxStreamWaitMS=15000
mediaServerId=wvp-media-id
mergeWriteMS=0
modifyStamp=0
publishToHls=1
publishToMP4=0
resetWhenRePlay=1
rtmp_demand=0
rtsp_demand=0
streamNoneReaderDelayMS=10000
ts_demand=0
unready_frame_cache=100
wait_add_track_ms=3000
wait_track_ready_ms=3000

[hls]
broadcastRecordTs=0
deleteDelaySec=0
fileBufSize=65536
filePath=./www
segDur=2
segNum=3
segRetain=5

[hook]
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
alive_interval=10.0
enable=1
on_flow_report=
on_http_access=
on_play=http://192.168.0.57:18080/index/hook/on_play
on_publish=http://192.168.0.57:18080/index/hook/on_publish
on_record_mp4=http://127.0.0.1:18081/api/record/on_record_mp4
on_record_ts=
on_rtsp_auth=
on_rtsp_realm=
on_server_keepalive=http://192.168.0.57:18080/index/hook/on_server_keepalive
on_server_started=http://192.168.0.57:18080/index/hook/on_server_started
on_shell_login=http://192.168.0.57:18080/index/hook/on_shell_login
on_stream_changed=http://192.168.0.57:18080/index/hook/on_stream_changed
on_stream_none_reader=http://192.168.0.57:18080/index/hook/on_stream_none_reader
on_stream_not_found=http://192.168.0.57:18080/index/hook/on_stream_not_found
timeoutSec=20

[http]
charSet=utf-8
dirMenu=1
forbidCacheSuffix=
keepAliveSecond=30
maxReqSize=40960
notFound=<html><head><title>404 Not Found</title></head><body bgcolor="white"><center><h1>您访问的资源不存在!</h1></center><hr><center>ZLMediaKit(git hash:a3d696d,branch:master,build time:Feb 23 2022 12:29:13)</center></body></html>
port=8001
rootPath=./www
sendBufSize=65536
sslport=443
virtualPath=

[multicast]
addrMax=239.255.255.255
addrMin=239.0.0.0
udpTTL=64

[record]
appName=record
fastStart=0
fileBufSize=65536
filePath=./www
fileRepeat=0
fileSecond=3600
sampleMS=500

[rtc]
externIP=
port=8000
preferredCodecA=PCMU,PCMA,opus,mpeg4-generic
preferredCodecV=H264,H265,AV1X,VP9,VP8
rembBitRate=0
timeoutSec=15

[rtmp]
handshakeSecond=15
keepAliveSecond=15
modifyStamp=0
port=1935
sslport=0

[rtp]
audioMtuSize=600
rtpMaxSize=10
videoMtuSize=1400

[rtp_proxy]
dumpDir=
port=10000
port_range=30000-30500
timeoutSec=15

[rtsp]
authBasic=0
directProxy=1
handshakeSecond=15
keepAliveSecond=15
port=554
sslport=0

[shell]
maxReqSize=1024
port=0

; } ---

  1. wvp-GB28181-pro (最新代码,648540858 committed )编译成jarfile后,以java -jar wvp-pro-2.0.2-04130239.jar 的形式运行
wvp-GB28181-pro 配置文件,点击查看 (application.yml,无关敏感配置用***代替了)
spring:
  # [可选]上传文件大小限制
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB
  # REDIS数据库配置
  redis:
    # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
    host: ***
    # [必须修改] 端口号
    port: ***
    # [可选] 数据库 DB
    database: ***
    # [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
    password:
    # [可选] 超时时间
    timeout: 10000
    # [可选] jdbc数据库配置, 项目使用sqlite作为数据库,一般不需要配置
    # mysql数据源
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://***/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false
    username: ***
    password: ***
    druid:
      initialSize: 10                       # 连接池初始化连接数
      maxActive: 200                        # 连接池最大连接数
      minIdle: 5                            # 连接池最小空闲连接数
      maxWait: 60000                        # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
      keepAlive: true                       # 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
      validationQuery: select 1             # 检测连接是否有效sql,要求是查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
      testWhileIdle: true                   # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      testOnBorrow: false                   # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      testOnReturn: false                   # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      poolPreparedStatements: false         # 是否開啟PSCache,並且指定每個連線上PSCache的大小
      timeBetweenEvictionRunsMillis: 60000  # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
      minEvictableIdleTimeMillis: 300000    # 配置一個連線在池中最小生存的時間,單位是毫秒
      filters: stat,wall,slf4j             # 配置监控统计拦截的filters,监控统计用的filter:sta, 日志用的filter:log4j, 防御sql注入的filter:wall
      useGlobalDataSourceStat: true         # 合并多个DruidDataSource的监控数据
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000
      #stat-view-servlet.url-pattern: /admin/druid/*

#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
  port: 18080

# 作为28181服务器的配置
sip:
  # [必须修改] 本机的IP
  ip: 192.168.0.57
  # [可选] 28181服务监听的端口
  port: 5060
  # 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
  # 后两位为行业编码,定义参照附录D.3
  # 3701020049标识山东济南历下区 信息行业接入
  # [可选]
  domain: 3402000000
  # [可选]
  id: 34020000002000000001
  # [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
  password: 12345678

#zlm 默认服务器配置
media:
  id: wvp-media-id
  # [必须修改] zlm服务器的内网IP
  ip: 192.168.0.57
  # [必须修改] zlm服务器的http.port
  http-port: 8001
  # [可选] zlm服务器的hook.admin_params=secret
  secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
  # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
  rtp:
    # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
    enable: true
    # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功
    port-range: 30000,30500 # 端口范围
    # [可选] 国标级联在此范围内选择端口发送媒体流,
    send-port-range: 30000,30500 # 端口范围
  # 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
  record-assist-port: 18081
# [可选] 日志配置, 一般不需要改
logging:
  config: classpath:logback-spring-local.xml

# 版本信息, 不需修改
version:
  version: "@project.version@"
  description: "@project.description@"
  artifact-id: "@project.artifactId@"

  1. [海康网络摄像机镜头配置]

配置图片 (https://user-images.githubusercontent.com/41461205/163112767-ca696c6e-dab3-4876-8a6c-5efbb846cc26.png)

三. 界面截图,日志截图

zlm服务器id配置都是一致 zlm与wvp-GB28181-pro 连接都是用的内网ip

wvp-GB28181-pro日志截图 (https://user-images.githubusercontent.com/41461205/163119165-4462fbef-77b1-44de-ad43-26a3da7f05cc.png)

wvp-GB28181-pro媒体节点 (https://user-images.githubusercontent.com/41461205/163115450-4105bee5-3075-4c58-b9ae-d3baea7e2c13.png)

wvp-GB28181-pro点播收流,超时界面 (https://user-images.githubusercontent.com/41461205/163115957-9236ba52-afd2-4986-836d-1986ede6e3db.png)

keehub avatar Apr 13 '22 07:04 keehub

2022-04-13 17:19:23.037 [http-nio-18080-exec-9] INFO  c.g.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander:357 - 34020000001320000003_34020000001320000003 分配的ZLM为: wvp-media-id [【公网IP】:43260]
2022-04-13 17:19:23.166 [http-nio-18080-exec-9] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20033} created. insert into log ( name, type, uri, address, result, timing, username, createTime) values ('开始点播', 'GET', '/api/play/start/34020000001320000003/34020000001320000003', '43.250.106.176', '200 OK', 1454, 'admin', '2022-04-13 17:19:23')
2022-04-13 17:19:23.167 [http-nio-18080-exec-9] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20033} Parameters : []
2022-04-13 17:19:23.167 [http-nio-18080-exec-9] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20033} Types : []
2022-04-13 17:19:23.169 [http-nio-18080-exec-9] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20033} executed. 2.146987 millis. insert into log ( name, type, uri, address, result, timing, username, createTime) values ('开始点播', 'GET', '/api/play/start/34020000001320000003/34020000001320000003', '43.250.106.176', '200 OK', 1454, 'admin', '2022-04-13 17:19:23')
2022-04-13 17:19:23.169 [http-nio-18080-exec-9] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20033} closed
2022-04-13 17:19:23.230 [wvp-5] INFO  c.g.i.v.g.t.e.r.impl.InviteResponseProcessor:84 - [回复ack] sip:[email protected]:60735-> 175.9.140.239:60735 
2022-04-13 17:19:23.714 [wvp-6] INFO  c.g.i.v.g.t.event.request.impl.ByeRequestProcessor:89 - 收到bye, [34020000001320000003/34020000002000000001]
2022-04-13 17:19:23.716 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20034} created. SELECT * FROM device_channel WHERE channelId=?
2022-04-13 17:19:23.716 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20034} Parameters : [34020000001320000003]
2022-04-13 17:19:23.716 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20034} Types : [VARCHAR]
2022-04-13 17:19:23.718 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20034} executed. 1.238913 millis. SELECT * FROM device_channel WHERE channelId=?
2022-04-13 17:19:23.719 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20034} closed
2022-04-13 17:19:23.719 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20035} created. SELECT * FROM device WHERE deviceId = ?
2022-04-13 17:19:23.719 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20035} Parameters : [34020000001320000003]
2022-04-13 17:19:23.720 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20035} Types : [VARCHAR]
2022-04-13 17:19:23.720 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20035} executed. 0.911392 millis. SELECT * FROM device WHERE deviceId = ?
2022-04-13 17:19:23.721 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20035} closed
2022-04-13 17:19:23.722 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20036} created. UPDATE device_channel SET streamId=null WHERE deviceId=? AND channelId=?
2022-04-13 17:19:23.722 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20036} Parameters : [34020000001320000003, 34020000002000000001]
2022-04-13 17:19:23.722 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20036} Types : [VARCHAR, VARCHAR]
2022-04-13 17:19:23.723 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20036} executed. 0.839975 millis. UPDATE device_channel SET streamId=null WHERE deviceId=? AND channelId=?
2022-04-13 17:19:23.723 [wvp-6] DEBUG druid.sql.Statement:134 - {conn-10010, pstmt-20036} closed
2022-04-13 17:19:41.035 [Timer-1] WARN  com.genersoft.iot.vmp.service.impl.PlayServiceImpl:244 - 设备点播超时,deviceId:34020000001320000003 ,channelId:34020000001320000003
javax.sip.SipException: Cannot find listening point for transport TCP
	at gov.nist.javax.sip.stack.SIPDialog.createRequest(SIPDialog.java:2472)
	at gov.nist.javax.sip.stack.SIPDialog.createRequest(SIPDialog.java:2403)
	at com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander.streamByeCmd(SIPCommander.java:733)
	at com.genersoft.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander.streamByeCmd(SIPCommander.java:677)
	at com.genersoft.iot.vmp.service.impl.PlayServiceImpl$1.run(PlayServiceImpl.java:250)
	at java.util.TimerThread.mainLoop(Timer.java:555)
	at java.util.TimerThread.run(Timer.java:505)

keehub avatar Apr 13 '22 09:04 keehub

网络截图

keehub avatar Apr 13 '22 09:04 keehub

wvp的media的配置提供下

648540858 avatar Apr 14 '22 09:04 648540858

wvp-GB28181-proZLMediaKit 部署在同一台云Linux下,ZLMediaKit运行在docker 容器下,wvp-GB28181-pro运行在Linux 环境下,海康的网络摄像头是在我本地。

wvp的media的配置在下面

spring:
  # [可选]上传文件大小限制
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 100MB
  # REDIS数据库配置
  redis:
    # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
    host: ***
    # [必须修改] 端口号
    port: 6379
    # [可选] 数据库 DB
    database: 1
    # [可选] 访问密码,若你的redis服务器没有设置密码,就不需要用密码去连接
    password:
    # [可选] 超时时间
    timeout: 10000
    # [可选] 一个pool最多可分配多少个jedis实例
    poolMaxTotal: 1000
    # [可选] 一个pool最多有多少个状态为idle(空闲)的jedis实例
    poolMaxIdle: 500
    # [可选] 最大的等待时间(秒)
    poolMaxWait: 5
  # [可选] jdbc数据库配置, 项目使用sqlite作为数据库,一般不需要配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://***/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false
    username: root
    password: 12345678
    druid:
      initialSize: 10                       # 连接池初始化连接数
      maxActive: 200                        # 连接池最大连接数
      minIdle: 5                            # 连接池最小空闲连接数
      maxWait: 60000                        # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
      keepAlive: true                       # 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
      validationQuery: select 1             # 检测连接是否有效sql,要求是查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
      testWhileIdle: true                   # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      testOnBorrow: false                   # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      testOnReturn: false                   # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      poolPreparedStatements: false         # 是否開啟PSCache,並且指定每個連線上PSCache的大小
      timeBetweenEvictionRunsMillis: 60000  # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
      minEvictableIdleTimeMillis: 300000    # 配置一個連線在池中最小生存的時間,單位是毫秒
      filters: stat,wall,slf4j             # 配置监控统计拦截的filters,监控统计用的filter:sta, 日志用的filter:log4j, 防御sql注入的filter:wall
      useGlobalDataSourceStat: true         # 合并多个DruidDataSource的监控数据
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000
      #stat-view-servlet.url-pattern: /admin/druid/*

# druid管理监控页面的一些配置
rj-druid-manage:
  allow:                        # 访问druid监控页面的IP白名单
  deny:                        # 访问druid监控页面IP黑名单
  loginUsername: rjAdmin      # 访问druid监控页面账号
  loginPassword: rj@2022     # 访问druid监控页面密码

#mybatis:
#    configuration:
#        # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
#        log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#        # 返回类型为Map,显示null对应的字段
#        call-setters-on-nulls: true
## [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口

# [可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
  port: 18080
  # [可选] HTTPS配置, 默认不开启
  ssl:
    # [可选] 是否开启HTTPS访问
    enabled: false
    # [可选] 证书文件路径,放置在resource/目录下即可,修改xxx为文件名
    key-store: classpath:xxx.jks
    # [可选] 证书密码
    key-password: password
    # [可选] 证书类型, 默认为jks,根据实际修改
    key-store-type: JKS

# 作为28181服务器的配置
sip:
  # [必须修改] 本机的IP, 必须是网卡上的IP,用于sip下协议栈监听ip,如果监听所有设置为0.0.0.0
  monitor-ip: 0.0.0.0
  # [必须修改] 本机的IP
  ip: 【Linux公网IP】  
  # [可选] 28181服务监听的端口
  port: 5060
  # 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
  # 后两位为行业编码,定义参照附录D.3
  # 3701020049标识山东济南历下区 信息行业接入
  # [可选]
  domain: 3402000000
  # [可选]
  id: 34020000002000000001
  # [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
  password: 12345678
  # [可选] 心跳超时时间, 建议设置为心跳周期的三倍
  keepalive-timeout: 255
  # [可选] 国标级联注册失败,再次发起注册的时间间隔。 默认60秒
  register-time-interval: 60
  # [可选] 云台控制速度
  ptz-speed: 50
  # TODO [可选] 收到心跳后自动上线, 重启服务后会将所有设备置为离线,默认false,等待注册后上线。设置为true则收到心跳设置为上线。
  # keepalliveToOnline: false
  # 是否存储alarm信息
  alarm: false

#zlm 默认服务器配置
media:
  # [必须修改] zlm服务器唯一id,用于触发hook时区别是哪台服务器,general.mediaServerId
  id: wvp-media-id
  # [必须修改] zlm服务器的内网IP
  ip: 【Linux公网IP,docker流媒体 ip 都试过】  
  # [可选] 返回流地址时的ip,置空使用 media.ip
  stream-ip: 【Linux公网IP】  
  # [可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ip
  sdp-ip: 【Linux公网IP】  
  # [可选] zlm服务器的hook所使用的IP, 默认使用sip.ip
  hook-ip: 
  # [必须修改] zlm服务器的http.port
  http-port: 8001
  # [可选] zlm服务器的http.sslport, 置空使用zlm配置文件配置
  http-ssl-port:
  # [可选] zlm服务器的rtmp.port, 置空使用zlm配置文件配置
  rtmp-port:
  # [可选] zlm服务器的rtmp.sslport, 置空使用zlm配置文件配置
  rtmp-ssl-port:
  # [可选] zlm服务器的 rtp_proxy.port, 置空使用zlm配置文件配置
  rtp-proxy-port:
  # [可选] zlm服务器的 rtsp.port, 置空使用zlm配置文件配置
  rtsp-port:
  # [可选] zlm服务器的 rtsp.sslport, 置空使用zlm配置文件配置
  rtsp-ssl-port:
  # [可选] 是否自动配置ZLM, 如果希望手动配置ZLM, 可以设为false, 不建议新接触的用户修改
  auto-config: true
  # [可选] zlm服务器的hook.admin_params=secret
  secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
  # [可选] zlm服务器的general.streamNoneReaderDelayMS
  stream-none-reader-delay-ms:  18000  # 无人观看多久自动关闭流, -1表示永不自动关闭,即 关闭按需拉流
  # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
  rtp:
    # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
    enable: true
    # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功
    port-range: 30000,30500 # 端口范围
    # [可选] 国标级联在此范围内选择端口发送媒体流,
    send-port-range: 30000,30500 # 端口范围
  # 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
  record-assist-port: 0

# [可选] 日志配置, 一般不需要改
logging:
  config: classpath:logback-spring-local.xml

# [根据业务需求配置]
user-settings:
  # [可选] 服务ID,不写则为000000
  server-id:
  # [可选] 自动点播, 使用固定流地址进行播放时,如果未点播则自动进行点播, 需要rtp.enable=true
  auto-apply-play: false
  # [可选] 部分设备需要扩展SDP,需要打开此设置
  senior-sdp: false
  # 保存移动位置历史轨迹:true:保留历史数据,false:仅保留最后的位置(默认)
  save-position-history: false
  # 点播等待超时时间,单位:毫秒
  play-timeout: 3000
  # 上级点播等待超时时间,单位:毫秒
  platform-play-timeout: 60000
  # 是否开启接口鉴权
  interface-authentication: true
  # 自动配置redis 可以过期事件
  redis-config: true
  # 接口鉴权例外的接口, 即不进行接口鉴权的接口,尽量详细书写,尽量不用/**,至少两级目录
  interface-authentication-excludes:
    - /api/v1/**
  # 推流直播是否录制
  record-push-live: true
  # 国标是否录制
  record-sip: true
  # 是否将日志存储进数据库
  logInDatebase: true
  # 第三方匹配,用于从stream钟获取有效信息
  thirdPartyGBIdReg: "[\\s\\S]*"

# 在线文档: swagger-ui(生产环境建议关闭)
swagger-ui:
  enabled: true

# 版本信息, 不需修改
version:
  version: "@project.version@"
  description: "@project.description@"
  artifact-id: "@project.artifactId@"


wvp的media的配置提供下

keehub avatar Apr 15 '22 03:04 keehub

仔细看配置文件,按实际情况填写!

slxsyxx avatar Apr 15 '22 06:04 slxsyxx

仔细看配置文件,按实际情况填写!

同样的问题,详细对比过wvp和zlm的配置都是一样的。很奇怪大家很容易遇到的问题,但是在这里没有明说,而是提示去看wiki

tingmag avatar Apr 18 '22 04:04 tingmag

我也遇见同样的问题了,想问一下,最后怎么解决的?

zhangdongshun avatar Apr 18 '22 07:04 zhangdongshun

同样的问题,这个最后怎么解决呢

rainingshining avatar Apr 20 '22 06:04 rainingshining

这个问题,分析配置无果就是抓包,一般问题多数出现在配置或者网络上。

648540858 avatar Apr 25 '22 09:04 648540858

遇到同样问题,请问题主解决了么?

JinruiWang avatar May 07 '22 14:05 JinruiWang

统一回复下,这个基本都是wvp配置不当或者网络端口为开放造成的。

648540858 avatar May 20 '22 02:05 648540858

auto-apply-play 设置为true试试!

JinruiWang avatar May 20 '22 03:05 JinruiWang

网络截图

我的理解:这里展示的设备地址中的端口号,应该是摄像头里面设置好的 5060。不知道为啥会是一个随机端口号?

另外,请问你的问题解决了吗?

realbillwong avatar Jun 06 '22 10:06 realbillwong

我也遇到这个问题了

HogwartsRico avatar Jun 07 '22 05:06 HogwartsRico

说一下我的解决办法:

  1. 首先检查摄像头接入平台时选择的传输协议是 TCP 还是 UDP
  2. 平台 - 国标设备,点击“刷新”,同步摄像头信息。同步后,摄像头地址应该变成 IP:5060
  3. 检查平台 - 国标设备的流传输模式是不是跟第一步中的一致?如果不一样,需要修改为同样的传输协议。
  4. 最后检查防火墙是否开放

realbillwong avatar Jun 07 '22 09:06 realbillwong

经过几天的折腾目前无法解决收流超时的问题,根据zlm的日志是推流失败导致的,目前还没找到解决办法,望本项目贡献者给予解决方案,谢谢

MrLiuFang avatar Jun 24 '22 01:06 MrLiuFang

我也遇到了这个问题!不知道咋解决!

lixiansky avatar Jun 30 '22 07:06 lixiansky

我这边出现的情况是:一部分摄像头可以正常播放实时视频,一部分不行,后台显示点播失败。这种一般是啥情况呢?

penghui-luna avatar Jul 05 '22 02:07 penghui-luna

中的端口号,应该是摄像头里面设置好的 5060。不知道为啥会是一个随机端口号?

另外,请问你的问题解决了吗? 您好,请问这个问题解决了吗?

Zhu168888rui avatar Jul 15 '22 02:07 Zhu168888rui

查看文档关于此问题的说明https://doc.wvp-pro.cn/#/_content/qa/play_error

648540858 avatar Sep 02 '22 08:09 648540858

ZLM版本和WVP版本不同步的问题,这个我也遇到了,最新版本ZLM必须用最新版本wvp

hnzmxy avatar Sep 06 '22 05:09 hnzmxy

docker启动ZLM时需要将RTP端口在宿主机映射出来:-p 30000-30500:30000-30500 -p 30000-30500:30000-30500/udp,注意:必须是tcp和udp的端口都打开,否则就可能出现【点播失败】收流超时

dcq123 avatar Nov 08 '22 08:11 dcq123

我修改了这几个后可以播放了 media:

[必须修改] zlm服务器唯一id,用于触发hook时区别是哪台服务器,general.mediaServerId

id: wvp-media-id

[必须修改] zlm服务器的内网IP

ip: 127.0.0.1

[可选] 返回流地址时的ip,置空使用 media.ip

stream-ip: 公网IP

[可选] wvp在国标信令中使用的ip,此ip为摄像机可以访问到的ip, 置空使用 media.ip

sdp-ip: 公网IP

[可选] zlm服务器的hook所使用的IP, 默认使用sip.ip

hook-ip: 127.0.0.1

wildwindyevan avatar Nov 17 '22 14:11 wildwindyevan

我的已经解决了。media没有配置stream-ip和sdp-ip导致的。一定要配置为公网ip,如果不配置默认使用media.ip,你的media.ip是一个内网地址。wvp.pro对摄像头发起invite 请求中会把流媒体的ip返回去(就是这个stream-ip)。摄像头会像这个地址发起推流,但是现在你没有配置所以取的是media.ip,而这个ip是内网,所以推流超时。。。。。。

hejinenPrivate avatar Nov 22 '22 08:11 hejinenPrivate

我现在遇到了播放黑屏,但是有快照;F12发现ws地址连不上;不确定是不是不兼容唠版本;硬盘录像机支持的国标版本是2011

loveworldlovesky avatar Feb 18 '23 08:02 loveworldlovesky

@hejinenPrivate 阿里云ECS是没办法直接监听公网地址的,有解决办法没?

zhuuvzhi avatar Mar 10 '23 09:03 zhuuvzhi

同样的问题,请问到底有解决方式没有?

xiaoxuanshiya avatar May 29 '23 04:05 xiaoxuanshiya

我的已经解决了。media没有配置stream-ip和sdp-ip导致的。一定要配置为公网ip,如果不配置默认使用media.ip,你的media.ip是一个内网地址。wvp.pro对摄像头发起invite 请求中会把流媒体的ip返回去(就是这个stream-ip)。摄像头会像这个地址发起推流,但是现在你没有配置所以取的是media.ip,而这个ip是内网,所以推流超时。。。。。。

但是配置内网的话, 如果摄像头能访问这个内网ip的话, 理论上 也会通的啊

yogo-zhangyingzhe avatar Jul 20 '23 10:07 yogo-zhangyingzhe

解决了吗 我也遇到了

zh176 avatar Sep 05 '23 08:09 zh176

请问下那个国标录像和云端录像有区别吗,为啥云端的有录像,从国标设备点进去没有录像信息呢。是跟摄像头本地的录像有关吗

JQYXQ avatar Sep 15 '23 04:09 JQYXQ