嵌入式Linux的web视频服务器的构建
随着嵌入式处理器和开源Linux 的广泛应用,各种视频服务在嵌入式系统中逐渐发展起来. 1.引言 随着多媒体技术、视频压缩编码技术、网络通讯技术的发展,数字视频服务器逐渐发展起来.近年来随着嵌入式处理器和开源Linux 的广泛应用,视频服务已逐渐与嵌入式相结合.本文提出了一种嵌入式 web 视频服务器的构建方法,该系统以嵌入式 Linux 和 S3C2440 为核心平台;在这个平台上构建 web 服务器和视频服务器,客户可以直接通过浏览网页的方式观看视频. 2.视频采集传输模块的构建 本系统采用的硬件平台是基于 ARM920T架构的嵌入式开发板 S3C2440,CPU 主频400MHz,该开发板集成了64MB 32 位的 SDRAM 和 64MB 的NANDFLASH,三个USB host 口,3 路UART,4 路DMA,一个采用CS8900Q3 以太网控制芯片的10M 网络接口等.摄像头采用中星微301 芯片的USB 摄像头.本系统软件部分由视频采集传输模块和web 服务器组成. 2.1 视频采集模块 在进行视频采集前需要先安装驱动,video4Linux 是 Linux 中关于视频设备的内核驱动,它为针对视频设备的应用程序编程提供统一的编程接口.本系统的 S3C2440 开发板自带的是Linux2.6.12 内核,该内核编译时已加进关于视频设备的内核驱动Video4Linux[1].使用video4Linux 进行采集视频的流程图如图 1 . 调用 open 打开设备,利用 ioctl()对设备进行控制,比如设置对比度、亮度、调色板, 访问模式等等.主要代码如下: int fd = open(“/dev/v4l/video0”,O_RDWR); //打开设备 (2)采集图像 本系统使用内存映射的方式采集图像,线程采集函数grab()主要代码如下: /* 分配一段内存,存放采集到的图像数据 */ 然后在main 函数中创建采集线程,pthread_create (&w1, NULL, (void *) grab, NULL); 该线程一直运行,不断采集图像数据,同时把数据放到缓冲区内,发送线程从缓冲区读取视频数据.
本系统支持多个客户同时访问,为每个连接的客户端创建一个线程,专门负责与客户端进行数据交互.调用 socket()创建套接口,然后bind()绑定7000 端口到该套接口,调用 listen()监听该套接口,等待客户端的连接,调用 accept()与客户端建立连接.视频传输模块的流程如图3: 下面给出 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |