新聞中心

        EEPW首頁 > 專題 > 基于ARM的移動(dòng)視頻監(jiān)控系統(tǒng)

        基于ARM的移動(dòng)視頻監(jiān)控系統(tǒng)

        ——
        作者: 時(shí)間:2011-08-12 來源:現(xiàn)代電子技術(shù) 收藏
        3.2.1 流媒體服務(wù)器的設(shè)計(jì)
            流媒體服務(wù)器主程序用于開放某個(gè)視頻服務(wù)器端口,并不斷監(jiān)聽端口,如有連接請求則建立連接,建立后流媒體服務(wù)進(jìn)程將不斷向端口提供采集到的視頻數(shù)據(jù)流同時(shí)也接收客戶端發(fā)送過來的視頻調(diào)節(jié)命令參數(shù)。流媒體服務(wù)器主程序流程圖如圖3所示。

         

        本文引用地址:http://www.104case.com/article/122457.htm


            (1)采集視頻數(shù)據(jù)
            系統(tǒng)是在Linux系統(tǒng)平臺上采用Video4Linux編程來采集視頻的。一般攝像頭是直接讀視頻設(shè)備,采集到視頻數(shù)據(jù)并存在文件中。對文件進(jìn)行操作,這樣程序運(yùn)行效率會很低。本系統(tǒng)摒棄這種方法,采用mmap(內(nèi)存映射)方式截取視頻數(shù)據(jù)。mmap()系統(tǒng)調(diào)用使得進(jìn)程之間通過映射同一個(gè)普通文件實(shí)現(xiàn)共享內(nèi)存。普通文件被映射到進(jìn)程地址空間后,進(jìn)程可以向訪問普通內(nèi)存一樣對文件進(jìn)行訪問,不必再調(diào)用read(),write()等操作。采用共享內(nèi)存通信的一個(gè)顯而易見的好處是效率高,因?yàn)檫M(jìn)程可以直接讀寫內(nèi)存,而不需要任何數(shù)據(jù)的拷貝。

            (2)傳輸視頻數(shù)據(jù)
            本系統(tǒng)通過網(wǎng)絡(luò)傳輸視頻數(shù)據(jù),用套接字(Socket)編程實(shí)現(xiàn)。

            (3)采集線程與傳輸線程同步
            流媒體服務(wù)器的設(shè)計(jì)有個(gè)關(guān)鍵點(diǎn):保證連續(xù)不斷的視頻流。針對這一點(diǎn),本系統(tǒng)采用多線程編程,采集和傳輸并行執(zhí)行。用互斥量和標(biāo)志位來實(shí)現(xiàn)采集線程和傳輸線程的同步。
            采集數(shù)據(jù)時(shí)給互斥量加鎖,直到當(dāng)前幀采集完并填充完當(dāng)前幀頭結(jié)構(gòu)體才解鎖互斥量,再開始傳輸。同理,傳輸當(dāng)前幀時(shí)采集線程等待,直到當(dāng)前幀傳輸完。采集完兩幀數(shù)據(jù)傳輸?shù)诙鬏斖瓿珊螅杉甑谌龓瑐鬏數(shù)谌龓R来搜h(huán),采集完第N幀傳輸?shù)贜幀。此時(shí)實(shí)際只傳輸了第2幀到第N幀,即N-1幀。
            用戶的視覺反應(yīng)需要時(shí)間,此丟棄第一幀的設(shè)計(jì)思想并不會使畫面失真。反而連續(xù)不斷的視頻流傳輸?shù)娇蛻舳藶橛脩裟軌颢@得良好的視頻質(zhì)量打下了基礎(chǔ)。
            采集線程:



        3.2.2 動(dòng)態(tài)網(wǎng)頁的設(shè)計(jì)
            Web服務(wù)器是Web服務(wù)器簡化后的專用系統(tǒng)。本系統(tǒng)選用適合系統(tǒng)的Boa Web服務(wù)器。Boa是一個(gè)單任務(wù)的HTTP服務(wù)器,支持能夠?qū)崿F(xiàn)動(dòng)態(tài)Web技術(shù)的Java Script技術(shù),源代碼開放,性能高。同時(shí)服務(wù)器本身所占空間很小,因而十分適用于嵌入式系統(tǒng)。
            鑒于Boa移植技術(shù)已經(jīng)很成熟,故不詳細(xì)討論。
            Applet是能夠嵌入到一個(gè)HTML頁面中,且可通過Web瀏覽器下載和執(zhí)行的一種Java類。它是Java技術(shù)容器(container)的一種特定類型。Applet可以通過網(wǎng)絡(luò)傳輸,由瀏覽器自動(dòng)裝載并執(zhí)行。這恰恰非常符合本系統(tǒng)的要求,因此選用Applet來很好地實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁,打開網(wǎng)頁就可以看到視頻數(shù)據(jù),方便快捷。
            (1)設(shè)計(jì)流程
            Applet不能單獨(dú)運(yùn)行,需要嵌入在網(wǎng)頁中借助瀏覽器的解釋。必須要?jiǎng)?chuàng)建一個(gè)HTML文件來告訴瀏覽器需裝載什么以及如何運(yùn)行它。其執(zhí)行順序如下:
            ①瀏覽器裝入U(xiǎn)RL;
            ②瀏覽器裝入HTML文檔;
            ③瀏覽器裝入Applet類;
            ④瀏覽器運(yùn)行Applet。
            本系統(tǒng)Java Applet實(shí)現(xiàn)三個(gè)功能:視頻數(shù)據(jù)通過Socket傳送到客戶端顯示;將客戶端調(diào)節(jié)視頻帶參數(shù)發(fā)送到服務(wù)器;將客戶端點(diǎn)擊的運(yùn)動(dòng)控制參數(shù)發(fā)送到服務(wù)器。其中init和start函數(shù)在Applet開始執(zhí)行時(shí)調(diào)用,通過start創(chuàng)建2個(gè)線程:用于socket通信;提供用戶界面顯示視頻和相應(yīng)用戶操作。用戶界面設(shè)計(jì)用到Sun的SwingWorker類庫。
            (2)雙緩沖技術(shù)
            雙緩沖技術(shù)主要應(yīng)用于屏幕閃爍現(xiàn)象的消除。在一幀圖像的繪制過程中,如果一幀圖像的繪制時(shí)間大于屏幕的刷新時(shí)間,就會造成視覺上不連貫的效果。繪制時(shí)可在內(nèi)存中建立兩個(gè)圖形緩沖區(qū),其中一個(gè)緩沖區(qū)(前臺)用于存放顯示的當(dāng)前幀,并在屏幕上顯示;同時(shí)在另一個(gè)緩沖區(qū)中完成下一幀的繪制。因?yàn)楫嬅娴睦L制過程是在用戶不可見的情況下進(jìn)行,自然也就消除了這種閃爍現(xiàn)象。
            為了保證用戶的觀看質(zhì)量,本系統(tǒng)在動(dòng)態(tài)網(wǎng)頁的設(shè)計(jì)中引入這種雙緩沖技術(shù)。采用Java語言中component類的一個(gè)可用于創(chuàng)建圖形緩沖區(qū)的方法createImage(int width,int height),其參數(shù)為繪制區(qū)域的大小。該方法返回一個(gè)大小為繪制區(qū)域的Image對象。調(diào)用該對象的getGraphics()方法得到一個(gè)GraphiCS對象,將它視為后臺的Graphics對象。此后,可調(diào)用Graplaics類的各種繪圖方法,以繪制所需的畫面。此時(shí),所有的操作都是在后臺的Image對象中進(jìn)行的,并沒有顯示到屏幕上。當(dāng)繪制完成后,再調(diào)用前臺Graphics對象的drawlmage(Image img,int x,int y,ImageObserver observer)方法將已準(zhǔn)備好的Image顯示到屏幕上。其中Image參數(shù)就是createImage方法所返回后臺的Image對象,ImageObserver參數(shù)是與前臺Graphics對象相關(guān)的Component對象或其派生類對象。

         

        4 系統(tǒng)測試
            在PXA270上搭建Boa,將Java Applet小程序編譯后生成的.class執(zhí)行文件、HTML腳本index.html及相關(guān)文件拷貝到/var/www/下。將編譯好的流媒體服務(wù)器的二進(jìn)制文件下載到PXA270上。加載攝像頭和無線網(wǎng)卡驅(qū)動(dòng),運(yùn)行boa,再運(yùn)行流媒體服務(wù)器。在PC端打開瀏覽器輸入pxa270的IP地址,就可以看到網(wǎng)頁監(jiān)控的畫面,畫面清晰且視頻流暢,如圖4所示。


        5 結(jié) 語
            本文充分利用多媒體技術(shù)和嵌入式技術(shù)各自的特點(diǎn),介紹了一種用ARM實(shí)現(xiàn)移動(dòng)的方法,給出了軟硬件設(shè)計(jì)結(jié)構(gòu)及無線網(wǎng)卡驅(qū)動(dòng)的具體實(shí)現(xiàn)過程。設(shè)計(jì)了流媒體服務(wù)器,搭建了Boa作為Web服務(wù)器及實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)頁。利用無線網(wǎng)卡免去了布線的煩惱;利用B/S結(jié)構(gòu)使得可以通過瀏覽器來監(jiān)控,實(shí)現(xiàn)跨平臺監(jiān)視;利用雙緩沖技術(shù),實(shí)現(xiàn)較高的視頻質(zhì)量。基于ARM的移動(dòng)系統(tǒng)使得操作簡單,攜帶方便,可靠性高,成本低,具有良好的開發(fā)及應(yīng)用前景。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

        上一頁 1 2 下一頁

        關(guān)鍵詞: 嵌入式 視頻監(jiān)控 USB

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 江永县| 张家口市| 南安市| 新昌县| 聊城市| 贵定县| 乳源| 惠安县| 乐业县| 临沭县| 梨树县| 离岛区| 天等县| 虎林市| 乐都县| 汝南县| 嘉祥县| 景东| 屯昌县| 武邑县| 咸宁市| 唐海县| 建瓯市| 海丰县| 麻阳| 翁源县| 盖州市| 建阳市| 夏邑县| 合山市| 华宁县| 汾西县| 三明市| 炎陵县| 夏邑县| 江阴市| 西藏| 元阳县| 永新县| 开原市| 金塔县|