新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 嵌入式視頻監控系統設計方案

        嵌入式視頻監控系統設計方案

        作者: 時間:2013-02-19 來源:網絡 收藏

        2.3 視頻流網絡傳輸的實現

        本系統視頻的網絡傳輸是基于面向連接的TCP協議來實現。TcP/IP協議數據傳輸可分為3個階段:建立連接,傳輸數據,斷開連接[6]。首先服務器通過socket()函數創建套接字,使用bind()函數將創建好的套接字與端口綁定,然后調用listen()函數使服務器處于監聽狀態,等待客戶端應用程序的連接請求??蛻舳藨贸绦蛲ㄟ^打開一個socket即套接字,來使用TCP服務。當服務器接收到用戶的連接請求后,服務器調用accept()函數建立雙方連接,響應客戶的請求,并創建新線程,該線程負責把數據發送給用戶。

        3 嵌入式Web服務器的設計

        目前,B/S模式的網絡結構因其具有先進的開發技術、優越的可管理性和可維護性,以及模式簡單方便等優點而成為最流行的應用方式"]。本系統采用的正是該結構,因而用戶通過嵌入式Web服務器,使用IE瀏覽器即可遠程訪問嵌入式設備,實現對現場的遠程監。

        Boa是Linux支持web服務器之一,它是一個單任務的http服務器,具有代碼結構簡單、支持動態CGI、“p服務,并且源代碼開放等優點,因而特別適合在嵌入式系統中用做web服務器n]。從網上下載其源代碼Boa—o.94.13.tar.gz,其在本系統上的移植主要包括2個部分:src下的文件修改和config文件修改。

        boa—o.94.13/src文件的修改:首先設置boa—o.94/Makefile文件中的編譯器變量:CC=/arm一1inux-gcc,CPP一/arnl_linux—gcc_E;并修改編譯方式:LDFLAGS=一g—static。然后在文件compat.h中找到宏定義#defineTIMEz0NELOFFSET(foo)foo##一>tm—gmtoff并修改為#define TIMEZONE一0FFSET(foo)f00->tm—gmtoff。接著便可在boa—o.94/src/下執行make進行編譯,從而得到的可執行程序為boa,使用串口將其下載到目標機上,完成移植。

        boa—O。94/boa.conf文件的修改,由于boa必須以root身份啟動,所以將User nobody修改為User mot,Groupnogroup修改為Group r00t,即賦予管理員權限;修改服務器名字,即將ServerName www.your.org.here修改為serverName sm2440;修改DocumentRoot/var/www為
        DocumentRoot/home/web,即設置HTML文檔的主目錄為/home/web;最后指明nime.types文件位置為Mime—Types/etc/milne.types;其他采用默認設置即可。最后將boa-0.94/boa.conf拷貝到/etc/boa/目錄下,配置好Web服務器,就可以進行遠程訪問了。

        4 實現客戶端視頻數據接收應用程序

        本系統的web客戶端采用Java Applet為用戶提供一個管理人口和顯示界面,Java Applet程序嵌入于HTML文檔并能在標準的瀏覽器中顯示運行,這種方式不用專門的開發軟件與網絡接口,是基于web網絡應用程序的理想選擇。本系統需要在顯示頁面中嵌入播放器程序實時播放前端獲取的監控視頻。其中視頻數據接收是客戶端軟件設計的關鍵,其實現如下:

        首先建立網絡通信,即創建套接字,輸入輸出流。然后分配接收緩沖區,即:byte[]buffer—new byte[5 12*1024];

        之后讀取圖像的頭信息,并確認圖像數據的正確性,即:int n=in.r∞d(bu“er,O,HDRLEN);

        其中HDRLEN為信息頭長度,設置為50 B大小,通過對頭信息中包含的約定字符進行判斷,以確定是進一步接收圖像數據,還是重新接收頭信息。如果能正確讀取圖像頭信息,就證明此次接收的視頻數據流是正確的,接著就可以把頭信息后的圖像數據寫入緩沖區,供播放顯示:
        n=HDRLEN;

        r—in.read(buffer,n,buffer.1ength-n);由于視頻流緩沖區內接收的幅靜態圖像數據包含了圖像頭信息,因此需要將圖像數據拷貝到另一緩沖區內,以獲得單獨的圖像數據:

        byte[]buffeLimage=new byte[n];.
        for(int i一0;in;i++)
        buffer.image[i]=buffer[i+HDRLEN]I

        接著從緩沖區buffer-image中讀人數據:

        BufferedImage imagedata=
        Imagel0.read(new ByteArrayInputStream(buffer—image)),
        ImageIcon image—icon=new Image Icon(imageedate m-label.set Icon(image—icon),

        系統通過循環,實現不斷讀取,顯示圖像數據,用戶便可從主頁面上獲取前端采集到的實時視頻監控數據,畫面流暢,無明顯延時和畫面停滯現象,達到監控目的。

        5 結束語

        目前,嵌入式產品方興未艾口”。本文提出的這套嵌入式設計方案,采用性價比很高的ARM處理器與開源操作系統Linux相結合,具有高穩定性、低成本、低功耗等諸多優點,并且基于B/S模式,直接接入以太網,大量節省電纜開銷,即插即用,實現跨平臺監控,為用戶提供了極大便利。本系統很好地體現了智能化、集成化、網絡化、跨平臺等優點,可廣泛用于智能家居、智能交通、工廠等制造單位及需實時監控場所。

        蜂鳴器相關文章:蜂鳴器原理

        上一頁 1 2 下一頁

        關鍵詞: 視頻監控系統 S3C2440 網絡化程度

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临西县| 湟源县| 绍兴市| 巴塘县| 富宁县| 万宁市| 岳阳市| 杂多县| 塔河县| 布尔津县| 苍溪县| 东辽县| 河源市| 肃宁县| 丹东市| 浏阳市| 西和县| 呼和浩特市| 凤庆县| 山丹县| 宽城| 手游| 嘉荫县| 吉安市| 博罗县| 当雄县| 大新县| 自治县| 云阳县| 即墨市| 河南省| 柘荣县| 土默特右旗| 永新县| 广灵县| 隆昌县| 栾城县| 武功县| 丹巴县| 朝阳区| 张家界市|