




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电脑编程技巧与维护作者简介:洪毅虹 (1989- ,女,本科在读;曹茜 (1989- , 女,本科在读 。 收稿日期:2010-07-081引言视频监控系统是一款综合的系统软件,从功能上分主要包括 3大部分:视频服务器部分 、 客户端部分以及服务器与 客户端的通信部分 。 服务器的功能是进行视频采集 、 视频编 码,并将采集到的数据发送给客户端 。 客户端的功能主要是 接受服务器传送过来的视频数据并进行解码,将视频数据显 示到屏幕上 。 通信部分主要的功能是连接服务器与客户端 。 基于 Linux 操作系统,使用 USB 摄像头捕获视频,采用 V4L2内核应用编程的接口函数,利用 Socket
2、 网络编程以及 SDL 在 视频显示方面的应用,对视频监控系统进行了研究 。2视频采集2.1Video4Linux2Video4Linux (简称 V4L 是 Linux 中关于视频设备的内核 驱动,它为针对视频设备的应用程序编程提供一系列接口函 数,这些视频设备包括现今市场上流行的 TV 卡 、 视频捕捉卡 和 USB 摄像头等 。 对于 USB 口摄像头,其驱动程序中需要提 供基本的 I/O操作接口函数 open 、 read 、 write 、 close 的实现 。 在 Linux 中,视频设备是设备文件,可以像访问普通文件一样 对其进行读写,摄像头在 /dev/video0下 。 V
3、ideo4Linux2(简称 V4L2 是 V4L 的升级版本 。在 Linux 编程中,一般使用 ioctl 函数来对设备的 I/O通道 进行管理:extern int ioctl (int_fd,unsigned long int _request, _THROW;其中, _fd表示设备的 ID ; _request表示具体的命令标志符 。 在进行 V4L2开发中,会用到的命令标志符如表 1所示 。这些 IO 调用有些是必须的,有些是可选择的 。2.2采集过程在 Linux 下进行视频采集的基本过程如图 1所示 。 (1 打开摄像头在 V4L2中,视频设备被看做一个文件,使用 Open 函
4、数Linux 下视频监控系统的研究与设计洪毅虹,曹茜(武汉大学计算机学院,武汉 430072摘 要:介绍了 Linux 环境下实现视频采集 、 传输 、 显示的原理和工作流程,对 Linux 环境下使用 V4L2实现视频 采集的过程进行了详细的分析,对 Socket 编程实现网络通信和 SDL 中的视频显示 API 进行了深入的研究,进而实现 了在服务器端使用 USB 摄像头捕获实时图像,通过网络传输,将图像数据传送到客户端进行实时显示 。 关键词:V4L2; 视频采集 ; SDL ; 网络编程Research and Design of Video Monitor System Based
5、on LinuxHONG Yihong, CAO Xi(Computer institute , Wuhan University , Wuhan 430072Abstract :Introduce the theory and procedure to accomplish the video capture, transmission and display in Linux. Give andetail analysis of using V4L2to attain video capture in Linux, and make an in-depth research of the
6、Socket and the SDL video programming. At last implement the whole system by using the USB camera to capture the real-time image on the server, sending the image data to the client through the network, and real-time displaying. Key words :V4L2; Video Capture ; SDL ; Network Programming表 1V4L2开发中会用到的命
7、令标志符命令标识符 意义VIDIOC_REQBUFS分配内存VIDIOC_QUERYBUF把 VIDIOC_REQBUFS中分配的数据缓存 转换成物理地址 VIDIOC_QUERYCAP查询驱动功能VIDIOC_ENUM_FMT获取当前驱动支持的视频格式 VIDIOC_S_FMT设置当前驱动的频捕获格式 VIDIOC_G_FMT读取当前驱动的频捕获格式 VIDIOC_TRY_FMT验证当前驱动的显示格式 VIDIOC_CROPCAP查询驱动的修剪能力 VIDIOC_S_CROP设置视频信号的边框 VIDIOC_G_CROP读取视频信号的边框 VIDIOC_QBUF把数据从缓存中读取出来 VID
8、IOC_DQBUF把数据放回缓存队列 VIDIOC_STREAMON开始视频显示函数 VIDIOC_STREAMOFF结束视频显示函数VIDIOC_QUERYSTD检查当前视频设备支持的标准, 例如 PAL 或 NTSC软件开发与设计图 1视频采集的基本过程开始打开视频设备设置图像参数和帧状态并实现内存映射否把数据送入缓冲区是否终止?判断是否采集完成采集一帧图像 是 关闭设备结束打开视频设备 。 应用程序能够使用阻塞模式或非阻塞模式打 开视频设备,如果使用非阻塞模式调用视频设备,即使尚未 捕获到信息,驱动依旧会把缓存 (DQBUFF 里的东西返回给 应用程序 。 文中采用非阻塞模式打开摄像头
9、。 系统调用文件 系统的 Open 接口打开设备:fd =open (device,O_RDWR,当 设备启动成功时, fd 返回设备文件描述符 。(2 设置视频格式在进行视频采集前要先设置视频格式 。 Linux 环境下进行视 频采集时,数据流类型必须永远是 V4L2_BUF_TYPE_VIDEO_CAPTURE 。 设置视频存储类型为 YUYV 格式 。 设置视频格式的 时候需要调用 ioctl 的 VIDIOC_S_FMT命令进行设置 。(3 初始化缓冲区缓冲区的初始化包括内存的分配以及内存映射的建立 。 为视频捕获分配内存时,要使用 ioctl 的 VIDIOC_RE-QBUFS 命令
10、 。 分配完内存后,用户不能直接访问该段内存 。 因为操作系统一般把系统使用的内存划分成用户空间和内核 空间,分别由应用程序管理和操作系统管理 。 应用程序可以 直接访问内存的地址,而内核空间存放的是供内核访问的代 码和数据,用户不能直接访问 。 v4l2捕获的数据,最初是存 放在内核空间的,这意味着用户必须通过某些手段来转换地 址 。目前一共有 3种视频采集方式:使用 read 、 write 方式; 内存映射方式以及用户指针模式 。 read 和 write 方式在用户空 间和内核空间不断拷贝数据,占用了大量用户内存空间,效 率不高 。 内存映射方式把设备里的内存映射到应用程序中的 内存控
11、件,直接处理设备内存,这是一种有效的方式 。 用户 指针模式中,内存片段由应用程序自己分配 。主要使用内存映射的方式来进行视频采集,首先调用 ioctl 中的 VIDIOC_REQBUFS命令获取了缓存的个数,接着通 过调用 VIDIOC_QUERYBUF命令来获取这些缓存的地址,然 后使用 mmap 函数转换成应用程序中的绝对地址,最后把这段 缓存放入缓存队列 。(4 开始视频采集调用 ioctl 的 VIDIOC_STREAMON命令开始视频采集 。 (5 结束视频采集当 视 频 采 集 活 动 结 束 的 时 候 , 需 要 使 用 VID -IOC_STREAMOFF命令结束视频采集,
12、调用 close 函数关闭视 频设备并调用 free 函数清空缓冲区 。V4L2数据缓存采用 FIFO 的方式,当应用程序需要将缓 存传输到网络上时,缓存队列将最先采集到的视频数据缓存 送出,并重新采集一张视频数据 。 这个过程需要用到两个 ioctl 命令:VIDIOC_DQBUF和 VIDIOC_QBUF。 这两个命令分别在 函数 buffer_enqueue(intindex 以及函数 buffer_dequeue(intindex 中实现 。3网络通信网络通信模块设计开发是通过网络编程接口 (WindowsSocket ,简称 Winsock 来实现的 。套接字 Socket 工作过程
13、如下 :(1 服务器首先启动:通过调用 socket (建立一个套接 字,然后调用 bind (将该套接字和本地网络地址联系在一 起,再调用 listen (使套接字做好侦听的准备,并规定它的请 求队列的长度,之后就调用 accept (来接收连接 。(2 客户在建立套接字,然后就可调用 connect (和服务器建立连接 。(3 客户机和服务器之间就可以通过调用 read (和 write (来发送和接收数据 。(4 待数据传送结束后,客户机和服务器双方调用 close (关闭套接字 。首先,服务器端和客户端建立起 TCP 连接,服务器端调 用 socket 函数,并指定其中的参数 SOCK
14、_STREAM(字节流套 接字 ,之后服务器端再依次调用 bind 函数和 listen 函数来侦 听客户端的连接请求 。4客户端上视频显示设计4.1SDLSDL 是 Simple DirectMedia Layer 的缩写,它是一个跨平台的多媒体库,以用于直接控制底层的多媒体硬件的接口 。 这 些多媒体功能包括了音频 、 键盘和鼠标 (事件 、 游戏摇杆 等 。 SDL 提供了 2D 图形帧缓冲的接口,以及为 OpenGL 与各 种操作系统之间提供了统一的标准接口以实现 3D 图形 。 SDL 支持主流的操作系统,包括 Windows 和 Linux 。 SDL 由 8个子 系统组成 音频
15、、 CDROM 、 事件处理 、 文件 I/O、 游戏杆 、 线程 、 计时器和视频 。4.2V4L2_PIX_FMT_YUYV和 RGB32YUV 是被欧洲电视系统所采用的一种颜色编码方法 。 在 此介绍 V4L2_PIX_FMT_YUYV视频格式进行视频数据的存储 。V4L2_PIX_FMT_YUYV格式中,每 4个字节表示 2像素 。 每 4个字节是两个 Y ,一个 Cb ,一个 Cr 。 每个 Y 匹配 1个像 素,每个 Cb 和每个 Cr 匹配 1个像素 。 Cb 和 Cr 各有一半的 Y 的水平分辨率,即而 UV 分量在水平方向上每两个像素采样一 次 。 在 Windows 环境下
16、, V4L2_PIX_FMT_YUYV通常被称作 YUY2。RGB 色彩模式 (也翻译为 “ 红绿蓝 ” ,比较少用 是工业 界的一种颜色标准,是通过对红 (R、 绿 (G、 蓝 (B3个颜 色通道的变化以及它们相互之间的叠加来得到各式各样的颜 色的, RGB 即是代表红 、 绿 、 蓝 3个通道的颜色,这个标准(下转到 43页 软件开发与设计 Private Sub Command1_Click(Set RC =NewSpSharedRecoContext Set myGrammar =RC.CreateGrammar myGrammar.DictationSetState SGDSActi
17、ve End SubPrivate Sub RC_Recognition(ByVal StreamNumber AsLong, ByVal StreamPosition As Variant, ByValRecognitionType As SpeechLib.SpeechRecognitionType, ByVal Result As SpeechLib.ISpeechRecoResult DimsText As StringPrivate Sub Form_Unload(CancelAs Integer Set RC =NothingSet myGrammar =Nothing End S
18、ub 4.4配置引擎最后一步控制面板配置 Speech SDK 引擎当前所处理语 言 。 打开 “ 控制面板 ” ,打开 “ 语音 ” 配置项目,可以看到在 这里可以指定当前可以对何种语言进行识别或者合成,还可 以配置相关的硬件设备以及控制语速,如图 2所示 。在 “ 文字 -语音转换 ” 的 “ 语音选择 ” 组合框中选择简体 中文 (MicrosoftSimplified Chinese ,这样就可以合成汉语文 字 。参考文献1陈素燕,刘友生 . 基于 SAPI 技术的双语混读在 CAI 开发中的应用 J.计算机工程与设计, 2006, (4.2李禹材 . 基于 Speech SDK 的语
19、音控制应用程序的设计与实现 J.计算机应用, 2004, 6.3宋阳 . 利用 SAPI5完成中文语音音素的分解 J.微计算机信息, 2005,(3.图 2语音引擎配置界面图 2使用 SDL 进行视频显示的过程开始SDL 初始化创建 SDL_Surface显示接收到的视频流结束显示, 关闭 SDL结束使用 SDL 进行视频显示开始从接收到的 YUV 视频格式中提取 Y , Cr , CbYUV 视频格式转换成 RGB 格式 使用 SDL 显示 RGB 格式的视频结束显示接收到的视频流几乎包括了人类视力所能感知的所有颜色,是目前运用最广 的颜色系统之一 。 4.3实现视频显示在 Linux 下使用 SDL 进行视频显示的基本过程如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-广西-广西中式面点师二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-广东-广东工程测量员四级(中级工)历年参考题库典型考点含答案解析
- 2020-2025年一级注册建筑师之建筑结构高分通关题型题库附解析答案
- 2025年驾驶证考试-网约车资格证-网约车资格证历年参考题库含答案解析
- 2025年职业技能鉴定-茶艺师-茶艺师五级(初级工)历年参考题库含答案解析(5套)
- 2025年职业技能鉴定-热工职业-热工程控保护职业技能鉴定(中级)历年参考题库含答案解析(5套)
- 热力发电厂热工课件
- 季度院感知识培训记录课件
- 存货出入库管理培训课件
- 婚车出租专业知识培训内容课件
- GB/T 45524-2025公共安全易燃易爆气体探测报警装置
- 关联公司转租协议书
- 三级高频词汇必背
- 校园文化建设中心
- 《无人机介绍》课件
- 《ISO 37001-2025 反贿赂管理体系要求及使用指南》专业解读和应用培训指导材料之2:4组织环境(雷泽佳编制-2025A0)
- 小学生植物知识科普课件
- 美高课程体系介绍
- 2023年山东水发集团有限公司高校应届毕业生招聘笔试参考题库附带答案详解
- 放射科查对制度
- 2025年激光干涉仪市场调研报告
评论
0/150
提交评论