首页> 中国专利> 一种基于FFMPEG的门禁系统及处理方法

一种基于FFMPEG的门禁系统及处理方法

摘要

本发明公开了一种基于FFMPEG的门禁系统,属于门禁系统领域,包括设备端、服务端和播放器,设备端包括用来驱动鼠标的虚拟鼠标驱动器和用于录制屏幕桌面的录屏服务,服务端包括流媒体服务器和设备控制服务器,录屏服务连接流媒体服务器和播放器,虚拟鼠标驱动器连接设备控制服务器和播放器,播放器用于播放屏幕流。本发明的一种基于FFMPEG的门禁系统,在操作时,先将屏幕流推送到客户端,再利用播放器去播放屏幕流,就能远程检测门禁系统的运行问题,给维护人员带来了方便,减少了维护成本、提高了维护效率。本发明还公开了一种基于FFMPEG的门禁处理方法,主要步骤包括:获取屏幕数据,格式转换,推流,拉流和播放。

著录项

  • 公开/公告号CN113870470A

    专利类型发明专利

  • 公开/公告日2021-12-31

    原文格式PDF

  • 申请/专利权人 深圳柏成科技有限公司;

    申请/专利号CN202111054091.3

  • 发明设计人 林振南;

    申请日2021-09-08

  • 分类号G07C9/22(20200101);H04N7/14(20060101);H04N7/18(20060101);G06F3/038(20130101);

  • 代理机构44814 深圳市江凌专利代理事务所(普通合伙);

  • 代理人左涛

  • 地址 518000 广东省深圳市罗湖区清水河街道清水河社区清水河一路112号深业进元大厦塔楼2座1705、1706

  • 入库时间 2023-06-19 13:29:16

说明书

技术领域

本发明涉及门禁系统技术领域,特别涉及一种基于FFMPEG的门禁系统及处理方法。

背景技术

门禁系统是基于android主板写的APP软件。开门的原理是:客户刷卡或者二维码,APP收到卡号或者二维码后传送到云服务器进行逻辑处理,如果需要开门,那么APP就通过GPIO口写入中断信号实现开门。

现有的门禁设备一般都是跟随电线埋入墙壁中,而且无法外接显示屏。因此,系统一旦出问题,无法知道APP或者系统的运行情况。给运维人员带来了不少的烦恼。

传统的解决办法有:

1)凿墙拿出设备接上显示器进行调试:这种方法成本高,操作不便;

2)在设备写日志,然后上传到服务器,开发人员拿到日志后进行分析,这种方法效率低,因为日志不是实时上传的,且只能看到APP的日志。

因此,我们需要一种方案,既能远程看到设备的屏幕,又能远程操作设备。就好比在直机操作一样。

发明内容

本发明的主要目的是提出一种基于FFMPEG的门禁系统及处理方法,旨在解决现有门禁系统维护不便,成本高和效率低的技术问题。

为实现上述目的,本发明提出一种基于FFMPEG的门禁开门系统,包括设备端、服务端和播放器,所述设备端包括用来驱动鼠标的虚拟鼠标驱动器和用于录制屏幕桌面的录屏服务,所述服务端包括流媒体服务器和设备控制服务器,所述录屏服务连接流媒体服务器和播放器,所述虚拟鼠标驱动器连接设备控制服务器和播放器,所述播放器用于播放屏幕流。

优选地,所述录屏服务用于录制屏幕桌面并编码成h264格式,并向所述流媒体服务器进行推流,所述播放器从所述流媒体服务器拉流并进行播放。

优选地,所述播放器能捕获鼠标状态,并上报到设备控制服务器,所述设备控制服务器将鼠标状态下发到虚拟鼠标驱动器,由鼠标驱动进行执行相应的操作。

优选地,所述设备控制服务器用于接收转发鼠标事件,所述播放器为基于SDL2编写的流播放器,用于投屏和捕获鼠标事件。

优选地,所述设备端上需要植入虚拟鼠标驱动器,用来驱动鼠标,植入后,将在系统字符设备中添加一个鼠标字符设备,主设备号为INPUT_MAJOR。

优选地,所述播放器通过捕获鼠标事件,监听鼠标的拖或拉或按等操作,将鼠标事件产生的事件类型、坐标信息通过socket的方式即时上报到设备控制服务器,所述设备控制服务器将鼠标事件转发到设备上去,转交给虚拟鼠标驱动去实现鼠标的相关操作。

本发明还提出了一种基于FFMPEG的门禁处理方法,处理步骤为:

S1:获取当前屏幕数据,通过MediaProjectionManage申请录屏权限,用户允许后开始使用录屏服务录制屏幕;然后通过ImageReader.OnImageAvailableListener对视频数据进行处理;

S2:格式转换,由于获取到的屏幕数据是YUV_420_888格式,需要转换成YUV420P格式;

S3:推流,将YUV420P格式的数据转换成AVFrame格式的数据包,通过编码器编码成AVPacket帧数据,调用av_interleaved_write_frame将数据包推送到流媒体服务器;

S4:拉流和播放,通过FFMPEG从流媒体服务器中拉取一帧一帧的数据,并解封装为YUV420p格式的数据,通过SDL2库显示在流播放器上。

优选地,步骤S3在Native层实现,推流前先设置好编码器为H264编码器。

本发明技术方案的有益效果在于:

本发明的一种基于FFMPEG的门禁系统,主要包括设备端、服务端和播放器,其中,设备端包括虚拟鼠标驱动器和录屏服务,服务端包括流媒体服务器和设备控制服务器,流媒体服务器可以为RTMP服务器或SRS服务器,播放器主要用于播放屏幕流;服务端连接设备端和流播放器,在使用时,三者处于TCP的长连接状态。本发明的门禁系统在操作时,先将屏幕流推送到客户端,再利用播放器去播放屏幕流,就能远程检测门禁系统的运行问题,给维护人员带来了方便,减少了维护成本、提高了维护效率。

附图说明

图1为本发明一种基于FFMPEG的门禁开门系统一实施例的结构框图;

图2为本发明一种基于FFMPEG的门禁开门处理方法的步骤框图。

图中:1-设备端、11-虚拟鼠标驱动器、12-录屏服务、2-服务端、21-流媒体服务器、22-设备控制服务器、3-播放器。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的方案进行清楚完整的描述,显然,所描述的实施例仅是本发明中的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提出一种基于FFMPEG的门禁开门系统,参照图1,包括设备端1、服务端2和播放器3,设备端1包括用来驱动鼠标的虚拟鼠标驱动器11和用于录制屏幕桌面的录屏服务12,服务端2包括流媒体服务器21和设备控制服务器22,录屏服务12连接流媒体服务器21和播放器3,虚拟鼠标驱动器11连接设备控制服务器21和播放器3,播放器3用于播放屏幕流。

本发明的一种基于FFMPEG的门禁开门系统,主要包括设备端1、服务端2和播放器3,其中,设备端1包括虚拟鼠标驱动器11和录屏服务12,服务端2包括流媒体服务器21和设备控制服务器22,流媒体服务器21可以为RTMP服务器或SRS服务器,播放器3主要用于播放屏幕流;服务端2连接设备端1和流播放器3,在使用时,三者处于TCP的长连接状态。本发明的门禁系统在操作时,先将屏幕流推送到客户端,再利用播放器去播放屏幕流,就能远程检测门禁系统的运行问题,给维护人员带来了方便,减少了维护成本、提高了维护效率。

在一个较佳实施方式中,参照图1,录屏服务12用于录制屏幕桌面并编码成h264格式,并向流媒体服务器21进行推流,播放器3从流媒体服务器21拉流并进行播放。

在一个较佳实施方式中,参照图1,播放器3能捕获鼠标状态,并上报到设备控制服务器22,设备控制服务器22将鼠标状态下发到虚拟鼠标驱动器11,由鼠标驱动进行执行相应的操作。

在一个较佳实施方式中,参照图1,设备控制服务器22用于接收转发鼠标事件,播放器3为基于SDL2编写的流播放器,用于投屏和捕获鼠标事件。

在一个较佳实施方式中,参照图1,设备端1上需要植入虚拟鼠标驱动器11,用来驱动鼠标,植入后,将在系统字符设备中添加一个鼠标字符设备,主设备号为INPUT_MAJOR。

在一个较佳实施方式中,参照图1,播放器3通过捕获鼠标事件,监听鼠标的拖或拉或按等操作,将鼠标事件产生的事件类型、坐标信息通过socket的方式即时上报到设备控制服务器22,设备控制服务器22将鼠标事件转发到设备上去,转交给虚拟鼠标驱动去实现鼠标的相关操作。

本发明还提出了一种基于FFMPEG的门禁处理方法,参照图2,处理步骤为:

S1:获取当前屏幕数据,通过MediaProjectionManage申请录屏权限,用户允许后开始使用录屏服务12录制屏幕;然后通过ImageReader.OnImageAvailableListener对视频数据进行处理;

S2:格式转换,由于获取到的屏幕数据是YUV_420_888格式,需要转换成YUV420P格式;

S3:推流,将YUV420P格式的数据转换成AVFrame格式的数据包,通过编码器编码成AVPacket帧数据,同时设置pts、dts、duration参数,调用av_interleaved_write_frame将数据包推送到流媒体服务器;

S4:拉流和播放,通过FFMPEG从流媒体服务器中拉取一帧一帧的数据,并解封装为YUV420p格式的数据,通过SDL2库显示在播放器3的屏幕上。为了方便操作,播放器3的分辨率和设备端1上的分辨率保持一致。

更进一步地,步骤S3在Native层实现,推流前先设置好编码器为H264编码器。

本发明的一种基于FFMPEG的门禁处理方法,首先需要获取屏幕数据,具体获取方式为,Context.getSystemService(MEDIA_PROJECTION_SERVICE)获取一个MediaProjectionManager的实例,然后MediaProjectionManager.createScreenCaptureIntent()弹出dialog询问用户是否授权应用捕捉屏幕,在onActivityResult()获取授权结果,如果授权成功,通过MediaProjectionManager.getMediaProjection获取一个MediaProjection实例。通过MediaProjectionManager.getMediaProjection获取一个MediaProjection实例,通过MediaProjection.createVirtualDisplay(Stringname,intidth,intheight,intdpi,intflags,Surface,VirtualDisplay.Callbackcallback,Handlerhandler)来创建一个虚拟屏幕的实例,surface参数传入ImageReader.GetSurface()的实例,ImageReader需要注入OnImageAvailableListener接口,通过OnImageAvailableListener.onImageAvailable方法获取屏幕数据。

以上所述的仅为本发明的部分或优选实施例,无论是文字还是附图都不能因此限制本发明保护的范围,凡是在与本发明一个整体的构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明保护的范围内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号