微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于IP网络的实时视频采集系统

基于IP网络的实时视频采集系统

时间:08-25 来源:互联网 点击:

通过Video4Linux模块提供的编译接口(API)从OV511设备中获取图像郑

①加载USB及OV511设备驱动模块,同时加载Video4Linux模块。分别使用命令:modprobe usbcor、modprobe usb-uhci、modprobe vodeodev和modprobe ov511。加载后将生成视频设备文件/dev/video0,为了和Video4Linux模块相协调,使用ln-s/dev/video0/dev/video为Video4Linux模块的默认视频设备voideo与物理视频设备video0建立连接。

②使用Video4Linux模块提供的API进行视频采集程序的设计。Video4Linux模块的视频采集接口设备为/dev/video,采集程序打开此接口设备并扫描 它以寻找自己所需要的数据。

这里将简要介绍一下Video4Linux模块提供的主要API函数:VIDICGCAP函数以数据结构video_capability返回视频采集设备的性能参数;VIDIOCSFBUF函数使用数据结构video_buffer设备采集设备的帧缓存参数,如果设备不支持帧缓存则此调用无效;VIDIOCGWIN函数使用数据结构video_window来设备采集窗口参数,使用参数1调用VIDIOCCAPTURE则开始视频信号采集,使用参数0则结束采集;VDIOCGCHAN函数用来查询不同的采集通道(包括音频信道),使用数据结构video_channel返回通道属性;VIDIOCSPICT函数使用数据结构video_picture来获取和设置采集图像帧的属性,比较重要的是图像帧的调色板参数;read函数读取采集通道中效的下一帧图像,所读取的图像格式和尺寸由前面介绍的VIDIOCSPICT函数和VIDIOCGWIN函数决定,这些API函数以及数据结构定义在头文件 中。

整个视频采集模块的工作流程见图3。

2.3 视频图像压缩模块的设计

由视频采集模块获取的视频图像需要在以太网上传输,为了提高传输效率从而提高视频图像质量,则需要将原始的视频图像进行压缩编码。本系统采用先进的MPEG-4标准对视频图像进行压缩编码,在几种开放源代码的MPEG-4编码软件中,选择xvidcore作为本系统中视频图像压缩模块中的核心算法。xvid是一个高效的而且具有可移植性的编码软件,目前版本为xvidcore-1.0.1。xvid支持Simple Profile和Advanced Profile,支持I/PFrames、B-Frames、Interlacing和GMC,以钻石和方块模式来进行PMVFast和EPZS运行估计,是目前比较流行的MPEG-4编码软件。

对xvidcore-1.0.1进行交叉编译比较简单,有以下主要步骤。

①解压缩xvidcore源代码:tar-zxvf xvidcore-1.0.1.tar;

②设置环境变量:export xvidcore=the path of xvidcore;cd $xvidcore/build/generic;

③生成makefile:./configure-host=localhostbuild=arm-linux-gcc;

④编译源代码:make;make install;

⑤将交叉编译生成的库文件libxvidcore.so.*拷贝到交叉编译器工作目录的lib子目录中,该库文件为系统的其它模块提供了编程接口。2.4 基于嵌入式Linux的网络视频流服务模块设计

2.4.1 Linux中流数据的操作

在本设计中,数据在整个系统中是以流数据的形式存在的,Linux内核为流数据提供了一个标准的编程接口,这种接口为数据从外部设备经内核到达用户进程提供了一个全双工通道。在这个通道中,数据的处理模块是作为可选的中间件由用户动态加载的,上面设计的视频压缩模块就是这样的一个中间件。

2.4.2 ASF流式文件格式

本系统主要是用于实时视频应用,所以需要系统提供对流式文件格式的支持,这样在接收方利用标准的流视频播放软件,如MMedia Player就可以观看实时传输的视频.在本系统中采用了开放的ASF流格式.压缩后的视频数据在传输前需要对其进行ASF编码.ASF文件的基本组织单元为ASF对象,每个对象由三个域组成:对象标识符域、对象大小域和对象数据域。ASF文件的高层逻辑结构也包含三部分:头对象、数据对象和索引对象。其中,头对象包含了许多全局信息,数据对象则包含了所有待播放的数据,头对象必须在数据对象之间被接收方接收并解释。

2.4.3 流视频协议

流视频协议是为了在客户机和视频服务器之间进行通信而设计和标准化的。根据它们的功能,与网络上流视频相关的协议分为三类。

*网络层协议:网络层协议提供了基本的网络服务支持。IP就是网络上流视频使用的网络协议。

*传输协议:传输协议为流服务提供端对端的网络传输功能。TCP、UDP、RTP和RTCP就是网络上流视频使用的传输协议。

*话路控制协议:话路控制协议定义消息和程序。RTSP就是一种话路控制协议。

为流视频设计的协议栈如图4所示。在发送方的数据面,压缩且经过ASF编码的视频数据被读出并在RTP/RTCP/RTSP层上打包,以提供定时和同步信息以及包的序列号。然后把这些打包的RTP数据流发送到UDP/TCP层和IP层,得到的IP包在网络上传输。在接

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top