<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 消費(fèi)電子 > 設(shè)計(jì)應(yīng)用 > 嵌入式MPEG-2遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)

          嵌入式MPEG-2遠(yuǎn)程網(wǎng)絡(luò)視頻監(jiān)控系統(tǒng)的實(shí)現(xiàn)

          ——
          作者:王海波 李賓等 時(shí)間:2006-10-09 來(lái)源:?jiǎn)纹瑱C(jī)及嵌入式系統(tǒng)應(yīng)用 收藏
          1 系統(tǒng)介紹

          Vstar 系列遠(yuǎn)程數(shù)字視頻監(jiān)控系統(tǒng)是一個(gè)基于TCP/IP的嵌入式遠(yuǎn)程系統(tǒng),采用嵌入式設(shè)計(jì)方案,系統(tǒng)穩(wěn)定性高,采用視頻壓縮技術(shù),圖像高清晰,畫(huà)質(zhì)可達(dá)DVD效果,能夠?qū)崿F(xiàn)單畫(huà)面輪流監(jiān)看和1~16個(gè)畫(huà)面同屏監(jiān)看,支持遠(yuǎn)程和本地云臺(tái)控制,支持多任務(wù)工作方式,而且圖像存儲(chǔ)、監(jiān)看、遠(yuǎn)程控制可同步進(jìn)行,監(jiān)控距離隨延伸而不斷加長(zhǎng)。該系統(tǒng)分為遠(yuǎn)程現(xiàn)場(chǎng)、通信和監(jiān)控服務(wù)三部分,結(jié)構(gòu)圖如圖1所示。

          數(shù)字視頻監(jiān)控系統(tǒng)結(jié)構(gòu)圖

          遠(yuǎn)程現(xiàn)場(chǎng)部分和監(jiān)控服務(wù)部分都安裝了圖像處理設(shè)備和有線網(wǎng)絡(luò)接口設(shè)備,軟件采用客戶/服務(wù)器(client/server)結(jié)構(gòu),在遠(yuǎn)程現(xiàn)場(chǎng)的有線網(wǎng)絡(luò)接口上運(yùn)行的是服務(wù)器端軟件,監(jiān)控中心運(yùn)行客戶端軟件。遠(yuǎn)程現(xiàn)場(chǎng)的軟件在系統(tǒng)啟動(dòng)后要向監(jiān)控中心注冊(cè),作為一個(gè)監(jiān)控系統(tǒng),必須有監(jiān)控點(diǎn)的名稱、監(jiān)控點(diǎn)的特性描述的內(nèi)容。監(jiān)控中心在認(rèn)證該監(jiān)控點(diǎn)之前,為了避免與已經(jīng)存在的監(jiān)控點(diǎn)名稱相同造成混淆,必須先檢測(cè)網(wǎng)上是否已經(jīng)存在名稱相同的監(jiān)控點(diǎn),如果有,則會(huì)提醒用戶更換名稱。在通過(guò)權(quán)限認(rèn)證后,客戶端可以通過(guò)網(wǎng)絡(luò)與服務(wù)器端建立TCP/IP連接,兩端的通信包括圖像數(shù)據(jù)和控制指令通信,客戶端可以在權(quán)限允許范圍內(nèi)根據(jù)需要通過(guò)監(jiān)控中心來(lái)調(diào)節(jié)服務(wù)器端的參數(shù)設(shè)置和工作方式,服務(wù)器端則向客戶端發(fā)送經(jīng)過(guò)編碼處理后的MPEG-2視頻碼流。

          客戶端軟件運(yùn)行在監(jiān)控中心的PC上,提供相應(yīng)的用戶控制接口。用戶可以通過(guò)網(wǎng)絡(luò)與服務(wù)器端建立不同類型的連接,從而獲取不同的服務(wù)。服務(wù)器端軟件運(yùn)行在遠(yuǎn)程現(xiàn)場(chǎng)PC104上,它的功能比較豐富,包括硬件的驅(qū)動(dòng)控制、通信線路管理、圖像數(shù)據(jù)傳輸、系統(tǒng)控制、攝像頭和云臺(tái)調(diào)節(jié)等等。

          2 系統(tǒng)硬件設(shè)計(jì)    

          硬件核心部分是MPEG-2視頻處理設(shè)備的設(shè)計(jì),圖2中簡(jiǎn)單介紹了MPEG-2硬件視頻壓縮處理的結(jié)構(gòu)。MPEG-2視頻采集壓縮模塊以富士通MB86390芯片為核心,完成對(duì)標(biāo)準(zhǔn)視頻信號(hào)(PAL或NTSC信號(hào))的A/D轉(zhuǎn)換、MPEG-2壓縮以及與PC104主機(jī)之間的通信功能。圖2中視頻解碼A/D從攝像頭輸入的模擬視頻信號(hào)轉(zhuǎn)化為數(shù)字視頻信號(hào),然后進(jìn)行編碼預(yù)處理,編碼預(yù)處理是將接收的視頻信號(hào)處理為規(guī)定的格式,即,把視頻解碼輸出的CCIR601格式的信號(hào)轉(zhuǎn)化為編碼器可以處理的CIF或QCIF格式,然后再進(jìn)行MPEG-2壓縮編碼。圖中的SRAM用來(lái)作為編碼所需的幀存和存儲(chǔ)編碼完成后的碼流數(shù)據(jù)。PC104上的軟件則通過(guò)總線接口單元來(lái)控制編碼器的參數(shù)設(shè)置,及讀取編碼壓縮后的碼流數(shù)據(jù)。該模塊包括以下功能單元:以SAA6252為核心的視頻A/D單元,以MB86390為核心的MPEG-2視頻壓縮單元,以AT89C51與EPM7128(EPLD)為核心構(gòu)成的控制邏輯和總線接口單元。總線接口單元是在EPLD中實(shí)現(xiàn)的,它是本模塊與主機(jī)(PC104)進(jìn)行交互的通道,可以和主機(jī)進(jìn)行視頻碼流和控制數(shù)據(jù)的交換。控制邏輯是視頻采集壓縮模塊的核心,它控制并協(xié)調(diào)各模塊的工作,提供控制信號(hào),通過(guò)EPLD編程實(shí)現(xiàn)系統(tǒng)各模塊所需要的選通、緩沖、讀/寫(xiě)使能,以及數(shù)據(jù)總線和地址總線的切換等等。

          mpeg-2硬件視頻壓縮處理的結(jié)構(gòu)

          鏡頭云臺(tái)控制是通過(guò)PC104主機(jī)的RS232口進(jìn)行的,允許用戶根據(jù)自己的要求調(diào)節(jié)系統(tǒng)。用戶可以通過(guò)調(diào)節(jié)鏡頭的景深(zoom)、焦距(focus)以及光圈(iris)來(lái)調(diào)整圖像質(zhì)量,還可以通過(guò)云臺(tái)的上下左右調(diào)節(jié)來(lái)獲取不同角度的圖像。由監(jiān)控中心的Client端軟件通過(guò)SOCKET網(wǎng)絡(luò)接口,把調(diào)整信息發(fā)送給Server端,Server接收到控制指令后,進(jìn)行指令識(shí)別,然后向?qū)?yīng)的RS232口發(fā)送指令去控制云臺(tái),完成調(diào)整任務(wù)。

          3 系統(tǒng)軟件設(shè)計(jì)    

          傳統(tǒng)的應(yīng)用程序都是單線程的,即,在程序運(yùn)行期間,由單個(gè)線程獨(dú)占CPU的控制。在這種情況下,程序在執(zhí)行一些比較費(fèi)時(shí)的任務(wù)時(shí),就無(wú)法及時(shí)響應(yīng)用戶的操作,影響了應(yīng)用程序的實(shí)時(shí)性能。在監(jiān)控系統(tǒng),特別是遠(yuǎn)程監(jiān)控系統(tǒng)中,應(yīng)用程序往往不但要及時(shí)把監(jiān)控對(duì)象的最新信息反饋給監(jiān)視客戶(通過(guò)圖形顯示),還要處理本地機(jī)與遠(yuǎn)程機(jī)之間的通信以及對(duì)控制對(duì)象的實(shí)時(shí)控制等任務(wù),這時(shí),僅僅由單個(gè)線程來(lái)完成所有任務(wù),顯然無(wú)法滿足監(jiān)控系統(tǒng)的實(shí)時(shí)性要求。為此,可引進(jìn)多線程機(jī)制,主線程專門負(fù)責(zé)消息的響應(yīng),使程序能夠響應(yīng)命令和其他事件。輔助線程可以用于完成其他比較費(fèi)時(shí)的工作,如通信、圖形顯示和后臺(tái)打印等,這樣就不至于影響主線程的運(yùn)行??傊讯嗑€程機(jī)制引進(jìn)通信,有利于提高應(yīng)用程序的實(shí)時(shí)性,充分利用系統(tǒng)資源。對(duì)于大型的工程應(yīng)用來(lái)說(shuō),不同的線程完成不同的任務(wù),也有利于提高程序的模塊化,便于維護(hù)和擴(kuò)展?!   ?

          軟件采用了Client/Server結(jié)構(gòu),兩端通過(guò)網(wǎng)絡(luò)建立TCP/IP連接,按照自定義的數(shù)據(jù)通信協(xié)議交換數(shù)據(jù),完成數(shù)據(jù)通信和系統(tǒng)控制的功能。監(jiān)控中心的客戶端向服務(wù)器端申請(qǐng)建立連接,服務(wù)器監(jiān)聽(tīng)到連接請(qǐng)求之后,和客戶端建立SOCKET連接,客戶端向服務(wù)器發(fā)送控制信號(hào),服務(wù)器端向客戶端發(fā)送視頻碼流?!   》?wù)器端軟件運(yùn)行在PC104上,編碼部分由于采用了硬件壓縮,不占用PC104的系統(tǒng)資源,所以,合理設(shè)計(jì)PC104上運(yùn)行的服務(wù)器軟件結(jié)構(gòu),對(duì)于提高整個(gè)系統(tǒng)的工作效率有著重要的意義,系統(tǒng)性能也與之密切相關(guān)。軟件設(shè)計(jì)的主要思想如下:讀取線程,發(fā)送線程和控制線程之間的同步,防止有限資源的浪費(fèi)。

          在分析控制指令、碼流讀入、發(fā)送傳輸?shù)奶幚磉^(guò)程中,可能會(huì)存在時(shí)間冗余。以讀取碼流為例,系統(tǒng)從EPLD的FIFO中讀取視頻數(shù)據(jù),如果CPU讀取的速度比編碼器的速度快,可能會(huì)處于等待的編碼器硬件響應(yīng)狀態(tài)。此時(shí)雖然CPU被占用,但實(shí)際上系統(tǒng)沒(méi)有執(zhí)行有效的任務(wù),造成計(jì)算機(jī)系統(tǒng)資源的浪費(fèi),而嵌入式系統(tǒng)的資源本來(lái)就非常緊張。為了充分利用CPU計(jì)算能力,提高系統(tǒng)的整體性能,在該系統(tǒng)中采用多線程技術(shù)實(shí)現(xiàn)任務(wù)的調(diào)度?,F(xiàn)以遠(yuǎn)程現(xiàn)場(chǎng)數(shù)據(jù)處理過(guò)程為例分析如下:    

            (1)讀取線程:負(fù)責(zé)控制硬件,從編碼器中讀取圖像數(shù)據(jù)到主機(jī)內(nèi)存;

           ?。?)發(fā)送線程:負(fù)責(zé)視頻碼流的傳輸;

           ?。?)控制線程:負(fù)責(zé)云臺(tái)、攝像頭的控制以及編碼器的參數(shù)設(shè)置。    

          視頻傳輸中,在服務(wù)器端要求碼流讀取和發(fā)送互不干擾,避免讀取和發(fā)送相互等待或相互沖突的情況出現(xiàn),同樣,在客戶端解碼和接收也存在這個(gè)關(guān)系。本設(shè)計(jì)采用了一種基于環(huán)形緩沖區(qū)的多線程視頻傳輸技術(shù),較好地解決了這個(gè)問(wèn)題。主機(jī)的環(huán)形緩沖區(qū)除了達(dá)到數(shù)據(jù)分離互斥作用外,還可以起到平滑碼流的作用。讀取線程和發(fā)送線程是互斥關(guān)系,讀入的視頻數(shù)據(jù)供傳輸線程處理,這是一個(gè)簡(jiǎn)單的消費(fèi)者和生產(chǎn)者的關(guān)系問(wèn)題,只要不進(jìn)入臨界區(qū),兩個(gè)線程可以同時(shí)工作,用環(huán)形緩沖區(qū)和互斥鎖完全可以解決這兩個(gè)線程的同步問(wèn)題。線程之間通過(guò)同步實(shí)現(xiàn)了CPU時(shí)間片的合理分配,以及硬件訪問(wèn)管理、內(nèi)存緩沖區(qū)的訪問(wèn)管理等等,大大地提高了該系統(tǒng)的處理性能。    

          客戶端提供用戶的控制接口,用戶通過(guò)它要求各種服務(wù)。用戶可以連接到服務(wù)主機(jī),按照自己的要求改變系統(tǒng)的工作方式和工作狀態(tài)。最高權(quán)限可以調(diào)整服務(wù)器端的工作方式,修改系統(tǒng)的管理信息,獲取所有不同類型的服務(wù)。    

          系統(tǒng)定義了自己的指令系統(tǒng)和指令傳輸協(xié)議。指令可以分為以下幾類:工作控制(傳輸開(kāi)始、傳輸停止、存儲(chǔ)控制等),鏡頭云臺(tái)控制(焦距、光圈、自動(dòng)轉(zhuǎn)動(dòng)等),系統(tǒng)設(shè)置(用戶管理、通信參數(shù)設(shè)置等)。每條指令前面都有其唯一的識(shí)別標(biāo)志,服務(wù)器接收到后可以用來(lái)和其它指令進(jìn)行區(qū)分。服務(wù)器的IP固定,主線程在啟動(dòng)時(shí)創(chuàng)建了與監(jiān)控中心的Socket的連接,在指定的服務(wù)端口進(jìn)行監(jiān)聽(tīng),當(dāng)有用戶要求連接時(shí),為其創(chuàng)建指令通信線路連接,不同權(quán)限的用戶對(duì)系統(tǒng)有不同的控制權(quán)。從而實(shí)現(xiàn)了監(jiān)控中心對(duì)該系統(tǒng)的控制?!   ?

          監(jiān)控中心客戶軟件還支持圖像的存儲(chǔ)和回放。用戶可以將實(shí)際監(jiān)控中的圖像存儲(chǔ)在本地硬盤上,并按照不同的方式檢索回放。

          4 結(jié)束語(yǔ)

          Vstar MPEG-2系列遠(yuǎn)程數(shù)字監(jiān)控系統(tǒng)支持標(biāo)準(zhǔn)視頻信號(hào)和高分辨率的圖像采集、壓縮,支持基于Internet的數(shù)據(jù)傳輸,C/S的結(jié)構(gòu)體系允許用戶進(jìn)行遠(yuǎn)端操作系統(tǒng)的工作方式。系統(tǒng)的各個(gè)子模塊相對(duì)獨(dú)立,可以實(shí)現(xiàn)以下功能:

          (1)實(shí)時(shí)性:MPEG-2編碼設(shè)備可確保數(shù)字視頻信號(hào)實(shí)時(shí)傳輸與接收。保證監(jiān)控中心接收到的監(jiān)視信息與現(xiàn)場(chǎng)情況不存在不可接受的時(shí)差;

          (2)連續(xù)性:基于嵌入式技術(shù)的MPEG-2編解碼設(shè)備可確保PAL制視頻的幀速率為:25幀/秒,NTSC制為30幀/秒。并確保監(jiān)控中心看到的圖像清晰可辨以及通信暢通,全天候不間斷可靠運(yùn)行。

          (3)可控性:監(jiān)控中心可遠(yuǎn)程對(duì)各個(gè)分中心圖像進(jìn)行取舍和控制。系統(tǒng)參數(shù)設(shè)置方便快捷,可以對(duì)視頻源的任何參數(shù)進(jìn)行設(shè)置,并可實(shí)現(xiàn)帶寬的動(dòng)態(tài)調(diào)整。

          (4)可擴(kuò)展性:可以根據(jù)實(shí)際情況修改系統(tǒng)結(jié)構(gòu),系統(tǒng)規(guī)模的擴(kuò)展只需增加相應(yīng)的編解碼器,中心的控制功能具有可擴(kuò)展性,可與辦公自動(dòng)化網(wǎng)絡(luò)聯(lián)接,實(shí)現(xiàn)多址異地分控;中心的功能也可擴(kuò)展,還可在適當(dāng)增加編解碼器的情況下實(shí)現(xiàn)遠(yuǎn)程視頻會(huì)議功能,從而滿足不同方面的需要。

          該系列遠(yuǎn)程數(shù)字監(jiān)控系統(tǒng)目前已經(jīng)在銀行監(jiān)控、高速公路監(jiān)控、地圖航拍、家用監(jiān)控等方面有著廣泛的應(yīng)用。

          參考文獻(xiàn)

          1 余兆明,李曉飛,陳來(lái)春編著.?dāng)?shù)字電視設(shè)備及測(cè)量.北京:人民郵電出版社,2000

          2 Stevens.TCP/IP詳解——協(xié)議.北京:機(jī)械工業(yè)出版社,2000

          3 王學(xué)龍編著.嵌入式Linux系統(tǒng)設(shè)計(jì)與應(yīng)用.北京:清華大學(xué)出版社,2001



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();