低配置硬件搭建家庭监控系统(rtsp、rtmp、flv)
低配置硬件搭建家庭监控系统
背景需求:
某位同志曾经说过:中国人愿意用隐私换取便利。
如今监控系统还是很成熟的,功能也很多,网上买个摄像头就可以实现网页也好,手机端也好的视频直播和监控录像回放,还有各种各样功能;但是作为一个家庭监控来说,这些功能太智能了,而且连接到的是厂商的大数据服务器中心,应该会用于各种大数据及AI智能训练吧,确实也在做隐私换取便利的事情;
作为家庭视频监控系统,如果需求不是太多,可以考虑搭建一套简化版的监控,将数据私有化。
目前实际测试的应用环境:
网上买的支持h264编码的rtsp协议摄像头
树莓派3b(用来搭建中转端服务器)
某云厂商的99块一年的低配云服务器
采集端:
rtsp协议摄像头
接入到家庭路由器,但是通过路由器设置摄像头不允许连接外网,只用作中转端的视频采集
中转端(rtsp2rtmp):
项目地址:https://github.com/hkmadao/rtsp2rtmp.git
- 采集rtsp摄像头数据,
- 将视频数据转换为flv文件保存到本地磁盘,
- 将rtsp数据流转换为rtmp推送到云端
- 将视频数据以httm flv形式发布,并且可以直接通过网页进行观看(可在内网通过网页查看)
关于rtsp2rtmp
rtsp2rtmp项目实现了连接rtsp协议的设备(摄像头等),采集视频流转换成flv录像文件,httpflv流,rtmp流,可作为监控或者直播项目。
安装说明
注意:
建议下载带"_sqlite3"的版本,无需安装数据库即可快速开始运行了解功能,其他版本需要根据配置文件和初始化sql文件创建数据库,连接数据库开始才能运行。
sqlite3版本使用到了cgo功能,编译比较麻烦,建议在ubuntu中安装mingw-w64进行交叉编译,可参照sqlite3分支下的build.sh查看交叉编译信息程序目前支持h264视频编码、aac音频编码,若不能正常播放,关掉摄像头推送的音频再尝试
- 软件下载地址:https://github.com/hkmadao/rtsp2rtmp/releases
- 解压,找到'./resources/conf/conf-prod.yml'配置文件,修改相关配置
- 根据下载版本,运行 rtsp2rtmp 程序
- 打开:http://[ip:localhost]:[port:8080]/rtsp2rtmp ,如:http://127.0.0.1:8080/rtsp2rtmp , 默认用户名/密码: admin/admin
使用说明:
-
打开摄像头列表页面
-
点击创建按钮,跳转到创建摄像头页面,填写信息,完成摄像头创建
若摄像头的音频格式是G711或者其它,目前是不支持的,需要在摄像头配置中禁用音频
-
查看摄像头列表页面,等待摄像头程序连接摄像头(大约30秒左右)
-
找到摄像头功能列表
4.1. 启用/禁用
管理是否获取rtsp的视频数据流,禁用后,将不再拉取rtsp的视频数据流
4.2. 播放
播放摄像头视频,若是摄像头没有音频,请停止音频,然后再点播放按钮进行播放
4.3. 重置播放码
摄像头播放的httpflv是通过url的编号和权限码控制的,建议定时更换播放权限码
4.4. 开启/停止录像
可根据需求确定是否开启或停止录像,停止后,将不再生成flv录像文件
4.5. 开启/停止直播
开启或停止HttpFlv发布播放视频流,停止后,通过客户端或者web将不能播放摄像头视频
4.6. 开启/停止Rtmp推送
开启或停止向Rtmp服务器推送视频流
4.7. 分享
发现摄像头正在拍摄有趣的事情,赶紧分享给好友吧
摄像头的视频流可以通过HttpFlv进行发布,网页或客户端可以拉取视频流进行播放,但是是需要通过url的信息做编码和密码的匹配的,在分享功能页面可以创建分享的url信息,并且控制是否分享、分享时长等
4.7.1. 分享列表
可在分享列表页面查看、管理分享信息
4.7.2. 创建分享
填写分享信息,保存
Rtmp服务器,需要公网访问(rtmp2flv):
项目地址:https://github.com/hkmadao/rtmp2flv.git
- 接收rtmp协议的视频数据
- 将视频数据转换未flv文件保存(若是云端机器硬盘容量较大)
- 将视频数据以httm flv形式发布,并且可以直接通过网页进行观看
关于rtmp2flv
rtmp2flv项目作为一个rtmp的服务器项目,开发目的是配合 rtsp2rtmp 项目实现采集摄像头等的rtsp流,转换成rtmp推送到 rtmp2flv 项目搭建的rtmp服务器,实现监控项目到公网等,通过配合flvjs在网页视频播放。
安装说明
注意:
建议下载带"_sqlite3"的版本,无需安装数据库即可快速开始运行了解功能,其他版本需要根据配置文件和初始化sql文件创建数据库,连接数据库开始才能运行。
sqlite3版本使用到了cgo功能,编译比较麻烦,建议在ubuntu中安装mingw-w64进行交叉编译,可参照sqlite3分支下的build.sh查看交叉编译信息程序目前支持h264视频编码、aac音频编码,若不能正常播放,关掉摄像头推送的音频再尝试
- 软件下载地址: https://github.com/hkmadao/rtmp2flv/releases
- 解压,找到'./resources/conf/conf-prod.yml'配置文件,修改相关配置
- 根据下载版本,运行 rtmp2flv 程序
- 打开: http://[ip:localhost]:[port:9090]/rtmp2flv ,如: http://127.0.0.1:9090/rtmp2flv , 默认用户名/密码: admin/admin
使用说明:
-
打开摄像头列表页面
-
点击创建按钮,跳转到创建摄像头页面,填写信息,完成摄像头创建
-
使用rtsp2rtmp项目或者obs进行rtmp推流,查看摄像头在线状态
-
找到摄像头功能列表
4.1. 启用/禁用
管理是否使用该摄像头,禁用后,rtmp服务器将不再接收此摄像头的rtmp视频数据流
4.2. 播放
播放摄像头视频,若是摄像头没有音频,请停止音频,然后再点播放按钮进行播放
4.3. 重置播放码
摄像头播放的httpflv是通过url的编号和权限码控制的,建议定时更换播放权限码
4.4. 开启/停止录像
可根据需求确定是否开启或停止录像,停止后,将不再生成flv录像文件
4.5. 开启/停止直播
开启或停止HttpFlv发布播放视频流,停止后,通过客户端或者web将不能播放摄像头视频
4.6. 分享
发现摄像头正在拍摄有趣的事情,赶紧分享给好友吧
摄像头的视频流可以通过HttpFlv进行发布,网页或客户端可以拉取视频流进行播放,但是是需要通过url的信息做编码和密码的匹配的,在分享功能页面可以创建分享的url信息,并且控制是否分享、分享时长等
4.6.1. 分享列表
可在分享列表页面查看、管理分享信息
4.6.2. 创建分享
填写分享信息,保存
后续开发计划:
- 重构应用架构,修改代码为支持代码模板的架构,主要方便后续开发(模板代码生成器项目地址:https://github.com/hkmadao/re_tcdt_rust.git )
- 云端服务器rtmp加密方案查找
- 网页播放通过https
- webrtc协议支持
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?