嵌入式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

提交評論