rstp 转hls_monitor-rtsp-hls

本文介绍了如何通过javacv调用ffmpeg库,将视频监控的RTSP流推送到nginx,再由nginx进行HLS切片,实现基于WEB的监控摄像头实时流预览。文中还提及了多摄像头处理、延迟问题以及H265编码的解决方案,并提供了相关配置和注意事项。
摘要由CSDN通过智能技术生成

monitor-rtsp-hls

介绍

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

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

尝试过nginx+ffmpeg的方案,虽然可行,但是实现单摄像头还行,想不明白如何实现多摄像头预览,尝试过写脚本,同时处理多个摄像头,但结果是服务器卡死。

后来尝试通过代码,动态根据当前要访问的设备,来调用ffmpeg命令处理该设备,最终因效果不好,而且各种无法控制而告终。

最终无意间浏览到一大神写的使用javacv实现通过调用ffmpeg库的实现方法,于是就尝试用此方法推流给nginx,由nginx负责将流切片保存,并配置nginx自动删除旧的切片,以节省硬盘空间。

运行流程

使用说明

参考根目录下的nginx.conf来配置自己的web代理nginx

解压nginx-rtmp-server.zip,这是作为rtmp流服务器用的nginx版本,可自行修改conf/nginx.conf配置

导入monitor-rtsp-hls至eclipse,右键Main.java运行即可,生产环境可打成jar包来运行也可导出为war包部署tomcat运行

打jar包

代码中是集成的Undertow服务器,在项目根目录下执行mvn clean package即可执行打包操作,在target目录下生成项目同名release压缩包,上传服务器解压,修改conf目录中monitor.properties设备配置信息后,即可执行start.bat运行

2020-06-10 补充说明

本项目中的代码是研究参考了很多方案后实现的,和大神的比起来确实是比较糙,但是我的目的只是希望能贡献一个方法,以帮助和我当初有同样困扰的朋友解决问题。

另外说到延迟,我觉得延迟是有,不过就我个人认为,转存后再提供对外访问的实现方式都是存在延迟的,万幸的是好在我们的业务不在乎这个问题。

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

2020-06-24 使用时的建议

我在解决一些朋友咨询的问题时发现,他们将根目录中的nginx配置内容放在了nginx-rtmp的配置中,这本来没什么问题,不影响使用,但是这样配置会将nginx-rtmp中的rtmp代理暴露出来,这个还是有一定风险的(因为你可以推流,别人也是可以推流的,只要网络和端口是通的就行),请大家注意这个问题,我还是建议将nginx-rtmp独立运行在内网,另外新建一个用于web代理的nginx来代理m3u8和ts文件

2020-09-19 增加html播放器示例

偶尔有朋友问我怎么播放的问题,干脆将我用的页面播放器上传上来,方便大家使用,感谢大家的使用

2020-09-25 增加另类的H265编码解决办法

最近公司项目需要,无奈必须要解决采用H265编码的监控设备对接问题,经过一番思考,最终采用了一种有点另类的解决办法,那就是结合ffmpeg的转化功能。详细的代码在新增的monitor-rtsp-hls-h265目录中,简单说下实现思路:

主体流程不变,还是对外提供接口,通过传入监控设备的代码,从配置文件中找到相应设备的RTSP流地址,然后通过java的Process类调用命令行的方式,调用外部ffmpeg来实现视频流的切片处理,详见Task类的run方法和convert方法实现。

当然重点是ffmpeg的命令和参数的使用,配置文件中的配置也改为了ffmpeg的安装路径等项,大家可以仔细研究下ffmpeg命令的参数,配置文件中附的有参考的博客链接。

2020-12-09 修改monitor-rtsp-hls-h265中ffmpeg处理rtsp流花屏的问题

在项目使用中出现了监控花屏的情况,在ffmpeg执行命令中增加-rtsp_transport tcp参数,强制使用TCP方式处理RTSP流就行了

感谢

JFinal作者波总开发这么好用的框架,让我爱不释手

参考网上整理的各主流摄像头的rtsp地址格式

还有网上大神写的基于javacv将rtsp推至nginx rtmp的帖子,现在找不到了

我的微信

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值