基于Linux视频传输系统设计与实现.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Linux视频传输系统设计与实现

基于Linux视频传输系统设计与实现   摘 要:给出了在Linux系统下实现视频采集、数据传输以及视频显示的实现方法。该方法利用ARM开发板内核中的V4L2协议来完成图片的采集过程,并通过Linux下Socket编程实现图片数据从采集端到显示窗口的传输,视频显示终端则是基于Linux下Qt开发的数据窗口部件来实现的。   关键字:Linux;V4L2协议;Socket编程;Qt编程   中图分类号:TP311 文献标识码:A 文章编号:2095-1302(2014)01-0047-03   0 引 言   嵌入式系统是一种“完全嵌入受控器件内部,为特定应用而设计的专用计算机系统”,是以应用为中心,以计算机技术为基础,其软硬件可裁剪,适用于对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。与传统的操作系统相比,嵌入式系统是一个精简、高效、针对性强的相对简单的操作系统。   Linux系统是windows问世以来最热门的操作系统之一,其作为嵌入式系统的优势主要表现在以下几点:第一,Linux最重要的一个优点就是Linux的源代码的开放性,是免费的,只要遵守GPL(GNU General Public License)的规定,就可以免费获得拷贝,这也使众多的开发者为其打造了坚实的基础;第二,Linux支持多种硬件平台,现在已经被移植到ARM,CRIS,AMD x86-64,IBM S/390等各种体系结构上;第三, Linux操作系统功能强大,其可以提供多任务的进程调度,完全的内存保护机制,多进程间通信和同步机制,多种网络协议的网络支持等功能;第四,模块化设计,系统上的任务模块都可以在运行的时候被链接或者解除链接,使新模块的开发变得更加容易,而且可以减少内存的使用,这非常适合小型的嵌入式系统开发。   1 系统功能模块的设计   根据各个功能模块的不同,本视频传输系统主要包括3个模块设计:其一是视频采集模块,完成的功能主要是设置和控制摄像头对视频数据进行采集,其二是视频发送接收模块,主要完成ARM板与显示终端之间的视频数据传送与接收,其三是视频显示模块,主要完成接收数据的实时动态显示,显示界面是基于Qt的窗口开发。   2 视频采集模块   视频的采集要用到V4L2协议,即video for Linux 2,是运行在Linux操作系统之上的关于视频设备的内核驱动框架。它主要利用一系列的回调函数来实现程序监测设备和操作设备的能力,包括视频数据压缩的格式,摄像头频率、帧频的设置,图像的参数等。   V4L2是Linux内核提供给应用程序访问语音、视频驱动的API(Application Program Interface),它为应用层和驱动层提供接口函数,开发者调用函数就可以直接控制、操作相应的视频硬件设备。   视频传输系统中视频的采集主要包括以下几个部分:视频设备的打开,视频设备属性及采集方式的设置,视频数据的处理,关闭视频设备。   2.1 视频设备的打开   在Linux操作系统中,设备文件被看做是文件类型,我们可以像操作文件一样去操作视频设备。该系统中采用中星微ZC301摄像头。采用非阻塞、可读可写模式,用open函数打开摄像头设备,其命令代码为:   int camera_fd;   camera_fd = open(“/dev/video0”, O_RDWR | O_NONBLOCK);   应用程序中可以使用阻塞模式和非阻塞模式打开视频设备。如果使用非阻塞模式,即使视频设备没有捕获到信息,驱动依然会把缓存数据返回给应用程序;采用阻塞模式,则驱动会阻塞等待视频设备,直到采集到数据。   2.2 视频设备属性及采集方式的设置   视频设备属性的设置主要通过ioctl函数来进行设置,ioctl的调用格式为:   result = ioctl(Fd, Command, Parameter);   其中Fd表示设备描述符,Command表示控制命令,Parameter表示控制命令需要的参数,ioctl函数返回值result根据控制命令的不同而有不同的意义。Linux操作系统视频设备驱动V4L2支持的常用的控制命令及其功能为:   VIDIOC_ENUM_FMT; 获取当前视频设备支持的视频格式;   VIDIOC_QUERYCAP; 查询当前视频设备的功能;   VIDIOC_S_FMT; 设置视频设备的视频数据格式;   VIDIOC_REQBUFS; 请求V4L2驱动分配视频缓冲区;   VIDIOC_QUERYBUF; 查询已经分配的V4L2的视频缓冲区的相关信息;   VIDIOC_QBUF; 投放一个空的视频缓冲区到视频缓冲区输入队列中。   当调用上

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档