一种家庭安防监控系统的制作方法

文档序号:14267495阅读:301来源:国知局

技术领域:

本发明涉及一种家庭安防监控系统。



背景技术:

视频监控作为一个高效的监控技术,受到了各行各业的关注。传统的视频监控大多只有存储功能,且大部分的存储信息都是无用的冗余信息。在家庭中也得到了越来越多的应用,安全大于天,传统的家庭安全保护措施缺少实时监控,实时处理,而视频信息具有实时性,直观性等特点,目前基于网络摄像机的网络视频监控系统正兴起。随着智能手机的不断完善发展,更多的人想要把自己的需求集成在手机上,以提高工作效率以及生活质量,但是现有的传输方式流畅度很难得到有效控制。现有技术对此并没有解决之策。



技术实现要素:

本发明的目的就是针对现有技术存在的上述缺点,提供了一种家庭安防监控系统,可实现视频的清晰输出,能有效提高图像的流畅度,解决了现有技术中存在的问题。

本发明为解决上述技术问题所采用的技术方案是:

一种家庭安防监控系统,包括接收模块、编码模块、解码模块和帧处理输出模块;

所述接收模块用于接收原始监控信息;

所述编码模块用于将原始监控信息进行解析拆包处理,转化为标准数据;

所述解码模块用于将接收到的标准数据进行解码,得到图像数据;

所述帧处理输出模块用于接收图像数据,将接收到的图像数据在帧率控制下将图像数据外传。

优选的,所述原始监控信息由摄像头采集提供。

优选的,所述图像数据外传给移动终端。

优选的,所述移动终端包括android终端和ios终端。

优选的,所述标准格式为h.264编码格式数据。

优选的,所述接收模块利用tcpsocket类初始化输入输出流,并为建立基udp的socket链接提供信息。

优选的,所述编码模块利用ffmpeg实现h.264编码,所述解码模块利用ffmpeg实现h.264解码。

优选的,所述h.264编码包括vcl层编码和nal层编码;所述h.264解码包括nal包解码,vcl层解码。

优选的,所述ffmpeg解码器输出的图像格式为yuv,通过函数sws_scale()将yuv图像格式转换成rgb格式,再通过函数cgimagecreat()将rgb格式图像转换成uiimage图像。

优选的,所述帧处理输出模块将图像数据传输模式强制转换成tcp传输,tcp-socket利用tcp传输模式来向视频解码类video-frameextractor传输视频流数;type-change类提供数据类型相互转换接口;videoframeextractor类用于视频流数据解码、抽取、转换以及录像及云台控制实现并利用ffmpeg将视频数据流抽取成帧图片外传。

与现有技术相比,本发明的优点是:基本满足了用户实时查看监控视频的要求,可根据无线网络自身的特性,进行更加有效的视频编码、帧率控制以及丢包处理,从而优化降低视频的延时性以及提高图像的清晰度,提升用户体验;监控方便,终端可采用手机无线监控,不局限于预先安装好监控客户端的某台电脑,只要手机支持客户端安装,就可以使用手机监控,客户可随时随地打开手机进行监控;接入方便,前端编码器或网络摄像机,甚至手机,采取无线接入的方式,只需要在移动网络覆盖下,其不受山川、河流、桥梁道路等复杂地形限制,能很方便很简易地搭建起监控点,免除复杂地形导致布线繁琐的烦恼;效率高效,由于考虑无线监控,组网极其方便,大大缩短了建设周期,从而提高了建设效率;成本低廉,免除了远距离网络布线所造成的高昂费用;业务多样,无线监控可以涵盖所有固网监控业务,还可以发扬移动方面的特长,业务一下子丰富多彩起来,如:移动执法监控、移动采访等业务;可根据无线网络自身的特性,进行更加有效的视频编码、帧率控制以及丢包处理优化来降低视频的延时性以及提高图像的清晰度;可应用于多种不同的场景,除了家庭居室意外,还可以用在仓库、小型超市、个体商店等场所,实现不同监测区域的灵活布控;长远来看,该系统的设计适应了智能家居行业的发展方向,迎合未来智能家居的发展趋势;利国利民,改善居民生活质量。

附图说明:

图1为本发明的流程示意图。

具体实施方式:

为能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。

如图1所示,一种家庭安防监控系统,包括接收模块、编码模块、解码模块和帧处理输出模块;

所述接收模块用于接收原始监控信息;

所述编码模块用于将原始监控信息进行解析拆包处理,转化为标准数据;

所述解码模块用于将接收到的标准数据进行解码,得到图像数据;

所述帧处理输出模块用于接收图像数据,将接收到的图像数据在帧率控制下将图像数据外传。

帧率控制采用如下方法实现:如果遇到播放不流畅、拖影等问题,有时候会出现一卡一卡的现象,通过动态调节帧率,使视频播放在一个相对稳定的状态。具体则需要设定三个阀值:最大帧数的阀值max_frame_count(30);最小帧数的阀值min_frame_count(15);帧率改变之后等待下一次改变的值wait_frame_count(15);当实际解码的帧数大于最大帧数的阀值(max_frame_count),则加大帧率的值,加大之后,需要等待若干帧数(wait_frame_count),再进行下一次判断。当实际解码的帧数小于最小帧数的阀值(min_frame_count),则减少帧率的值,减少之后,需要等待若干帧数(wait_frame_count),再进行下一次判断,帧率的改变最好每次控制在8%左右,这样人的肉眼相对难以察觉到帧率的变化,为用户提供相对舒适的播放效果。

所述原始监控信息由摄像头采集提供。

所述图像数据外传给移动终端。

所述移动终端包括android终端和ios终端。

所述标准格式为h.264编码格式数据。

所述接收模块利用tcpsocket类初始化输入输出流,并为建立基udp的socket链接提供信息。

所述编码模块利用ffmpeg实现h.264编码,所述解码模块利用ffmpeg实现h.264解码。

所述h.264编码包括vcl层编码和nal层编码;所述h.264解码包括nal包解码,vcl层解码。

所述ffmpeg解码器输出的图像格式为yuv,通过函数sws_scale()将yuv图像格式转换成rgb格式,再通过函数cgimagecreat()将rgb格式图像转换成uiimage图像。

所述帧处理输出模块将图像数据传输模式强制转换成tcp传输,tcp-socket利用tcp传输模式来向视频解码类video-frameextractor传输视频流数;type-change类提供数据类型相互转换接口;videoframeextractor类用于视频流数据解码、抽取、转换以及录像及云台控制实现并利用ffmpeg将视频数据流抽取成帧图片外传。

tcpsocket类初始化输入输出流,并为建立基udp的socket链接提供相关信息;syncudp-socket类是udp/ipsocket网络库,包装自cfsocket,用于udp视频流数据的传输,rtsp视频流数据默认采用udp协议进行传输或者组播,会导致在私有网络下视频流数据不能正常传输的问题,需要把视频流的传输模式强制转换成tcp传输来保证视频数据流的传输,tcp-socket利用tcp传输模式来向视频解码类video-frameextractor传输视频流数;type-change类提供数据类型相互转换的一些接口;videoframeextractor类用于视频流数据解码、抽取、转换以及录像及云台控制实现,它利用ffmpeg将视频数据流抽取成一帧一帧的图片,然后以每秒30帧左右的速率,用ios终端系统uiimageview播放这些图实现用户的观看。

ffmpeg开源工程实现的编解码器能够支持现有的大部分音视频格式,因此,利用ffmpeg实现h.264解码是一种最佳选择。实现h.264编码的核心主要包括两个部分,分别为vcl层编码和nal层编码。由于编码过程与解码过程是一个互逆的关系,所以,ffmpeg解码器实现h.264解码的过程也应该分为两个部分且执行过程与x264编码相反,依次为nal包解码,vcl层解码。

(1)nal包解码

nal包是h.264码流中的基本单元,它总是以0x000001或0x0001为前缀。因此,解码时首先要解析nal的前缀码,然后调用函数decode_nal_units()进行nal解码。解码主要包括sps(序列参数集)、pps(图像参数集)、idr(即时解码刷新片)、slice_header(图像片头)、slice(图像片)等结构的解码。其中对slice结构的解码为核心,对应的函数为decode_slice()。

(2)vcl解码

x264编码器在vcl层将图像编码成以片slice为单元的图像片,包括i_type、p_type和b_type三种类型。本软件实现的h.264编码只包含i_type和p_type两种类型。x264编码器实现vcl编码的关键模块为熵编码,其中包含算术熵编码cabac和huffman熵编码cavlc两种方式。因此解码器相应的选择cavlc熵解码。主要实现模块为decode_slice(),其中包括实现反量化处理,预测、反变换和运动补偿功能的hl_decode_mb()模块。

(3)ffmpeg实现h.264解码

利用ffmpeg实现h.264解码首先要注册所有解码器,并通过avcode_find_encoder(codec_id_h264)查找h.264解码器。其次初始化解码器参数,主要包括avcodec、avcodeccontext、avpacket、avframe等结构体数据,avcodec_open2(pcodecctx,pcodec,null)函数创建h.264解码器。在进行解码之前必须设置图像转换格式,如由yuv420p转换成rgb,函数sws_getcontext()实现此功能。在送入nal单元到解码器之前,需要先将sps和pps送入解码器,其主要功能是为解码nal提供解码参数,错误的sps和pps会导致视频无法成功解码。最后,将完整的nal单元送入解码器解码。

ffmpeg解码器输出的图像格式为yuv,而ios终端不支持yuv格式图像的显示,其可在android终端上显示,因此,在播放视频之前需要将yuv图像格式转换成rgb格式,这个过程可以通过函数sws_scale()完成。最后通过cgimagecreat()函数将rgba格式图像转换成uiimage图像,uiimage图像可以在ios终端内置控件uiimageview中显示。

上述具体实施方式不能作为对本发明保护范围的限制,对于本技术领域的技术人员来说,对本发明实施方式所做出的任何替代改进或变换均落在本发明的保护范围内。

本发明未详述之处,均为本技术领域技术人员的公知技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1