内网摄像头对外直播

需求描述

现在内网上有一个摄像头,上位机可以访问到该摄像头(上位机可以通过网线或wifi的形式连接到外网,但无公网ip),需要构建一个服务可以对该摄像头进行画面直播。

解决方案

根据需求,网络架构大致如下:
Cam->PC->Server->Client
其中关键问题就是打通PC->Server的联通

其实列出上面的网络架构,分析后就发现很好实现,本质上就是把内网的服务转到外网进行访问,这样我们直接做对原始的Cam构建的视频流进行内网穿透即可。

而内网穿透的工具很多很多,其中frp是相对成熟的。

那么我们直接搭建配置frp。

搭建frp

环境准备

首先我们需要有一台公网 ip 的服务器作为 frp 服务端,这里我使用自己购买的阿里云服务器

下载frp

这里直接贴出官方的github下载连接,根据自己的机型下载即可
https://github.com/fatedier/frp/releases/

配置frp server

我这里服务器和本机都是windows的,就直接下载解压了
image

然后我们需要把frps.toml 和frps.exe 放到服务器Server上(因为这个是服务端需要的)

bindPort = 7000
auth.token = "JAnbMEZOpdeblZgj" # 客户端连接的token

#dashboard_port = 7002   #dashboard为面板相关配置 
# dashboard 用户名密码,默认都为 admin,如果不需要,需要主动设置为空
#dashboard_user = admin
#dashboard_pwd = admin

配置frp client

这时我们需要把frpc.toml 和frpc.exe 放到本地机器(也就是上面的PC)上的

frpc.toml的配置如下

serverAddr = ""  #服务器ip
serverPort = 7001  #服务器frp端口
auth.method = "token" # 鉴权方式默认就是token  可以不写
auth.token = "JAnbMEZOpdhDdeeblZgj" # 客户端连接的token

[[proxies]]
name = "test-tcp"
type = "tcp"
localIP = "192.168.1.68"
localPort = 554
remotePort = 7002

完成

按照上述配置并启动之后,这时候我们在其他的客户端,就可以通过服务器的7003端口直接访问对应的rtsp服务了,这时也可以在客户端增加配置,配置更多的服务转发,也可以支持多个客户端,只要同时管理好端口关系即可。

经过测试之后,发现速度很喜人,2k的分辨率视频可以做到实时转发,这样也就完成了我们直播的需求~

posted @ 2024-12-20 10:15  idealy233  阅读(128)  评论(0)    收藏  举报