海康威视监控视频,萤石云免费版四路并发访问限制绕过

2025-05-13 05:25:11 | 世界杯的规则

公司新装了不少海康威视摄像头,通过NVR连接到了萤石云,由于萤石云免费版限制了单个摄像头的并发访问数(每个摄像头同时只允许4个用户进行查看实时视频),但是又不想付费购买企业版,于是着手思考如何解决这个问题。

解决方案思考

需求

需求很明确,每个摄像头需要支持多用户同时播放实时视频(并发可能大于四)

方案

1、通过海康提供的SDK,在摄像头挂载的局域网内直接获取视频流推送到自己的服务器进行直播,绕过萤石云。

2、将自有服务器作为唯一访问客户端,拉取视频流再进行分发。

方案一需要比较大的开发量,并且摄像头已经部署好,网络环境未知,还需要在本地准备一台服务端主机用来推流,且由于用户访问视频可能是随时的,需要24h不间断推送,对服务器压力也比较大,方案二更简单,因此选择第二种作为实现。

实现

方案验证

本机使用 wsl2 ubuntu16.04进行测试

1、安装 ffmpeg

sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next

sudo apt-get update

sudo apt-get install ffmpeg

2、源码编译 nginx,并添加 nginx-rtmp 插件

# 安装gcc g++的依赖库

sudo apt-get install build-essential

sudo apt-get install libtool

#安装pcre依赖库

sudo apt-get update

sudo apt-get install libpcre3 libpcre3-dev

#安装zlib依赖库

sudo apt-get install zlib1g-dev

#安装SSL依赖库

sudo apt-get install openssl libssl-dev

#安装nginx,先安装nginx再添加流媒体插件编译

wget http://nginx.org/download/nginx-1.9.8.tar.gz

tar -zxvf nginx-1.9.8.tar.gz

cd nginx-1.9.8

./configure --prefix=/usr/local/nginx

#编译、安装:

make

sudo make install

#下载rtmp流媒体插件

wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

#用unzip解压,如果没有unzip,请安装 sudo apt-get install unzip

unzip master.zip

#解压好插件后再回到nginx源码的解压目录里面,将插件配置进去,注意 nginx-rtmp-module-master的相对路径!!!!

./configure --with-http_ssl_module --add-module=./nginx-rtmp-module-master

#再次编译安装

make

sudo make install

#将nginx注册到服务

sudo wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx

sudo chmod +x /etc/init.d/nginx

sudo update-rc.d nginx defaults

配置 nginx 流媒体服务

编辑配置文件

vim /usr/local/nginx/conf/nginx.conf

加入一段配置,wq保存

#配置到根节点下,不要包含在http中

rtmp {

server {

listen 1935; #流媒体服务端口

chunk_size 4096;

#直播流后缀起始路径 rtmp://x.x.x.x:1935/live/****

application live {

live on;

#record off;

}

}

}

重启nginx即可

2、通过萤石云获取摄像头 RTMP 临时授权链接 3、进行流转播

ffmpeg -i "rtmp://rtmp01open.ys7.com:1935/v3/openlive/J17103688_2_1?expire=1671692735&id=3961899259904&t=82f2e5cfce043534db5165ca1d5f58498781f148fb2c4fb249f&ev=100" -vcodec copy -acodec copy -f flv rtmp://localhost:1935/live/test

-i 参数后面为萤石云流地址

4、使用 VLC 播放工具测试

重复打开多次 VLC ,按此步骤播放视频流即可

可以看到,视频访问并未受并发限制😄

功能完善

1、当前验证了方案的可行性,由于萤石云流链接会失效,所以要配合开放平台的API进行定期更新拉流服务。

2、视频流在自建服务器上的推流地址也不应设置为固定,推流服务的推送路径应当定期更新,例如.. /live/{摄像头编号}/{token} ,token设置时效性防止视频流被恶意扒取。

3、为避免长期占用服务器下行带宽,应当处理每个摄像头在无任何用户查看视频时切断于萤石云的视频流连接,可以在前端通过websocket或者http 轮询 来监测用户视频访问,一定程度上也安全性也提高了。