快速业务通道

嵌入式Linux的web视频服务器的构建

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-04-04

随着嵌入式处理器和开源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 .

(1) 设备的初始化

调用 open 打开设备,利用 ioctl()对设备进行控制,比如设置对比度、亮度、调色板, 访问模式等等.主要代码如下:

int fd = 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))即可,本程序初始化全部采用默认值 */

(2)采集图像

本系统使用内存映射的方式采集图像,线程采集函数grab()主要代码如下:

/* 分配一段内存,存放采集到的图像数据 */
vd->pFramebuffer =(unsigned char *) mmap (0, vd->videombuf.size, PROT_READ| PROT_WRITE,MAP_SHARED, vd->fd, 0);
for(;;)
{
/* 开始截取一帧图像,使用内存映射的方式*/
if ((ioctl (vd->fd, VIDIOCMCAPTURE, &(vd->vmmap))) < 0)
{
perror ("vidiocmcapture errorn");
erreur = -1;
}
/* 等待一帧数据采集完毕,采集到的图像数据就放到了 vd->pFramebuffer 起始的内存地址内,大小为vd->videombuf.size 字节 */
if (ioctl (vd->fd, VIDIOCSYNC, &vd->vmmap.frame) < 0)
{
perror ("vidiocsync errorn");
erreur = -1;
}
}

然后在main 函数中创建采集线程,pthread_create (&w1, NULL, (void *) grab, NULL); 该线程一直运行,不断采集图像数据,同时把数据放到缓冲区内,发送线程从缓冲区读取视频数据.


2.2 视频传输模块

本系统支持多个客户同时访问,为每个连接的客户端创建一个线程,专门负责与客户端进行数据交互.调用 socket()创建套接口,然后bind()绑定7000 端口到该套接口,调用 listen()监听该套接口,等待客户端的连接,调用 accept()与客户端建立连接.视频传输模块的流程如图3:

下面给出

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号