当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

monitor-rtsp-hls

视频监控 RTSP 转 HLS 解决方案
授权协议 MulanPSL-2.0
开发语言 Java
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 宋岳
操作系统 Windows
开源组织
适用人群 未知
 软件概览

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

在被动积累了一些知识后,动手实现了v1.0初级版本,但是部署工作量较大,因为需要手动安装组件、配置、调试。

后来在发布到gitee后,被多位朋友咨询“如何使用”的问题后,决定对该版本再做提升,所以有了现在的v2.0版本,提高了部署效率,直接打包配置设备后就可以运行使用。

使用说明

  • 下载源码,解压根目录中的third.zip压缩包
  • 在项目根目录下执行mvn clean package打包,在target目录下将生成monitor-rtsp-hls-release.zip
  • 解压monitor-rtsp-hls-release.zip
  • 根据需要,修改src/main/resources/config.properties配置项,如:服务端口、服务context_path、服务域名
  • 修改conf/monitor.properties,配置项目需要对接的监控设备RTSP信息
  • 双击运行start.bat即可开启服务
  • 服务提供了一个监控预览页面,在浏览器访问http://127.0.0.1:{服务端口}/{服务context_path}/live即可查看
  • 对外提供监控HLS预览地址,URL格式为http://{IP}:{服务端口}/{服务context_path}/hls/{监控设备代码}/index.m3u8

使用举例

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

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

原理说明

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

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

  • 海康RTSP地址: 老版本: rtsp://username:password@//ch/ 例子: DS-9016HF-ST的IP通道01主码流: rtsp://admin:12345@172.6.22.106:554/h264/ch33/main/av_stream DS-9016HF-ST的模拟通道01子码流: rtsp://admin:12345@172.6.22.106:554/h264/

  • Nginx配置视频服务器 server { listen 28024; server_name localhost; location /hls{ add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Headers X-Requested-With;

 相关资料
  • RTSP视频可以在Android MediaPlayer中播放吗?如果是,怎么做?我得到的服务器死亡错误(100,0)这是我的编码部分包com的错误。实例样本媒体; 这是我的Logcat结果,我得到的结果是07-09 12:17:05.484:E/MediaPlayer(3990):error(1,-2147483648)07-09 12:17:05.484:W/System。err(3990):

  • 我目前正在开发一个需要解码UDP多播RTSP流的应用程序。目前,我可以通过ffplay查看RTP流 但是,我尝试使用FFMPEG通过(为了简洁起见,删除了错误检查和清理代码)打开UDP流。 这种方法适用于包含原始编码视频流的文件输入,但对于UDP多播RTSP流,它无法通过对执行的任何错误检查。请告知...

  • 这是我的m3u8,内置字幕: 我使用加载我的hls视频。我的m3u8文件怎么了?

  • 我正在开发一个应用程序,我使用了谷歌的ExoPlayer,它工作起来很有魅力,现在我想在我的应用程序中添加RTSP支持,但使用ExoPlayer我无法播放,请任何人都可以帮我,如果有人有其他选择,请与我分享。 日志 E/ExoPlayerImplInternal:源错误。网蝴蝶电视。rtmp_客户端。RtmpClient$RtmpIOException at net。蝴蝶电视。rtmp_客户端。R

  • 所以我一直在尝试让HLS通过HTTPS工作。这似乎是一项简单的任务,但我遇到了一个障碍。 我可以通过HTTP获得HLS流,没有任何问题,因为它非常简单。然而,一旦我改变到HTTPS非我的客户似乎可以发挥它。我研究过的大多数帖子都想谈论加密HLS内容,但我真的不在乎。我只想上菜。 我也注意到了这一点。m3u8正在被客户端下载,但我的猜测是块没有下载,这就是流出错的原因。此外,用于调试完成的chrom

  • SRS支持HLS/RTMP两种成熟而且广泛应用的流媒体分发方式。 RTMP指Adobe的RTMP(Realtime Message Protocol),广泛应用于低延时直播,也是编码器和服务器对接的实际标准协议,在PC(Flash)上有最佳观看体验和最佳稳定性。 HLS指Apple的HLS(Http Live Streaming),本身就是Live(直播)的,不过Vod(点播)也能支持。HLS是A