648540858 / wvp-GB28181-pro

WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的网络视频平台,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台。
https://doc.wvp-pro.cn
MIT License
4.61k stars 1.39k forks source link

技术咨询:播放报错:收流超时 #1422

Closed yh4922 closed 1 month ago

yh4922 commented 2 months ago

环境信息:

内容描述: 服务启动完成后 接入了同局域网下的海康相机,接入注册成功,在页面上点击播放报错收流超时 但是在开始点播时直接用vlc 播放zlm的流地址是可以播放的

截图
image

配置文件

server:
  port: 18080

sip:
  ip: 192.168.18.103
  port: 5060
  domain: 3707000008
  id: 37070000082008000001
  password: 123456789

media:
  id: FQ3TF8yT83wh5Wvz
  ip: 192.168.18.103
  http-port: 80
  secret: f879d2a9-4274-4cbf-8f13-e01016c3b3f1
  rtp:
    enable: true
    # [可选] 在此范围内选择端口用于媒体流传输,
    port-range: 30000,30500 # 端口范围
    # [可选] 国标级联在此范围内选择端口发送媒体流,
    send-port-range: 30000,30500 # 端口范围
  record-assist-port: 18081

spring:
  redis:
    host: 192.168.18.60
    port: 6389
  datasource:
    dynamic:
      primary: master
      datasource:
        master:
          type: com.zaxxer.hikari.HikariDataSource
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://192.168.18.60:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&allowMultiQueries=true
          username: root
          password: 123456
          hikari:
            connection-timeout: 20000 # 是客户端等待连接池连接的最大毫秒数
            initialSize: 50 # 连接池初始化连接数
            maximum-pool-size: 200 # 连接池最大连接数
            minimum-idle: 10 # 连接池最小空闲连接数
            idle-timeout: 300000 # 允许连接在连接池中空闲的最长时间(以毫秒为单位)
            max-lifetime: 1200000 # 是池中连接关闭后的最长生命周期(以毫秒为单位)

mybatis:
  configuration:
    map-underscore-to-camel-case: true

日志 wvp日志

2024-04-18 16:04:32.689 [http-nio-18080-exec-7]  INFO --- c.g.iot.vmp.vmanager.gb28181.play.PlayController: 86 [开始点播] deviceId:37070000081118000003, channelId:37070000081318000001, 
2024-04-18 16:04:32.772 [http-nio-18080-exec-7]  INFO --- ZLMServerFactory: 46 {"code":0,"exist":false}
2024-04-18 16:04:32.777 [http-nio-18080-exec-7]  INFO --- ZLMServerFactory: 94 {"code":0,"port":30366}
2024-04-18 16:04:32.778 [http-nio-18080-exec-7]  INFO --- com.genersoft.iot.vmp.service.impl.PlayServiceImpl: 470 [点播开始] deviceId: 37070000081118000003, channelId: 37070000081318000001,码流类型:stream:0, 收流端口: 30366, 码流:37070000081118000003_37070000081318000001, 收流模式:TCP-PASSIVE, SSRC: 0700000672, SSRC校验:false
2024-04-18 16:04:32.785 [http-nio-18080-exec-7]  INFO --- c.g.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander: 276 37070000081118000003_37070000081318000001 分配的ZLM为: FQ3TF8yT83wh5Wvz [192.168.18.103:30366]
2024-04-18 16:04:32.819 [wvp-3]  INFO --- c.g.i.v.g.t.e.r.impl.InviteResponseProcessor: 91 [回复ack] 37070000081118000003-> 192.168.18.40:64529 
2024-04-18 16:04:32.893 [http-nio-18080-exec-5]  INFO --- c.genersoft.iot.vmp.media.zlm.ZLMHttpHookListener: 167 [ZLM HOOK]推流鉴权:your_server_id->OnPublishHookParam{id='37070000081118000003_37070000081318000001', app='rtp', stream='37070000081118000003_37070000081318000001', ip='192.168.18.40', params='', port=15060, schema='rtp', vhost='__defaultVhost__'}
2024-04-18 16:04:33.052 [wvp-4]  INFO --- c.g.i.v.g.t.e.r.i.m.n.c.KeepaliveNotifyMessageHandler: 64 [收到心跳] device: 37070000081118000003, callId: 336530446
2024-04-18 16:04:38.062 [wvp-5]  INFO --- c.g.i.v.g.t.e.r.i.m.n.c.KeepaliveNotifyMessageHandler: 64 [收到心跳] device: 37070000081118000003, callId: 1010239026
2024-04-18 16:04:43.074 [wvp-6]  INFO --- c.g.i.v.g.t.e.r.i.m.n.c.KeepaliveNotifyMessageHandler: 64 [收到心跳] device: 37070000081118000003, callId: 222188136
2024-04-18 16:04:48.081 [wvp-7]  INFO --- c.g.i.v.g.t.e.r.i.m.n.c.KeepaliveNotifyMessageHandler: 64 [收到心跳] device: 37070000081118000003, callId: 679859036
2024-04-18 16:04:50.787 [ThreadPoolTaskScheduler-45]  INFO --- com.genersoft.iot.vmp.service.impl.PlayServiceImpl: 497 [点播超时] 收流超时 deviceId: 37070000081118000003, channelId: 37070000081318000001,码流:stream:0,端口:30366, SSRC: 0700000672
2024-04-18 16:04:50.793 [ThreadPoolTaskScheduler-45]  INFO --- c.g.iot.vmp.gb28181.transmit.cmd.impl.SIPCommander: 674 [发送BYE] 设备: device: 37070000081118000003, channel: 37070000081318000001, callId: 5e58192dfef7822b0d5a088443bdd347@192.168.18.103
2024-04-18 16:04:50.801 [ThreadPoolTaskScheduler-45]  INFO --- ZLMServerFactory: 114 关闭RTP Server {"code":0,"hit":1}
2024-04-18 16:04:50.811 [ThreadPoolTaskScheduler-45]  INFO --- ZLMServerFactory: 114 关闭RTP Server {"code":0,"hit":0}
2024-04-18 16:04:50.812 [ThreadPoolTaskScheduler-45]  INFO --- ZLMServerFactory: 114 关闭RTP Server {"code":0,"hit":0}

zlm日志


2024-04-18 08:06:13.718 I [MediaServer] [21829-event poller 5] TcpServer.cpp:218 start_l | TCP server listening on [::]: 30384
2024-04-18 08:06:13.718 D [MediaServer] [21829-event poller 5] WebApi.cpp:265 http api debug | 
2024-04-18 08:06:13.927 I [MediaServer] [21829-event poller 6] GB28181Process.cpp:182 onRtpDecode | 37070000081118000003_37070000081318000001 judged to be PS
2024-04-18 08:06:13.927 I [MediaServer] [21829-event poller 6] Decoder.cpp:143 onTrack | Got track: H264
2024-04-18 08:06:13.927 I [MediaServer] [21829-event poller 6] Decoder.cpp:97 onStream | Add track finished
2024-04-18 08:06:13.928 I [MediaServer] [21829-event poller 6] RtpProcess.cpp:269 operator() | 37070000081118000003_37070000081318000001(192.168.18.40:15060) 允许RTP推流
2024-04-18 08:06:14.018 D [MediaServer] [21829-event poller 6] MediaSink.cpp:162 emitAllTrackReady | All track ready use 89ms
2024-04-18 08:06:14.019 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注册:fmp4://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:14.019 I [MediaServer] [21829-event poller 6] MultiMediaSourceMuxer.cpp:555 onAllTrackReady | stream: rtp://__defaultVhost__/rtp/37070000081118000003_37070000081318000001 , codec info: H264[1920/1080/0] 
2024-04-18 08:06:14.020 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注册:rtsp://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:14.057 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注册:rtmp://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:14.059 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注册:ts://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:20.058 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注册:hls://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:31.735 I [MediaServer] [21829-event poller 5] TcpServer.cpp:49 ~TcpServer | Close tcp server [::]: 30384
2024-04-18 08:06:31.736 I [MediaServer] [21829-event poller 5] Rtsp.cpp:430 operator() | return port to pool:30384-30385
2024-04-18 08:06:31.736 W [MediaServer] [21829-event poller 6] RtpSession.cpp:63 onError | 20-87(192.168.18.40:15060) 37070000081118000003_37070000081318000001 255(Server shutdown)
2024-04-18 08:06:31.736 D [MediaServer] [21829-event poller 5] WebApi.cpp:265 http api debug | 
2024-04-18 08:06:31.736 W [MediaServer] [21829-event poller 6] RtpProcess.cpp:63 ~RtpProcess | 37070000081118000003_37070000081318000001(192.168.18.40:15060) RTP推流器(__defaultVhost__/rtp/37070000081118000003_37070000081318000001)断开,耗时(s):17
2024-04-18 08:06:31.736 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注销:hls://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:31.737 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注销:ts://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:31.737 D [MediaServer] [21829-event poller 5] WebApi.cpp:265 http api debug | 
2024-04-18 08:06:31.738 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注销:rtsp://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:31.738 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注销:rtmp://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:31.738 I [MediaServer] [21829-event poller 6] MediaSource.cpp:517 emitEvent | 媒体注销:fmp4://__defaultVhost__/rtp/37070000081118000003_37070000081318000001
2024-04-18 08:06:31.741 D [MediaServer] [21829-event poller 5] WebApi.cpp:265 http api debug | 
2024-04-18 08:06:31.743 D [MediaServer] [21829-event poller 5] WebApi.cpp:265 http api debug | 
yh4922 commented 2 months ago

wvp.log

yh4922 commented 2 months ago

1

yh4922 commented 2 months ago

zlm.log

Fzlw commented 2 months ago

一样的问题

answer666 commented 2 months ago

你好,请问解决了吗?

yh4922 commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

answer666 commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

你是 http 转 https 的问题吗? 我刚刚可以了,sdp ip 与stream ip 配置外网ip试试。 但是不知道你的具体问题 不好判断

yh4922 commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

你是 http 转 https 的问题吗? 我刚刚可以了,sdp ip 与stream ip 配置外网ip试试。 但是不知道你的具体问题 不好判断

我整个系统实在局域网内运行的 不出外网 用的都是局域网IP

answer666 commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

你是 http 转 https 的问题吗? 我刚刚可以了,sdp ip 与stream ip 配置外网ip试试。 但是不知道你的具体问题 不好判断

我整个系统实在局域网内运行的 不出外网 用的都是局域网IP

好吧, 那我俩场景还是不一样的。。

Fzlw commented 2 months ago

可以切换到2.7.0分支试一试

yh4922 commented 2 months ago

2.7.0分支 试了下可以

zhuibudao commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

你是 http 转 https 的问题吗? 我刚刚可以了,sdp ip 与stream ip 配置外网ip试试。 但是不知道你的具体问题 不好判断

想问一下,你这个是啥问题,为啥sdp ip 与stream ip 配置外网ip就解决了

answer666 commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

你是 http 转 https 的问题吗? 我刚刚可以了,sdp ip 与stream ip 配置外网ip试试。 但是不知道你的具体问题 不好判断

想问一下,你这个是啥问题,为啥sdp ip 与stream ip 配置外网ip就解决了

我也不是很清楚,只是根据别人的issues去测试的。

Ancientwwy commented 2 months ago

没有 我给钱进了知识星球 他也不回复我了 😂😂 issues 这边估计也不维护了把

你是 http 转 https 的问题吗? 我刚刚可以了,sdp ip 与stream ip 配置外网ip试试。 但是不知道你的具体问题 不好判断

想问一下,你这个是啥问题,为啥sdp ip 与stream ip 配置外网ip就解决了

我也不是很清楚,只是根据别人的issues去测试的。

因为通知摄像头推流地址是用SDP通知的,如果不配置sdp ip 或者stream ip那么有可能SDP里携带内网IP,这将导致摄像头无法将视频流推到流媒体中。

answer666 commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

Ancientwwy commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

answer666 commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

Ancientwwy commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

Ancientwwy commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

answer666 commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

Ancientwwy commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

如果有条件的话可以看看离线的摄像头是啥情况,你开启https应该不会影响到你的设备在离线的吧

answer666 commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

如果有条件的话可以看看离线的摄像头是啥情况,你开启https应该不会影响到你的设备在离线的吧

有排查方向吗? 我现在是结合 zlm 和 wvp 的日志来看的, 还有就是我摄像头的配置都是一致的,有一批不在线的在外地,专用卡是否是网络问题还不好说。。

Ancientwwy commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

如果有条件的话可以看看离线的摄像头是啥情况,你开启https应该不会影响到你的设备在离线的吧

有排查方向吗? 我现在是结合 zlm 和 wvp 的日志来看的, 还有就是我摄像头的配置都是一致的,有一批不在线的在外地,专用卡是否是网络问题还不好说。。

可以去摄像头上抓包试试,看看摄像头侧抓到的报文是啥情况。

answer666 commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

如果有条件的话可以看看离线的摄像头是啥情况,你开启https应该不会影响到你的设备在离线的吧

有排查方向吗? 我现在是结合 zlm 和 wvp 的日志来看的, 还有就是我摄像头的配置都是一致的,有一批不在线的在外地,专用卡是否是网络问题还不好说。。

可以去摄像头上抓包试试,看看摄像头侧抓到的报文是啥情况。

这个抓包 我也看别的朋友说了,具体是怎么抓包的,能给个教程参考下吗, 很懵逼--

Ancientwwy commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

如果有条件的话可以看看离线的摄像头是啥情况,你开启https应该不会影响到你的设备在离线的吧

有排查方向吗? 我现在是结合 zlm 和 wvp 的日志来看的, 还有就是我摄像头的配置都是一致的,有一批不在线的在外地,专用卡是否是网络问题还不好说。。

可以去摄像头上抓包试试,看看摄像头侧抓到的报文是啥情况。

这个抓包 我也看别的朋友说了,具体是怎么抓包的,能给个教程参考下吗, 很懵逼--

具体办法得看摄像头厂家;我记得大华、宇视摄像头自带抓包功能,插入U盘就行 海康的比较复杂,可以看这篇文章https://zhuanlan.zhihu.com/p/305360217 debug模式的密码需要你联系海康的售后,你把debug打印出来的字符串发给海康售后,然后让他们发密码给你,他们这个密码算法不公开的

answer666 commented 2 months ago

dp ip 或者stream ip

如果打开https 的话,那么 sdp ip 或者stream ip 都配置当前域名,是吗? 我现在大面积掉线,但是在线的可以播放没问题的

我之前开启https把证书配置到流媒体里头就行了,别的都没动的

流媒体头? application.yml 和 config.ini 里配置证书路径的那个吗?

我的流媒体是用docker启动的,容器内部/opt/media/bin 有个default.pem 文件,我把从阿里云申请的证书合并之后重命名为default.pem 并且替换掉容器内部的这个文件,重启流媒体就可以了。别的都不需要改的吧,唯一要注意的就是返回播放地址的地方要不要返回https的。

看流媒体https://github.com/ZLMediaKit/ZLMediaKit/wiki/%E6%80%8E%E4%B9%88%E5%BC%80%E5%90%AFhttps%E7%9B%B8%E5%85%B3%E5%8A%9F%E8%83%BD 这个wiki就行了

感谢回复了,我也是这么设置的,播放OK的,就是好多设备不在线。。。 不知道啥问题, 200多个就30个在线的。

如果有条件的话可以看看离线的摄像头是啥情况,你开启https应该不会影响到你的设备在离线的吧

有排查方向吗? 我现在是结合 zlm 和 wvp 的日志来看的, 还有就是我摄像头的配置都是一致的,有一批不在线的在外地,专用卡是否是网络问题还不好说。。

可以去摄像头上抓包试试,看看摄像头侧抓到的报文是啥情况。

这个抓包 我也看别的朋友说了,具体是怎么抓包的,能给个教程参考下吗, 很懵逼--

具体办法得看摄像头厂家;我记得大华、宇视摄像头自带抓包功能,插入U盘就行 海康的比较复杂,可以看这篇文章https://zhuanlan.zhihu.com/p/305360217 debug模式的密码需要你联系海康的售后,你把debug打印出来的字符串发给海康售后,然后让他们发密码给你,他们这个密码算法不公开的

十分感谢,我研究研究

648540858 commented 2 months ago

收流超时一般有一下几个原因,按照常见程度排序,可以参考着排查下:

  1. wvp和zlm都部署在公网服务,但是media.ip只配置了一个内网的ip,导致发送给设备的收流IP是内网IP,设备发流时就指向了内网IP,导致服务端无法收到流。解决办法: 配置media下的sdp-ip和steam-ip为公网IP。sdp-ip不支持域名,stream-ip支持。
  2. wvp和zlm都部署在公网服务,sdp-ip和steam-ip为公网IP,但是收流的端口段没有在公网的入栈协议中开放,导致服务端无法收到流。解决办法:开放收流端口段,对应的值为media下的port-range,tcp+udp都开。
  3. wvp和zlm都部署在公网服务,sdp-ip和steam-ip为公网IP,收流的端口段在公网的入栈协议也开放,但是服务器的系统里开启防火墙。导致服务端无法收到流。解决办法:关闭防火墙或者在防火墙配置端口段,对应的值为media下的port-range,tcp+udp都开。
  4. wvp部署在内网,zlm部署在公网,导致zlm收到流无法发送hook消息给wvp,导致收流超时,解决办法,zlm和wvp都部署到局域网,如果需要公网观看视频,可以在公网再搭建一套,通过国标级联共享到公网观看。
  5. media.ip使用公网IP也有可能导致,无法调用zlm接口而点播失败,有的局域网服务器不能访问自己的公网IP。解决办法:media.ip使用局域网IP,如果同一台服务器,最好使用127.0.0.1,同时配置sdp-ip和steam-ip。

排除以上的情况后仍然收留超时,考虑一些其他的网络情况:

  1. 设备使用4G网络接入网络,4G网络不稳定,导致点播消息没有下发到设备,大概率出现点播超时。
  2. 设备所在的局域网使用对称NAT,导致点播消息没有下发到设备,大概率出现点播超时。
  3. 流传输模式使用了TCP主动,但是服务端无法连接到设备端,导致收流超市。 其他的情况暂时想不到了。后续想到再更新。
ShenHaiyi commented 1 month ago

收流超时一般有一下几个原因,按照常见程度排序,可以参考着排查下:

  1. wvp和zlm都部署在公网服务,但是media.ip只配置了一个内网的ip,导致发送给设备的收流IP是内网IP,设备发流时就指向了内网IP,导致服务端无法收到流。解决办法: 配置media下的sdp-ip和steam-ip为公网IP。sdp-ip不支持域名,stream-ip支持。
  2. wvp和zlm都部署在公网服务,sdp-ip和steam-ip为公网IP,但是收流的端口段没有在公网的入栈协议中开放,导致服务端无法收到流。解决办法:开放收流端口段,对应的值为media下的port-range,tcp+udp都开。
  3. wvp和zlm都部署在公网服务,sdp-ip和steam-ip为公网IP,收流的端口段在公网的入栈协议也开放,但是服务器的系统里开启防火墙。导致服务端无法收到流。解决办法:关闭防火墙或者在防火墙配置端口段,对应的值为media下的port-range,tcp+udp都开。
  4. wvp部署在内网,zlm部署在公网,导致zlm收到流无法发送hook消息给wvp,导致收流超时,解决办法,zlm和wvp都部署到局域网,如果需要公网观看视频,可以在公网再搭建一套,通过国标级联共享到公网观看。
  5. media.ip使用公网IP也有可能导致,无法调用zlm接口而点播失败,有的局域网服务器不能访问自己的公网IP。解决办法:media.ip使用局域网IP,如果同一台服务器,最好使用127.0.0.1,同时配置sdp-ip和steam-ip。

排除以上的情况后仍然收留超时,考虑一些其他的网络情况:

  1. 设备使用4G网络接入网络,4G网络不稳定,导致点播消息没有下发到设备,大概率出现点播超时。
  2. 设备所在的局域网使用对称NAT,导致点播消息没有下发到设备,大概率出现点播超时。
  3. 流传输模式使用了TCP主动,但是服务端无法连接到设备端,导致收流超市。 其他的情况暂时想不到了。后续想到再更新。

补充一条: media.id 与zlm的 general.mediaServerId 不一致也会出现收流超时的问题