嵌入式Linux的web视频服务器的构建_第1页
嵌入式Linux的web视频服务器的构建_第2页
嵌入式Linux的web视频服务器的构建_第3页
嵌入式Linux的web视频服务器的构建_第4页
嵌入式Linux的web视频服务器的构建_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、随着嵌入式处理器和开源Linux的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来。1引言随着多媒体技术、视频压缩编码技术、网络通讯技术的发展,数字视频服务器逐渐发展起来。近年来随着嵌入式处理器和开源Linux的广泛应用,视频服务已逐渐与嵌入式相结合。本文提出了一种嵌入式web视频服务器的构建方法,该系统以嵌入式Linux和S3C2440为核心平台;在这个平台上构建web服务器和视频服务器,客户可以直接通过浏览网页的方式观看视频。2视频采集传输模块的构建本系统采用的硬件平台是基于ARM920T架构的嵌入式开发板S3C2440,CPU主频400MHz,该开发板集成了64MB32位的SDRAM和6

2、4MB的NANDFLASH,三个USBhost口,3路UART,4路DMA,一个采用CS8900Q3以太网控制芯片的10M网络接口等。摄像头采用中星微301芯片的USB摄像头。本系统软件部分由视频采集传输模块和web服务器组成。2.1视频采集模块在进行视频采集前需要先安装驱动,video4Linux是Linux中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供统一的编程接口。本系统的S3C2440开发板自带的是Linux2.6.12内核,该内核编译时已加进关于视频设备的内核驱动Video4Linuxl。使用video4Linux进行采集视频的流程图如图1。1)设备的初始化调用open

3、打开设备,利用ioctl()对设备进行控制,比如设置对比度、亮度、调色板,访问模式等等。主要代码如下:intfd=open(“/dev/v4l/video0”,O_RDWR);/打开设备/*获取设备的基本信息(设备名称、支持的最大最小分辨率、信号源信息等)*/ioctl(vd-fd,VIDIOCGCAP,&(vd-capability):/*获取设备采集的图象的各种属性/*ioctl(vd-fd,VIDIOCGPICT,&(vd-picture);/*如果需要改变图像的信息,先改变picture中的相应的变量值,再调用ioctl(vd-fd,VIDIOCSPICT,&(vd-picture)即

4、可,本程序初始化全部采用默认值*/(2)采集图像本系统使用内存映射的方式采集图像,线程采集函数grab()主要代码如下:/*分配一段内存,存放采集到的图像数据*/vd-pFramebuffer=(unsignedchar*)mmap(0,vd-videombuf.size,PROT_READ|PROT_WRITE,MAP_SHARED,vd-fd,0);for(;)/*开始截取一帧图像,使用内存映射的方式*/if(ioctl(vd-fd,VIDIOCMCAPTURE,&(vd-vmmap)pFramebuffer起始的内存地址内,大小为vd-videombuf.size字节*/if(ioctl

5、(vd-fd,VIDIOCSYNC,&vd-vmmap.frame)0)perror(vidiocsyncerrorn);erreur=-1;然后在main函数中创建采集线程,pthread_create(&wl,NULL,(void*)grab,NULL);该线程一直运行,不断采集图像数据,同时把数据放到缓冲区内,发送线程从缓冲区读取视频数据。连接请求是解蘇执行AppklJ逛入采集典料图I相頻表奘垃程图八此強务雀工柞原理TAppld到客户端浏览器斷幵连接,號闭客户端邀置图像帕性VIDlOCSnCT打幵團像设猛获取信息VIDEO仁口匚直片ViDIOCGPI匚丁采集-戦数拥V1DI0CMCAPT

6、UR等待-帧数据完成*战入緩冲区vinrocsYNC黄闭观频设备CLOSE嵌入式WE詁服务器视额楼输服务器启动Jwebplaver鎚示视频发起连按M数据左互客户端浏览器2.2视频传输模块本系统支持多个客户同时访问,所以为每个连接的客户端创建一个线程,专门负责与客户端进行数据交互。首先调用socket()创建套接口,然后bind()绑定7000端口到该套接口,调用listen()监听该套接口,等待客户端的连接,最后调用accept()与客户端建立连接。视频传输模块的流程如图3:下面给出创建线程的关键代码:while(signalquit)/如果没有退出信号就一直运行下去/*等待客户端的连接,如果

7、没有连接就一直阻塞下去,如果有客户连接就创建一个线程,在新的套接口上与客户端进行数据交互*/if(new_sock=accept(serv_sock,(structsockaddr*)&their_addr,&sin_size)=-1)continue;pthread_create(&server_th,NULL,(void*)service,&new_sock);线程函数server()主要是读缓冲区数据,写入套接口,同时读取套接口的数据,设置下一次采集图像的属性,这里就不再给出代码。3.嵌入式web服务器嵌入式web服务器就是把web服务器移植到嵌入式系统的服务器。它仍然是基于http文本

8、协议进行通信的,具有标准的接口形式,对客户端来说,访问嵌入式web服务器就和访问普通的web服务一样Boa是一个小巧的web服务器,可执行代码只有70KB,占用的系统资源少,速度快安全性能高,本系统采用的就是boa服务器,下载源码解压后,需要修改makefile文件,把其中变量CC的值改成arm-linux-gcc,LD改成armTinux-ld,然后make就可以生成boa应用程序了,下载boa和boa.conf到开发板上,然后根据开发板文件系统,修改boa.conf配置文件,比如日志路径,web根目录等,把web页面放入根目录,boa通过读取配置文件里的根目录内容,就可以返回用户请求的we

9、b页面了。本系统的Web页面用HTML语言设计,如果想通过该web页面传输视频数据,需要一个applet小程序7,该程序通过HTML语言中的applet标记引入,下面是引入applet程序的代码:/c-ICodebase和code属性给出applet类的完整路径,align是applet窗口显示的位置,width和height是applet窗口的大小,Port是服务器端的视频采集程序的绑定端口,Server是服务器地址的值,不过是在JWebcamPlayer.java程序中通过gethost()得到,所以这里设置为空。该applet程序调用JWebcamPlayer.jar包与服务器端的视频发

10、送线程进行数据交互,并在浏览器上显示视频。JWebcamPlayer程序获取端口传入的数据并解析,生成对象,输出到Frame对象中,完成视频播放,可以达到20fps的帧率。该applet小程序以及JWebcamPlayer.jar是保存在web服务器上的,当用户访问web服务器观看视频时,该程序自动装载到网页里,由用户的浏览器解释执行.Applet被调用时,自动执行JWebcamPlayer.jar包,该包首先进行一些socket和图像显示的初始化工作,比如上段说的得到服务器IP,端口,设置颜色值等,然后调用start()连接视频服务器,播放视频web服务器和客户端的交互图如图2所示。4系统试

11、验本系统的测试在局域网内进行。客户端使用的是WindowsXP操作系统,浏览器使用WindowsXP自带的IE浏览器,因为播放程序包含java控件,需要先安装JRE,让浏览器支持java控件。服务器端使用的是TE2440自带的Linux操作系统,把摄像头插入开发板的USB接口,通过网线把开发板接入本地局域网,通过串口终端把开发板IP设为本地地址:46,启动视频采集程序和web服务器。5结束语本文介绍了一种嵌入式web视频服务器系统的构建方法,该系统已经在S3C2440开发板上实现,可以在局域网内使用。对该系统稍加改进,比如加入视频编码,流控制等,即可实现远程的视频通信。在项目开发周期中,企业考虑最多的便是所需要投入的研发人员数量以及由此所产生的人力资源费用。在即时通讯领域,如果企业组建团队全部自己来开发,将会遇到多方面的困难,其中包括:1)、所涉及到的技术面较多,包括音视频采集、编解码、流媒体传输、P2P技术、混音技术等,组建一个团队需用多方面的人才;2)、所涉及到的技术都是底层技术,要求团队成员有非常丰富的开发经验,而且需要对底层技术有

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论