掌桥专利:专业的专利平台
掌桥专利
首页

一种适用于工业互联网的视频格式转换系统及方法

文献发布时间:2023-06-19 18:29:06


一种适用于工业互联网的视频格式转换系统及方法

技术领域

本发明涉及一种视频格式转换系统及方法,属于视频处理技术领域。

背景技术

在工业互联网的视频应用领域中,经常存在需要前端摄像机直接在浏览器上打开画面的需求,而现有浏览器大多不支持flash插件导致无法打开rtsp格式的视频流,而现有的主流前端网络摄像机大多不能提供直接在浏览器可以播放的视频流格式,但可以提供rtsp格式的视频流。在现有技术发展状况下,在转码路数不多时,使用ffmpeg将rtsp格式的视频流转变为易于在浏览器播放的hls格式的视频流是较优的选择,但使用ffmpeg时仍存在一些问题:

1、当网络波动或者前端网络摄像机重启时,ffmpeg并不会主动拉rtsp视频流,如果不对ffmpeg进程进行监测、重启,ffmpeg就会处于假死状态,导致提供给web端的视频流中断,影响客户端使用。

2、ffmpeg进程受到服务器系统环境影响或者其他因素导致进程异常结束,进而导致转流中止。

3、用户需要操作服务器启动ffmpeg进程,并单独配置nginx,操作比较繁琐,如果ffmpeg有报错也需要人为登录服务器查看报错,影响用户体验,工作效率较为低下。

发明内容

为解决上述问题,本发明提供了一种适用于工业互联网的视频格式转换系统及方法。

本发明的技术方案如下:

一种适用于工业互联网的视频格式转换系统,其特殊之处在于,包括前端的ffmpeg控制台界面和网络摄像头,以及ffmpeg控制系统后台;

所述网络摄像头用以向ffmpeg控制系统提供rtsp视频流;

所述ffmpeg控制台界面用以向ffmpeg控制系统后台提供用户输入的ffmpeg参数。

一种适用于工业互联网的视频格式转换方法,特殊之处在于,包括以下步骤:

S1、系统获取运行所需的数据源

系统获取前端网络摄像机的rtsp视频流以及用户在ffmpeg控制台界面输入的ffmpeg参数,保存在特定的配置文件中,供后面重启进程时重新获取对应参数;

S2、 系统对ffmpeg远程控制

系统启动对应的ffmpeg进程,通过JAVA的runtime和Process 执行ps命令来检测是否生成对应进程的pid,如果生成pid则返回生成成功,继续执行S3-S5;如果没有生成pid则返回参数失败,并将错误日志通过接口的形式返回到ffmpeg控制台界面,然后生成一段nginx配置插入到原有的配置之中,并重载nginx配置;

所述S2的具体执行过程包括:

通过JAVA的runtime和Process 执行linux命令,调用Process的waitFor方法实现在linux环境下远程启动ffmpeg进程;

用变量接收到生成的pid之后,开始执行如下定时任务:每分钟调用查询最新生成文件时间的shell脚本(脚本利用ll -lnt及awk获取特定目录最新的文件生成时间)获取最新的文件生成时间,与服务器时间对比,如果相差时间超过1分钟,则会重新利用waitfor方法启动ffmpeg进程;

S3、系统对ffmpeg进程守护

系统保存生成进程的pid和m3u8索引文件名到配置文件中,通过对pid的是否存在来判断进程是否处于活跃状态,如果pid在系统的进程列表里找不到,则系统重启进程从而来实现对ffmpeg的进程守护;

S4、系统对ffmpeg远程监控

系统利用S2的定时任务对生成的ts切片文件进行监控,如果预定时间内没有新的ts切片生成,则认为视频流异常,或者前端摄像机网络异常或者关机,对ffmpeg进程进行重启,让ffmpeg主动去拉取前端网络摄像机rtsp流进行转流。

S5、系统启动nginx开始转流

系统通过JAVA的runtime和Process 执行systemd命令启动nginx开始对m3u8格式的序列文件进行反向代理,生成hls格式的视频流地址,直接调用hls格式的视频流即可将ffmpeg生成的ts切片文件按照时间的顺序进行播放。

本发明的一种适用于工业互联网的视频格式转换系统及方法,通过对ffmpeg进程进行监测、重启,避免了因网络波动或者前端网络摄像机重启而导致的视频中断问题。实现了ffmpeg进程的远程控制以及ffmpeg参数配置的可视化、检测ffmpeg进程状态、对ffmpeg日志的可视化,以及ffmpeg进程的进程守护等功能。

附图说明

图1为实施例一的视频格式转换流程示意图。

具体实施方式

以下结合附图给出本发明的一个具体实施例,以对本发明的技术原理及方案作进一步详细说明。应当理解的是,实施例中的方案不得解释为对本申请保护范围的限制。

实施例一

应用场景为某工业企业的可视化物联网生产屏显项目,该项目要求实现在生产系统的数据展示网页页面中可以直接浏览摄像头画面的功能,且不能安装插件。现场摄像机的网络环境时有波动,单单利用ffmpeg对摄像机rtsp流进行转换,得到的hls流时断时续,经过videojs处理后在浏览器上播放的效果不好,经常出现打不开画面的情况,但增加本系统,对ffmpeg进行远程配置,监管,控制,大大提升了系统的稳定性,节约了时间和运维成本。

为此,本实施例提出适用于工业互联网的视频格式转换系统,该系统包括配置在生产现场的若干台网络摄像头、ffmpeg控制台界面以及后台的ffmpeg控制系统,所述控制系统通过一种视频格式转换方法,使前端网络摄像机的视频能够在浏览器中流畅播放。

所述视频格式转换方法包括以下步骤:

S1、首先确定前端网络摄像机的rtsp流地址和用户输入ffmpeg参数,系统获取到前端网络摄像机的rtsp视频流和用户在ffmpeg控制台界面输入的ffmpeg参数后,通过接口传递给ffmpeg控制系统后台;

S2、ffmpeg控制系统后台启动对应的ffmpeg进程,检测是否生成对应进程的pid,如果生成pid则返回生成成功,继续执行S3-S5;相反,没有生成pid则返回参数失败,并将错误日志通过接口的形式返回到ffmpeg控制台界面,然后生成一段nginx配置插入到原有的配置之中,并重载nginx配置;

上述具体执行过程包括:

通过JAVA的runtime和Process 执行linux命令,调用Process的waitFor方法实现在linux环境下远程启动ffmpeg进程;

用变量接收到生成的pid之后,开始执行如下定时任务:每分钟调用查询最新生成文件时间的shell脚本(脚本利用ll -lnt及awk获取特定目录最新的文件生成时间)获取最新的文件生成时间,与服务器时间对比,如果相差时间超过1分钟,则会重新利用waitfor方法启动ffmpeg进程;

S3、ffmpeg控制系统后台保存生成进程的pid和m3u8索引文件名到配置文件中,通过对pid的是否存在来判断进程是否处于活跃状态,如果pid在系统的进程列表里找不到,则系统重启进程从而来实现对ffmpeg的进程守护;

S4、系统对生成的ts切片文件进行监控,如果短时间内没有新的ts切片生成,则认为视频流异常,或者前端摄像机网络异常或者关机,对ffmpeg进程进行重启,让ffmpeg主动去拉取前端网络摄像机rtsp流进行转流,如果此时前端摄像机网络恢复,就可以实现中断画面的及时重连,并且重启ffmpeg进程后ffmpeg控制系统后台会根据系统时间删除当前时间之前产生的ts切片文件,减少ts切片视频占用磁盘空间的大小;

S5、启动nginx开始对m3u8格式的序列文件进行反向代理,生成可以兼容大部分浏览器的hls格式的视频流地址,直接调用hls格式的视频流就可以将ffmpeg生成的ts切片文件按照时间的顺序进行播放,每一个ffmpeg进程都将提供一个对应的对应的hls格式的地址,供开发者或者客户端调用。

前端开发者通过video,js将hls链接放入网页中实现浏览器打开网页后可以实现播放网络摄像机实时画面的功能,且不会受到摄像机重启或者网络波动或其他因素影响。

对比现有技术方案,本发明系统及方法具有以下3个方面的技术优势:

1、对ffmpeg的进程加以监控和守护,在网络和其他不确定因素的影响下,提供更稳定的视频流;

2、提供可以供用户输入配置的web界面,用户无需登录服务器即可进行视频流格式的转换,实现对服务器的远程操作;

3、可以直接在web浏览相关的报错内容。

相关技术
  • 一种适用于帧率上变换的分布式视频转码方法
  • 一种适用于HEVC视频编码的帧级量化参数计算方法
  • 一种适用于音视频时间格式转换的计算方法
  • 一种视频格式转换方法、系统及装置
技术分类

06120115585475