视频接入例子,部署到192.168.1.18

shilin 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
.idea 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
logs 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
src 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
target 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
third 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
LICENSE 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
Readme.md 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
db.sql 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
monitor-rtsp-hls.iml 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
package.xml 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
pom.xml 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
start.bat 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
stop.bat 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás
third.zip 9a5cd2df1d ‘视频接入项目提交’ 3 anos atrás

Readme.md

monitor-rtsp-hls

介绍

视频监控RTSP转RTMP转HLS解决方案

由于公司业务,需要实现基于WEB访问监控摄像头实时流的预览,经过各种百度,补充了不少相关知识,了解到了很多大神的实现方法,也因为很多过时的帖子,而踩了不少的坑。

使用说明

  1. 下载源码,解压根目录中的third.zip压缩包(因为要用到nginx和ffmpeg,直接上传又超过了上传限制,所以就压缩起来),解压后项目结构如图: 输入图片说明
  2. 在项目根目录下执行mvn clean package打包,在target目录下将生成monitor-rtsp-hls-release.zip
  3. 解压monitor-rtsp-hls-release.zip
  4. 根据需要,修改src/main/resources/config.properties配置项,如:服务端口、服务context_path、服务域名
  5. 修改conf/monitor.properties,录入项目需要对接的监控设备RTSP或RTMP地址信息,其中监控设备代码随意命名,只是一个标识,不重复即可
  6. 双击运行start.bat即可开启服务
  7. 本服务提供了一个监控预览页面,在浏览器访问http://192.168.10.10:{服务端口}/{服务context_path}/live即可查看
  8. 对外提供监控HLS预览地址,URL格式为http://{IP}:{服务端口}/{服务context_path}/hls/{监控设备代码}/index.m3u8

使用举例

例如现在我要接入一台监控设备,那么接入步骤就是:

  1. 下载源码,解压根目录下的third.zip
  2. 编译源码,在target目录下得到monitor-rtsp-hls-release.zip,解压该zip,得到monitor-rtsp-hls文件夹
  3. 修改conf/monitor.properties设备配置文件,添加相应设备配置信息,如图: 输入图片说明
  4. 如果有需要修改服务端口信息,则编辑conf/config.properties中的server.port、server.context_path、server.domain等参数,没有需要不修改即可
  5. 到此配置就完成了,双击根目录start.bat运行,接下来就可以打开http://192.168.10.10:{服务端口}/{服务context_path}/live地址查看配置的设备

原理说明

本程序其实逻辑很简单,就是将nginx和ffmpeg整合起来,一方面将rtsp通过ffmpeg转码生成切片,一方面通过nginx将切片代理出去(大神勿喷,我只是一个搬运工)。 既然是整合,我就在程序中会去控制启动或关闭nginx和ffmpeg,这方面处理的不够好,因为是通过命令窗口启动的服务,所以不可避免的用户可能随手就关掉窗口了,但是其实后台nginx.exe和ffmpeg.exe进程还在运行,所以想了个办法就是增加了一个stop.bat脚本,需要用户手动运行,该脚本的功能就是关闭这两个进程的。 有更好办法的大神,请不吝赐教!

奉上整理的几个厂家(主要是海康、大华和宇视)RTSP地址格式

分享链接

更新记录

20210101 增加RTMP流支持

其实也没啥大的调整,正好ffmpeg也支持rtmp,所以只是增加了一个判断处理而已

20210618 增加数据库存储监控设备信息的方式

应一些使用者要求,本次增加了数据库存储监控设备的方式,建表语句db.sql文件在根目录,大家可参考,实现类是com.rancedxk.monitor.device.provider.impl.DbProvider,当然这个实现类仅供参考,大家可自行修改源码并按自己的业务来实现,config.properties中也增加了相应的配置信息供大家参考。 当然大家也可以实现自己的存储方式,比如基于redis或者其他

20210618 增加设备信息查询接口

新增加了一个简单的接口,用来查询当前所有监控设备信息(其实就是从monitor.properties中获取或从数据库中获取的),接口地址:http://{IP}:{服务端口}/{服务context_path}/api/getAllDevices,返回格式:[{code:"dev1",title:"胡南卫视RTMP流",streamUrl:"rtmp://58.200.131.2:1935/livetv/hunantv"}]

感谢

  1. JFinal作者波总开发这么好用的框架,让我爱不释手
  2. 参考网上整理的各主流摄像头的rtsp地址格式
  3. 还有网上大神写的基于javacv将rtsp推至nginx rtmp的帖子,现在找不到了

Giteye chart

联系方式

输入图片说明

请我吃碗螺丝粉吧

输入图片说明