一种基于MJPG流传输的网络视频服务器及其设计、移植方法技术

技术编号:17798521 阅读:72 留言:0更新日期:2018-04-25 22:02
本发明专利技术公开了一种基于MJPG流传输的网络视频服务器及其设计、移植方法,网络视频服务器包括参数输入模块、参数解析模块、判断模块、视频数据输入模块、视频数据输出模块和存储模块;所述参数输入模块用于通过命令行输入参数,所述参数解析模块用于解析所述输入参数,并将全局标识变量置为1,所述判断模块用于判断全局标识变量的值,并在全局标识标量为1时,将程序置于后台运行,所述视频数据输入模块用于获取视频数据,并将所述视频数据传输至存储模块,所述视频数据输出模块用于建立与客户端的联系并将视频数据发送至客户端。本发明专利技术开发了支持MJPEG格式的网络视频服务器,在满足使用需求的情况下,减少对硬件资源的占用,降低产品硬件投入成本。

【技术实现步骤摘要】
一种基于MJPG流传输的网络视频服务器及其设计、移植方法
本专利技术涉及视频监控
,具体地说是一种基于MJPG流传输的网络视频服务器及其设计、移植方法。
技术介绍
目前得到广泛应用的视频压缩技术有MPEG标准、H.264标准以及MJPEG标准。MPEG即MovingPictureExpertsGroup,该组织于1988年成立,MPEG先后制定了MPEG-1、MPEG-2、MPEG-4三个标准。MPEG-1标准主要面向的是比特率1.5Mbit/s以下CD-ROM应用,MPEG-2标准所要求的比特率为2~30Mbit/s,MPEG-4最主要的特色是高压缩比、易操作的可交互性以及统一接入能力。H.264是继MPEG-4之后新出现的一种视频数据编码标准,H.264标准在技术上有准确度高、多模式的位移估计,分层的编码语法等优势。MJPEG全称MotionJointPhotographicExpertsGroup,源于JPEG压缩技术,是24BPP的真彩色影像标准。MJPEG的压缩算法与MPEG一脉相承,具备优越的功能,可传输高质量图片,生成完全动画视频等。由于这种压缩本身技术限制,其相应的压缩效率不如H.264以及MPEG-4,进而导致需要的网络传输带宽也较大,一般要求在0.5Mbps~1.5Mbps。横向比较上述3种视频压缩技术,H.264、MPEG标准具有更好的压缩效率和更强的网络适应能力,因而更适用于对画面质量和实时性要求较高的监控产品以及多路视频数据的传输,MJPEG虽然在技术上处于劣势,但就家庭个人等低端监控产品领域来讲,其技术能力以及现有网络传输带宽也完全可以满足客户需求。如今很多高端的网络视频产品都以其为基本进行二次开发,网络视频服务器端同样可以以它作为编码组件进行快速二次开发以支持多种视频格式的传输。FFmpeg虽然拥有非常强大的视频采集、格式转换、抓图等功能。但是针对应用场景特定、视频格式特定的产品来说,FFmpeg往往显得过于臃肿,不够轻量,过多占用服务器端的硬件资源。
技术实现思路
本专利技术的目的在于提供一种基于MJPG流传输的网络视频服务器及其设计、移植方法,用于解决现有组件占用硬件资源大,所需硬件成本高的问题。本专利技术解决其技术问题所采用的技术方案是:一种基于MJPG流传输的网络视频服务器,包括参数输入模块、参数解析模块、判断模块、视频数据输入模块、视频数据输出模块和存储模块;所述参数输入模块用于通过命令行输入参数,所述参数解析模块用于解析所述输入参数,并将全局标识变量置为1,所述判断模块用于判断全局标识变量的值,并在全局标识标量为1时,将程序置于后台运行,所述视频数据输入模块用于获取视频数据,并将所述视频数据传输至存储模块,所述视频数据输出模块用于建立与客户端的联系并将视频数据发送至客户端。进一步地,所述视频数据输入模块包括input_file插件、input_gspcavl插件、input_uvc插件和input_testpicture插件;所述input_file插件用于获取本地视频文件,input_gspcavl插件用于兼容旧版本的视频输入模块,input_uvc插件用于获取摄像头采集到的数据,input_testpicture插件用于对视频输入模块的测试。进一步地,所述input_uvc插件还用于判断摄像头采集到的视频数据的格式,如果格式为MJPEG,则直接将数据发送至存储模块,如果格式是YUV,则压缩YUV为MJPEG,将数据发送至存储模块。进一步地,所述input_uvc插件包括input_init接口函数、input_run接口函数、input_stop接口函数和input_cmd接口函数,所述input_init接口函数用于初始化互斥锁,解析命令行参数,并申请摄像头结构体,初始化摄像头硬件,input_run接口函数为存储模块分配内存空间并创建cam_thread线程获取摄像头采集到的数据,input_stop接口函数用于取消cam_thread线程,input_cmd接口函数用于设置摄像头硬件参数;所述input_uvc插件还包括help函数、cam_thread函数和cam_cleanup函数,所述help函数用于打印调试信息,cam_thread函数用于将从摄像头获取到的数据进行压缩编码,并保存至存储模块,cam_cleanup函数用于清理线程,释放资源。进一步地,所述视频数据输出模块包括请求发送单元、请求接收单元和视频数据发送单元,所述请求发送单元用于向客户端发送请求信号,请求接收单元用于接收客户端返回的请求成功信号,视频数据发送单元用于向客户端发送视频数据。进一步地,所述视频数据输出模块包括output_http插件,所述output_http插件用于将存储模块内的视频数据通过网络发送给客户端,output_http插件包括线程单元,所述线程单元用于初始化一个TCPsocket以响应来自客户端的请求,当客户端出现多个连接请求时,所述线程单元同时创建多个客户端线程。本专利技术的实施例还提供了一种基于MJPG流传输的网络视频服务器的设计方法,包括以下步骤:指定默认情况下使用的输入、输出插件及其参数;解析输入参数,在全局标识变量为1时,在后台创建进程,并初始化全局数据结构体;检测输出插件的数量,并初始化输入、输出插件;运行输入、输出插件,待客户端有信号出现时,向客户端发送视频数据。进一步地,输入插件的运行过程为:抓取一帧数据;判断数据帧的大小,并将数据帧小于阈值的数据丢弃;对原始JPG数据进行锁存,并复制到全局缓存区;判断是否在YUV模式下;若是,将YUV格式的数据转换为JPEG格式,并对数据进行压缩存储,若否,直接对数据进行存储;解锁全局缓冲区,并更新数据帧。进一步地,输出插件的运行过程为:客户端发送请求;服务器端检测到连接请求后,建立工作线程,接受请求;接收客户端发送的控制命令,并在接收到数据采集命令后,激活数据采集线程,对图像数据进行处理后,执行数据发送线程,将视频数据发送给客户端。本专利技术的实施例还提供了一种基于MJPG流传输的网络视频服务器的移植方法,包括以下步骤:移植libjpeg库值嵌入式平台;修改所有目录下的Makefile文件,并指明libjpeg库的头文件路径和搜索路径;将所有输入、输出插件分别拷贝至bin、lib目录下。
技术实现思路
中提供的效果仅仅是实施例的效果,而不是专利技术所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:1、本专利技术实施例在开发了支持MJPEG格式的网络视频服务器,未借助现有的FFmpeg的代码,从而避免FFmpeg带来的臃肿,且能够实现视频数据的采集至传输的整个过程,减少对硬件资源的占用,降低产品硬件投入成本。2、输入插件input_uvc能够将YUV格式的数据转换为JPEG格式,使网络视频服务器可处理多种文件格式,扩大网络视频服务器的使用范围。3、所述线程单元用于初始化一个TCPsocket以响应来自客户端的请求,当客户端出现多个连接请求时,所述线程单元同时创建多个客户端线程,可应用在MJPG视频流从Camera采集端到浏览器或者流媒体播放器的网络传输。4、将网络视频服务器移植到嵌入式平台上,使网络视频服本文档来自技高网
...
一种基于MJPG流传输的网络视频服务器及其设计、移植方法

【技术保护点】
一种基于MJPG流传输的网络视频服务器,其特征是:包括参数输入模块、参数解析模块、判断模块、视频数据输入模块、视频数据输出模块和存储模块;所述参数输入模块用于通过命令行输入参数,所述参数解析模块用于解析所述输入参数,并将全局标识变量置为1,所述判断模块用于判断全局标识变量的值,并在全局标识标量为1时,将程序置于后台运行,所述视频数据输入模块用于获取视频数据,并将所述视频数据传输至存储模块,所述视频数据输出模块用于建立与客户端的联系并将视频数据发送至客户端。

【技术特征摘要】
1.一种基于MJPG流传输的网络视频服务器,其特征是:包括参数输入模块、参数解析模块、判断模块、视频数据输入模块、视频数据输出模块和存储模块;所述参数输入模块用于通过命令行输入参数,所述参数解析模块用于解析所述输入参数,并将全局标识变量置为1,所述判断模块用于判断全局标识变量的值,并在全局标识标量为1时,将程序置于后台运行,所述视频数据输入模块用于获取视频数据,并将所述视频数据传输至存储模块,所述视频数据输出模块用于建立与客户端的联系并将视频数据发送至客户端。2.根据权利要求1所述的网络视频服务器,其特征是:所述视频数据输入模块包括input_file插件、input_gspcavl插件、input_uvc插件和input_testpicture插件;所述input_file插件用于获取本地视频文件,input_gspcavl插件用于兼容旧版本的视频输入模块,input_uvc插件用于获取摄像头采集到的数据,input_testpicture插件用于对视频输入模块的测试。3.根据权利要求2所述的网络视频服务器,其特征是:所述input_uvc插件还用于判断摄像头采集到的视频数据的格式,如果格式为MJPEG,则直接将数据发送至存储模块,如果格式是YUV,则压缩YUV为MJPEG,将数据发送至存储模块。4.根据权利要求3所述的网络视频服务器,其特征是:所述input_uvc插件包括input_init接口函数、input_run接口函数、input_stop接口函数和input_cmd接口函数,所述input_init接口函数用于初始化互斥锁,解析命令行参数,并申请摄像头结构体,初始化摄像头硬件,input_run接口函数为存储模块分配内存空间并创建cam_thread线程获取摄像头采集到的数据,input_stop接口函数用于取消cam_thread线程,input_cmd接口函数用于设置摄像头硬件参数;所述input_uvc插件还包括help函数、cam_thread函数和cam_cleanup函数,所述help函数用于打印调试信息,cam_thread函数用于将从摄像头获取到的数据进行压缩编码,并保存至存储模...

【专利技术属性】
技术研发人员:王鹏
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1