mediamtx跨网段访问摄像头

0 阅读2分钟

背景:father-WIFI-A(10.4.85.x)是 AP+AC的局域网(后面简称:网A)

      child-tplink-B(192.168.10.x)是网卡直连网A后的机器人发出的WIFI(网B),由于机器人内部硬件限制此10网段不可修改;

已实现:连网B,192.168.10.x摄像头画面正常

需求:连网A如何访问摄像头?

一、MediaMTX 下载与配置

1.1. 下载地址:github.com/bluenviron/…

1.2. 下载 Windows amd64 版本(根据自身的系统下载对应版本)

image.png 1.3. 解压至 D:\xx\mediamtx

image.png 打开mediamtx.yml 在paths中修改rtsp地址

paths:
  hikcam:
    source: rtsp://admin:xxxxx@192.168.10.x:554/Streaming/Channels/101
    sourceProtocol: tcp

    # 关键:自动重连
    sourceOnDemand: no
    sourceOnDemandStartTimeout: 10s
    sourceOnDemandCloseAfter: 30s

    # 如果摄像头断开,自动重连
    sourceRedirect: ""
  # example:
  # my_camera:
  #   source: rtsp://my_camera

  # Settings under path "all_others" are applied to all paths that
  # do not match another entry.
  all_others:

把 MediaMTX 注册为 Windows 服务

Win+R==>cmd执行 sc create MediaMTX binPath= "D:\robot\mediamtx\mediamtx.exe D:\robot\mediamtx\mediamtx.yml" start= auto

手动启动MediaMTX

Win+R==>cmd执行 mediamtx.exe mediamtx.yml

根据以上配置后,可在浏览器直接跨网段webrtc访问 http://10.4.85.x:8889/hikcam; 1932011cec06a7ae50f2e1bf0f9afb29.png 以上可以拼接rtsp地址(rtsp:10.4.85.x:8889/hikcam)在web端使用video标签直接播放。如果遇到需要跨网段登录摄像头后台设置相关参数就需要用到下面的端口转发。

二,windows端口转发 Windows 端口转发

netsh interface portproxy add v4tov4 listenport=8087 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.192.x

查看端口转发是否成功

netsh interface portproxy show all

image.png 必须开启 Windows 服务  端口转发依赖 IP Helper 服务

sc query iphlpsvc

image.png 如果没启动(没看到上面的STATE)就执行 设置 开机自动启动

sc config iphlpsvc start= auto

启动 IP Helper 服务

net start iphlpsvc

如果觉得上面的步骤琐碎,也可以批量处理(注意修改IP和端口) 新建portproxy_fix.bat

@echo off
echo ===============================
echo PortProxy Auto Repair Script
echo ===============================

timeout /t 65 >nul

REM 1. 启动 IP Helper 服务
sc config iphlpsvc start= auto >nul
net start iphlpsvc >nul

REM 2. 删除旧规则
netsh interface portproxy delete v4tov4 listenport=8087 listenaddress=0.0.0.0 >nul

REM 3. 重新添加规则
netsh interface portproxy add v4tov4 listenport=8087 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.10.x

REM 4. 防火墙放行
netsh advfirewall firewall add rule name="cam8087" dir=in action=allow protocol=TCP localport=8087 >nul

echo Done.
timeout /t 3

image.png