新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于ARM11的无线视频监控系统

基于ARM11的无线视频监控系统

作者:时间:2015-04-24来源:网络收藏

  3 视频数据采集和编码设计

本文引用地址:http://www.eepw.com.cn/article/273139.htm

  3.1 基于V4L2 视频数据采集设计

  在Linux 系统下,对视频设备的各种操作是通过Video4Linux2 实现的,简称V4L2.应用程序通过V4L2 提供的接口函数实现视频设备的操作。整个视频数据采集的过程如图2 所示。

  ( 1) 打开视频设备, int open( const char *pathname, int flags)。调用该函数,若返回值为-1,表示打开失败,否则,表示所打开设备的文件描述符。

  (2)取得设备信息。通过ioctl(cam_fp, VIDIOC_QUERYCAP, &cap)函数来取得设备文件的属性参数并存储于cap 结构中,其中cam_fp 指的是打开的视频设备的文件描述符。

  ( 3)选择视频输入方式。通过ioctl(cam_fp,VIDIOC_ S_INPUT, &chan)函数设置视频设备的输入方式,其中chan 的数据结构类型是v4l2_input,用来指定视频的输入方式。

  ( 4 ) 设置视频帧格式。通过ioctl(cam_fp ,VIDIOC_S _FMT, &fmt)函数设置视频的帧格式,其中fmt 的数据结构类型是v4l2_format,用来指定视频的宽度、高度、像素大小等。

  (5)读取视频数据。通过read(cam_fp, g_yuv,YUV_ SIZE)函数,把摄像头一帧的数据存放到g_yuv中,其中YUV_ SIZE 指的是每帧数据的大小。

  (6)关闭视频设备。通过close(cam_fp)函数来实现视频设备的关闭。

  

 

  图2 视频数据采集流程框图。

  3.2 视频数据的H264 编码

  为了提高视频数据编码速度,本系统采用的是H264 硬编码方式,硬编码具有不占用CPU 资源,运算速度快等优点,从而满足视频数据实时性的要求。

  具体编码的过程如图3 所示。

  (1)创建H264 编码结构。调用SsbSipH264EncodeInit (width, height, frame_rate, bitrate, gop_num)函数实现的,其中width 表示图像的宽度,height 表示图像的高度,frame_rate 表示帧频,bitrate 表示比特率或码率,gop_num 表示两个相离关键帧之间最多包含多少个帧(B 或P 帧)。

  (2)初始化H264 编码结构,调用SsbSipH264Encode Exe (handle)函数。

  (3)获取视频输入地址,SsbSipH264EncodeGetInBuf (handle, 0)函数来实现,该函数返回视频输入的首地址,存放在p_inbuf 中。

  (4)输入视频数据,调用memcpy(p_inbuf, yuv_buf, frame_size)函数实现,p_inbuf 存放需要编码的数据,yuv_buf 存放原始视频数据,frame_size 表示数据的大小。

  (5)编码视频数据,对p_inbuf 内容进行H264编码,调用SsbSipH264EncodeExe(handle)函数实现。

  (6)输出已编码的数据,SsbSipH264EncodeGetOutBuf (handle, size),该函数返回已编码图像的首地址,size 表示已编码图像的大小。

  (7)关闭硬编码设备,调用SsbSipH264EncodeDeInit (handle)函数实现的。

  

 

  图3 H264 编码流程框图。

  4 视频数据的传输和显示

  4.1 视频数据传输模块设计

  现代无线通信网络标准主要有3G(第三代移动通信),WI-FI,Bluetooth,Zigbee(紫蜂)等,具体详见表1.

  表1 常用无线通信网络标准的基本比较

  

 

  由于WI-FI 具有传输率高,支持的协议多,安装及设置简单,成本低等优点,所以本系统采用的无线网络标准是WI-FI.

linux相关文章:linux教程


摄像头相关文章:摄像头原理


关键词: ARM11 视频监控

评论


相关推荐

技术专区

关闭