一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于Flume的rtsp摄像头视频流接入方法与流程

2023-02-04 11:50:32 来源:中国专利 TAG:

一种基于flume的rtsp摄像头视频流接入方法
技术领域
1.本发明涉及摄像头视频流接入领域,尤其涉及一种基于flume的rtsp摄像头视频流接入方法。


背景技术:

2.近几年来人工智能,大数据技术飞速发展,但在现有的行业背景下,大数据技术处理的数据主要是各种数据表的数据,对视频流的分析处理在大数据领域还比较少。现在监控摄像头已经遍及城市与乡村的各个角落,对这些监控的摄像头使用人工的方式获取有用的信息,会带来很大的人工成本,并且效率低下。
3.目前市面上没有一款专门的中间件可以达到对视频流抽帧的目的,基于现有的情况,调研了flume中间件在抽取数据方面的性能和稳定性,apacheflume是一个分布式的、可靠的、可用的系统,用于有效地收集、聚合和将大量日志数据从许多不同的源移动到一个集中的数据存储。apacheflume的使用不仅仅局限于日志数据聚合。由于数据源是可定制的,flume可以用于传输大量事件数据,包括但不限于网络流量数据、社交媒体生成的数据、电子邮件消息和几乎所有可能的数据源。flume架构是在数据生成器运行的节点上启动单独的flumeagent来收集数据。每个agent是一个独立的java进程,从客户端(其他agent)接收数据,然后转发到下一个destination。
4.agent包含三个组件:
5.(1)source(源),从事件生成器接收数据,以event事件的形式传给一个或多个channel;
6.(2)channel(通道),从source中接受flumeevent,作为临时存放地,缓存到buffer中,直到sink将其消费掉,是source和sink之间的桥梁。channel是事务的,可以和多个source或sink协同;
7.(3)sink(沉槽),存放数据到hdfs,从channel中消费event,并分发给destination。
8.且flume具有可扩展的特点,可以对其进行二次开发。


技术实现要素:

9.有鉴于此,本发明一种基于flume的rtsp摄像头视频流接入方法,在flume系统的基础上,自定义flumesource来达到快速、有效、可靠地抽取视频帧,包括以下步骤:
10.s1、创建一个公共类,命名为:rtspsourceconstants,该类的功能用于定义一些静态变量,所述静态变量的值为flume系统启动时要读取的配置文件变量的值;
11.s2、定义一个rtsp摄像头的数据源source的抽象类继承,命名为:abstractsource,并将s1中读取到的所述静态变量进行配置,基于flume自定义source;
12.s3、代码完成后,打包编译,jar包放入flume的指定目录;
13.s4、将rtsp摄像头接入flume系统的自定义source,实现大数据分析处理的接入并
进行抽帧。
14.进一步地,s1:创建一个公共类,命名为:rtspsourceconstants,该类的功能用于定义一些静态变量,所述静态变量的值为flume系统启动时要读取的配置文件变量的值,其中配置文件包含视频源信息和flume事件头两部分,视频源信息包括摄像机访问路径、摄像机编号、摄像机访问协议;flume事件头包括kafka主题、事件戳、分区编号、偏移量。
15.进一步地,s2:定义一个rtsp摄像头的数据源source的抽象类继承,命名为:abstractsource,并将s1中读取到的所述静态变量进行配置,基于flume自定义source,具体为:
16.s21、重写configure()方法,将s1中读取到的静态变量进行配置的参数传入到这个类中,给类中的成员变量赋初值,后续执行过程按照配置执行;
17.s22、重写start()方法,将rtsp摄像头的视频流接入,设置rtsp摄像头的连接属性和视频源路径,根据设置属性创建ffmpeg对象和视频帧转换器对象;所述ffmpeg对象和所述视频帧转换器对象创建成功后开启视频流捕获线程,不间断的抽帧;
18.s23、重写stop()方法,实现对rtsp视频流抽帧线程的停止,释放视频流抽帧过程中的资源对象;
19.s24、重写process()方法,根据s1中的参数判断抽帧是否失败,判定为视频后从其抽帧线程;判断为成功后抽取视频中的关键帧,将抽取成功的关键帧通过转换器对象转换为bufferimage对象;设置flume事件头和获取bufferimage对象中的视频数据封装中flume时间对象,发送到flume系统的channel。
20.本发明提供的技术方案带来的有益效果是:使用flume接入rtsp视频流,通过自定义flumesource实现快速、有效、可靠地抽取视频帧,达到对大量数据处理的高并发需求。
附图说明
21.图1是本发明一种基于flume的rtsp摄像头视频流接入方法设计架构图;
22.图2是flume设计架构图。
具体实施方式
23.为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地描述。
24.请参考图1和图2,图1是本发明一种基于flume的rtsp摄像头视频流接入方法设计架构图;图2是flume设计架构图。
25.本发明提供了一种基于flume的rtsp摄像头视频流接入方法,具体包括以下步骤:
26.s1、创建一个公共类,命名为:rtspsourceconstants,该类的功能用于定义一些静态变量,该静态变量的值为flume系统启动时要读取的配置文件变量的值;配置文件包含视频源信息和flume事件头两部分。视频源信息包括摄像机访问路径、摄像机编号、摄像机访问协议等;flume事件头包括kafka主题、事件戳、分区编号、偏移量等。
27.s2、定义一个rtsp摄像头的数据源source的抽象类继承,命名为:abstractsource,该类中,获取数据机制采用pollablesource接口,用javacv重写源代码,并将s1中读取到的静态变量进行配置,基于flume自定义source;
28.具体步骤如下:
29.s21、重写configure()方法,将s1中读取到的静态变量进行配置的参数传入到这个类中,给类中的成员变量赋初值,后续执行过程按照配置执行;
30.s22、重写start()方法,设置rtsp摄像头的连接属性和视频源路径,根据设置属性创建ffmpeg对象和视频帧转换器对象。上述两个核心对象创建成功后开启视频流捕获线程,不间断地抽帧;
31.s23、重写stop()方法,实现对rtsp视频流抽帧线程的停止,释放视频流抽帧过程中的资源对象;
32.s24、重写process()方法,根据s1中的参数判断抽帧是否失败,判定为视频后从其抽帧线程。判断为成功后抽取视频中的关键帧,将抽取成功的关键帧通过转换器对象转换为bufferimage对象。设置flume事件头和获取bufferimage对象中的视频数据封装中flume时间对象,发送到flume系统的channel。
33.s3、代码完成后,打包编译,jar包放入flume的指定目录。
34.s4、将rtsp摄像头接入flume系统的自定义source,实现大数据分析处理的接入并进行抽帧。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献