欧美三级国产三级日韩三级_亚洲熟妇丰满大屁股熟妇_欧美亚洲成人一区二区三区_国产精品久久久久久模特

嵌入式web的實(shí)現(xiàn) - 新聞資訊 - 云南小程序開發(fā)|云南軟件開發(fā)|云南網(wǎng)站建設(shè)-昆明葵宇信息科技有限公司

159-8711-8523

云南網(wǎng)建設(shè)/小程序開發(fā)/軟件開發(fā)

知識(shí)

不管是網(wǎng)站,軟件還是小程序,都要直接或間接能為您產(chǎn)生價(jià)值,我們?cè)谧非笃湟曈X表現(xiàn)的同時(shí),更側(cè)重于功能的便捷,營銷的便利,運(yùn)營的高效,讓網(wǎng)站成為營銷工具,讓軟件能切實(shí)提升企業(yè)內(nèi)部管理水平和效率。優(yōu)秀的程序?yàn)楹笃谏?jí)提供便捷的支持!

您當(dāng)前位置>首頁 » 新聞資訊 » 網(wǎng)站建設(shè) >

嵌入式web的實(shí)現(xiàn)

發(fā)表時(shí)間:2012-5-8

發(fā)布人:葵宇科技

瀏覽次數(shù):99

嵌入式Linux的web視頻服務(wù)器的構(gòu)建 2010-12-07 10:49:39 標(biāo)簽: 嵌入式Linux 視頻采集 linux web 服務(wù)器 休閑

隨著嵌入式處理器和開源Linux 的廣泛應(yīng)用,各種視頻服務(wù)在嵌入式系統(tǒng)中逐漸發(fā)展起來。

1.引言

隨著多媒體技術(shù)、視頻壓縮編碼技術(shù)、網(wǎng)絡(luò)通訊技術(shù)的發(fā)展,數(shù)字視頻服務(wù)器逐漸發(fā)展起來。近年來隨著嵌入式處理器和開源Linux 的廣泛應(yīng)用,視頻服務(wù)已逐漸與嵌入式相結(jié)合。本文提出了一種嵌入式 web 視頻服務(wù)器的構(gòu)建方法,該系統(tǒng)以嵌入式 Linux 和 S3C2440 為核心平臺(tái);在這個(gè)平臺(tái)上構(gòu)建 web 服務(wù)器和視頻服務(wù)器,客戶可以直接通過瀏覽網(wǎng)頁的方式觀看視頻。

2.視頻采集傳輸模塊的構(gòu)建

本系統(tǒng)采用的硬件平臺(tái)是基于 ARM920T架構(gòu)的嵌入式開發(fā)板 S3C2440,CPU 主頻400MHz,該開發(fā)板集成了64MB 32 位的 SDRAM 和 64MB 的NANDFLASH,三個(gè)USB host 口,3 路UART,4 路DMA,一個(gè)采用CS8900Q3 以太網(wǎng)控制芯片的10M 網(wǎng)絡(luò)接口等。攝像頭采用中星微301 芯片的USB 攝像頭。本系統(tǒng)軟件部分由視頻采集傳輸模塊和web 服務(wù)器組成。

2.1 視頻采集模塊

在進(jìn)行視頻采集前需要先安裝驅(qū)動(dòng),video4Linux 是 Linux 中關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng),它為針對(duì)視頻設(shè)備的應(yīng)用程序編程提供統(tǒng)一的編程接口。本系統(tǒng)的 S3C2440 開發(fā)板自帶的是Linux2.6.12 內(nèi)核,該內(nèi)核編譯時(shí)已加進(jìn)關(guān)于視頻設(shè)備的內(nèi)核驅(qū)動(dòng)Video4Linux[1]。使用video4Linux 進(jìn)行采集視頻的流程圖如圖 1 。

(1) 設(shè)備的初始化

調(diào)用 open 打開設(shè)備,利用 ioctl()對(duì)設(shè)備進(jìn)行控制,比如設(shè)置對(duì)比度、亮度、調(diào)色板, 訪問模式等等。主要代碼如下:

int fd = open(“/dev/v4l/video0”,O_RDWR); //打開設(shè)備
/* 獲取設(shè)備的基本信息(設(shè)備名稱、支持的最大最小分辨率、信號(hào)源信息等)*/
ioctl(vd->fd, VIDIOCGCAP, &(vd->capability)):
/* 獲取設(shè)備采集的圖象的各種屬性 /*
ioctl(vd->fd, VIDIOCGPICT, &(vd->picture));
/* 如果需要改變圖像的信息,先改變 picture 中的相應(yīng)的變量值,再調(diào)用 ioctl(vd->fd,
VIDIOCSPICT, &(vd->picture))即可,本程序初始化全部采用默認(rèn)值 */

(2)采集圖像

本系統(tǒng)使用內(nèi)存映射的方式采集圖像,線程采集函數(shù)grab()主要代碼如下:

/* 分配一段內(nèi)存,存放采集到的圖像數(shù)據(jù) */
vd->pFramebuffer =(unsigned char *) mmap (0, vd->videombuf.size, PROT_READ| PROT_WRITE,MAP_SHARED, vd->fd, 0);
for(;;)
{
/* 開始截取一幀圖像,使用內(nèi)存映射的方式*/
if ((ioctl (vd->fd, VIDIOCMCAPTURE, &(vd->vmmap))) < 0)
{
perror ("vidiocmcapture error\n");
erreur = -1;
}
/* 等待一幀數(shù)據(jù)采集完畢,采集到的圖像數(shù)據(jù)就放到了 vd->pFramebuffer 起始的內(nèi)存地址內(nèi),大小為vd->videombuf.size 字節(jié) */
if (ioctl (vd->fd, VIDIOCSYNC, &vd->vmmap.frame) < 0)
{
perror ("vidiocsync error\n");
erreur = -1;
}
}

然后在main 函數(shù)中創(chuàng)建采集線程,pthread_create (&w1, NULL, (void *) grab, NULL); 該線程一直運(yùn)行,不斷采集圖像數(shù)據(jù),同時(shí)把數(shù)據(jù)放到緩沖區(qū)內(nèi),發(fā)送線程從緩沖區(qū)讀取視頻數(shù)據(jù)。


2.2 視頻傳輸模塊

本系統(tǒng)支持多個(gè)客戶同時(shí)訪問,所以為每個(gè)連接的客戶端創(chuàng)建一個(gè)線程,專門負(fù)責(zé)與客戶端進(jìn)行數(shù)據(jù)交互。首先調(diào)用 socket()創(chuàng)建套接口,然后bind()綁定7000 端口到該套接口,調(diào)用 listen()監(jiān)聽該套接口,等待客戶端的連接,最后調(diào)用 accept()與客戶端建立連接。視頻傳輸模塊的流程如圖3:

下面給出創(chuàng)建線程的關(guān)鍵代碼:

while (signalquit) //如果沒有退出信號(hào)就一直運(yùn)行下去

{

/* 等待客戶端的連接,如果沒有連接就一直阻塞下去,如果有客戶連接就創(chuàng)建一

個(gè)線程,在新的套接口上與客戶端進(jìn)行數(shù)據(jù)交互 */
if ((new_sock = accept(serv_sock, (struct sockaddr *)&their_addr, &sin_size)) == -1)
{
continue;
}
pthread_create(&server_th, NULL, (void *)service, &new_sock);
}

線程函數(shù) server()主要是讀緩沖區(qū)數(shù)據(jù),寫入套接口,同時(shí)讀取套接口的數(shù)據(jù),設(shè)置下一次采集圖像的屬性,這里就不再給出代碼。

3.嵌入式web 服務(wù)器

嵌入式 web 服務(wù)器就是把 web 服務(wù)器移植到嵌入式系統(tǒng)的服務(wù)器。它仍然是基于http文本協(xié)議進(jìn)行通信的,具有標(biāo)準(zhǔn)的接口形式,對(duì)客戶端來說,訪問嵌入式 web 服務(wù)器就和訪問普通的web 服務(wù)一樣。Boa 是一個(gè)小巧的web 服務(wù)器,可執(zhí)行代碼只有70KB,占用的系統(tǒng)資源少,速度快安全性能高,本系統(tǒng)采用的就是boa服務(wù)器,下載源碼解壓后,需要修改makefile文件,把其中變量 CC 的值改成arm-linux-gcc,LD 改成arm-linux-ld,然后make 就可以生成boa 應(yīng)用程序了,下載boa 和boa.conf 到開發(fā)板上,然后根據(jù)開發(fā)板文件系統(tǒng),修改boa.conf配置文件,比如日志路徑,web 根目錄等,把web 頁面放入根目錄,boa 通過讀取配置文件里的根目錄內(nèi)容,就可以返回用戶請(qǐng)求的web 頁面了。

本系統(tǒng)的Web 頁面用HTML 語言設(shè)計(jì),如果想通過該web 頁面?zhèn)鬏斠曨l數(shù)據(jù),需要一
個(gè)applet 小程序[7],該程序通過HTML 語言中的applet 標(biāo)記引入,下面是引入applet 程序的

代碼:

<applet codebase="." archive="JWebcamPlayer.jar" code="JWebcamPlayer.class"
name="JWebcamPlayer" ID="JWebcamPlayer" align="center" width="400" height="400"
MAYSCRIPT>
<param name="Color" value="#ffffff">
<param name="Server" value="">
<param name="Port" value="7000">
<PARAM NAME="scriptable" value="true">
<PARAM NAME="mayscript" value="true">
</applet>

Codebase 和code 屬性給出applet 類的完整路徑,align 是applet 窗口顯示的位置,width和height 是applet 窗口的大小,Port 是服務(wù)器端的視頻采集程序的綁定端口,Server 是服務(wù)器地址的值,不過是在JWebcamPlayer.java 程序中通過gethost()得到,所以這里設(shè)置為空。該applet 程序調(diào)用 JWebcamPlayer.jar 包與服務(wù)器端的視頻發(fā)送線程進(jìn)行數(shù)據(jù)交互,并在瀏覽器上顯示視頻。

JWebcamPlayer 程序獲取端口傳入的數(shù)據(jù)并解析,生成對(duì)象,輸出到Frame 對(duì)象中,完成視頻播放,可以達(dá)到20fps 的幀率。

該applet 小程序以及JWebcamPlayer.jar 是保存在web 服務(wù)器上的,當(dāng)用戶訪問web 服務(wù)器觀看視頻時(shí),該程序自動(dòng)裝載到網(wǎng)頁里,由用戶的瀏覽器解釋執(zhí)行。Applet 被調(diào)用時(shí),自動(dòng)執(zhí)行JWebcamPlayer.jar 包,該包首先進(jìn)行一些 socket 和圖像顯示的初始化工作,比如上段說的得到服務(wù)器IP,端口,設(shè)置顏色值等,然后調(diào)用 start()連接視頻服務(wù)器,播放視頻。web 服務(wù)器和客戶端的交互圖如圖2 所示。

4.系統(tǒng)試驗(yàn)

本系統(tǒng)的測(cè)試在局域網(wǎng)內(nèi)進(jìn)行。客戶端使用的是 Windows XP 操作系統(tǒng),瀏覽器使用Windows XP 自帶的IE 瀏覽器,因?yàn)椴シ懦绦虬琷ava 控件,需要先安裝 JRE,讓瀏覽器支持java 控件。服務(wù)器端使用的是TE2440 自帶的Linux 操作系統(tǒng),把攝像頭插入開發(fā)板的USB 接口,通過網(wǎng)線把開發(fā)板接入本地局域網(wǎng),通過串口終端把開發(fā)板IP 設(shè)為本地地址:222.22.66.246 , 啟動(dòng)視頻采集程序和web 服務(wù)器 。

5.結(jié)束語

本文介紹了一種嵌入式 web 視頻服務(wù)器系統(tǒng)的構(gòu)建方法,該系統(tǒng)已經(jīng)在 S3C2440 開發(fā)板上實(shí)現(xiàn),可以在局域網(wǎng)內(nèi)使用。對(duì)該系統(tǒng)稍加改進(jìn),比如加入視頻編碼,流控制等,即可實(shí)現(xiàn)遠(yuǎn)程的視頻通信。在項(xiàng)目開發(fā)周期中,企業(yè)考慮最多的便是所需要投入的研發(fā)人員數(shù)量以及由此所產(chǎn)生的人力資源費(fèi)用。在即時(shí)通訊領(lǐng)域,如果企業(yè)組建團(tuán)隊(duì)全部自己來開發(fā),將會(huì)遇到多方面的困難,其中包括:1)、所涉及到的技術(shù)面較多,包括音視頻采集、編解碼、流媒體傳輸、P2P技術(shù)、混音技術(shù)等,組建一個(gè)團(tuán)隊(duì)需用多方面的人才;2)、所涉及到的技術(shù)都是底層技術(shù),要求團(tuán)隊(duì)成員有非常豐富的開發(fā)經(jīng)驗(yàn),而且需要對(duì)底層技術(shù)有較高的造詣,而且需要精通C++編程,否則項(xiàng)目的風(fēng)險(xiǎn)將不可控;3)、開發(fā)是一個(gè)長期的過程,企業(yè)將面臨居多的風(fēng)險(xiǎn),所需要的開發(fā)費(fèi)用將成為企業(yè)的負(fù)擔(dān)。使用AnyChat SDK可以讓企業(yè)關(guān)注自身的業(yè)務(wù)需求,由于AnyChat SDK支持VC++、Delphi、C#、VB.Net等開發(fā)語言,所以企業(yè)組織開發(fā)團(tuán)隊(duì)時(shí)可根據(jù)自身的研發(fā)力量靈活決策,以較小的人力資源投入獲得較高的收益。

相關(guān)案例查看更多