发明名称 一种无线视频传感器编解码系统的设计方法
摘要 无线视频传感器主要用于实现视频的实时监控。分为5个独立模块:视频采集模块,视频编码模块,视频传输模块,视频解码模块,视频显示模块。视频采集模块:用于对视频进行采集的模块,负责视频的分辨率,比特率,数据格式的视频参数的设定。视频编码模块:i.Max27处理器内部包含了一个视频处理模块。该模块在解码过程中不占用CUP时钟周期,可以提高实时性。视频传输模块:传输模块需要有足够大的带宽来满足视频的实时性。采用Wi-Fi协议来传输视频。视频解码模块:视频的接收端为PC机,接收端接受到一帧数据就进行解码,以减少延迟。视频显示模块:解码后的数据经过数据格式的转化后就可以送至显示端进行显示。显示视频采用了开源的SDL库来显示视频。
申请公布号 CN102104772A 申请公布日期 2011.06.22
申请号 CN201110049043.5 申请日期 2011.02.28
申请人 南京邮电大学 发明人 王汝传;杨小波;章韵;黄海平;孙力娟;沙超;凡高娟;蒋凌云;肖甫;黄俊杰
分类号 H04N7/18(2006.01)I;H04N7/26(2006.01)I 主分类号 H04N7/18(2006.01)I
代理机构 南京经纬专利商标代理有限公司 32200 代理人 叶连生
主权项 一种无线视频传感器编解码系统的设计方法,其特征在于该系统的基本组成模块包括:视频采集模块、视频编码模块、视频传输模块、视频解码模块、视频显示模块,该系统的设计方法如下:步骤1)视频采集模块设计:视频采集模块实现了摄像头的初始化和数据提取功能,包括摄像头驱动、V412捕获设备驱动、V412输出设备驱动三个驱动程序的设计,1)摄像头驱动设计:摄像头选用OmniVision公司的OV2640,该驱动通过I2C总线对OV2640初始化,包括设置图像分辨率,对比度,图像的输出格式,详细步骤如下:①在ov2640_init()函数中配置IIC总线电压,并向内核注册IIC设备,②在ov2640_clean()函数中注销IIC设备,并释放所分配的空间,③初始化camera_sensor_if结构体,该结构体包含一系列的函数指针,这些指针分别指向设置颜色空间,设置数据格式,重启,获取当前状态等函数,④执行module_init(ov2640_init),使模块插入的时候可以运行ov2640_inti()函数,⑤执行module_exit(ov2640_clean),使模块卸载的时候执行ov2640_clean()函数,⑥执行EXPORT_SYMBOL(camera_sensor_if)导出变量camera_sensor_if,使用户可以调用camera_sensor_if所指向的控制函数;2)v412捕获设备驱动的设计:V412是Video for Linux Two的简称,是在linux内核中关于视频设备的API接口,涉及开关视频设备、采集并处理视频图像信息,V412捕获设备驱动包含两层接口:捕获接口和图层接口,捕获接口利用IPU预处理的ENC信道记录YCrCb视频流,而图层接口利用IPU预处理的VF信道来预览视频,该驱动实现了标准的V412 API;3)v412输出设备驱动的设计:V412输出设备驱动利用IPU后处理函数来输出视频流,该驱动定义了视频流的数据格式,像素的大小,视频流开始和结束ioctl()选项;步骤2)视频编码模块设计:VPU是Video processing unit的简称,是处理器内部的一个模块,支持H264 BP,MPEG4 SP and H263 P3格式的视频压缩,VPU硬件操作:VPU硬件做了所有的编码处理和大部分的数据流的匹配和封包,因此软件方面只要对硬件进行少量的控制就可以实现视频的编码,VPU软件操作:分为两部分,内核驱动和用户库函数,内核负责系统的控制和资源的分配,提供ioctl()接口给用户空间使之可以访问系统资源,用户库函数通过调用ioctl接口和编码库函数来实现复杂的编码系统;步骤3)视频传输模块的设计:无线通信模块要有足大的带宽来满足视频传输的需要,采用ralink公司的rt73无线网卡,支持IEEE 802.11b/g网络标准,室内最远通信距离200米、室外最远830米;通过USB接口与处理器的USB接口相连,Ralink官方提供了Linux版的驱动,通过交叉编译移植到开发板中;视频采集端和接受端通过Wi‑Fi无线网络联接,采用UDP Socket进行数据的传输,视频的采集端每压缩好一帧数据就在数据头加上帧序号和帧大小进行传输,接收端实时监听有无数据到达,数据到达了就进行接收,根据包头可以判断有无乱序的包和残缺的包,如果有,就丢弃该帧,在局域网中,乱序,丢包,残包的概率很低,完全可以满足实时视频传输的需要;步骤4)视频解码模块的设计:视频解码模块采用ffmpeg库进行解码,ffmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,它提供了录制、转换以及流化音视频的完整解决方案,它包含了非常先进的音频/视频编解码库libavcodec,满足解码的实时性。解码过程如下:①调用avcodec_init()对解码器进行初始化,②调用avcodec_register_all()对解码器进行注册,③调用avcodec_find_decoder()寻找解码器,④调用avcodec_alloc_context()分配解码上下文,⑤调用avcodec_alloc_frame()分配解码帧帧空间,⑥调用avcodec_open()打开解码器,⑦调用avcodec_decode_video()解码一帧视频。如过数据流结束,则执行⑧;如过数据流未结束,则重复执行⑦,⑧释放所分配的空间。步骤5)视频显示模块的设计:显示终端采用SDL库,SDL是SimpleDirectMedia Layer的简称,是一个自由的跨平台的多媒体开发包,适用于游戏、游戏SDK、演示软件、模拟器、MPEG播放器和其他应用软件,能够流畅的显示视频,显示过程如下:①调用SDL_Init()对SDL进行初始化,②调用SDL_SetVideoMode()初始化显示终端,③调用SDL_CreateYUVOverlay()创建YUV显示图层,④调用SDL_DisplayYUVOverlay()来显示一帧图像;如果数据流未结束,则重复执行④;如果数据流结束了,则执行⑤,⑤释放所占的资源。
地址 210003 江苏省南京市新模范马路66号