李曉偉,宋旭文
(西安電子科技大學(xué)電子工程學(xué)院,陜西西安 710071)
隨著人們安全防范意識(shí)的不斷增強(qiáng),視頻監(jiān)控系統(tǒng)以其直觀、方便、信息內(nèi)容豐富等優(yōu)點(diǎn)而廣泛應(yīng)用于金融、交通、公安、電力、賓館等領(lǐng)域。目前,市場(chǎng)上的監(jiān)控系統(tǒng)大多采用以太網(wǎng)作為傳輸媒介,因此在許多場(chǎng)合需要重新布線,而這樣必然導(dǎo)致成本的增加。電力線通信技術(shù)(Power Line Communication,PLC)是利用電力線網(wǎng)絡(luò)傳輸數(shù)據(jù)的一種通信方式。作為世界上覆蓋范圍最廣的網(wǎng)絡(luò),電力線作為視頻監(jiān)控系統(tǒng)的接入和傳輸媒介,具有無(wú)需額外布線、組網(wǎng)方便、成本低等優(yōu)點(diǎn)。目前,國(guó)際上已制定了電力線通信的相關(guān)標(biāo)準(zhǔn),如 14 Mbit·s-1的 HomePlug 1.0 標(biāo)準(zhǔn),85 Mbit·s-1的 HomePlug 1.0 Turbo 標(biāo)準(zhǔn)以及 200 Mbit·s-1的HomePlug AV標(biāo)準(zhǔn)[1],形成了一整套PLC技術(shù)標(biāo)準(zhǔn)體系,基本覆蓋了所有電力線通信的應(yīng)用領(lǐng)域。
本文提出了一種基于電力線通信技術(shù)的視頻監(jiān)控系統(tǒng),系統(tǒng)分為前端視頻服務(wù)器終端、電力線傳輸網(wǎng)絡(luò)、視頻監(jiān)控中心3部分。視頻服務(wù)器端由攝像頭采集視頻數(shù)據(jù),經(jīng)過(guò) ARM11微處理器 s3c6410進(jìn)行H.264硬件編碼[2-3]、RTP 封包后發(fā)送給電力線載波模塊,電力線載波模塊將其封裝成PLC幀格式后通過(guò)電力線網(wǎng)絡(luò)進(jìn)行傳輸;視頻監(jiān)控中心接收到電力線上傳輸?shù)臄?shù)據(jù)后先由電力線載波模塊進(jìn)行解調(diào),之后傳輸給監(jiān)控中心的計(jì)算機(jī)進(jìn)行軟件解碼處理,最后顯示實(shí)時(shí)視頻。電力線載波視頻監(jiān)控的顯著優(yōu)點(diǎn)就是分布范圍廣,能夠容易地在居民小區(qū)、工廠企業(yè)、超市、醫(yī)院等地方布局,無(wú)需重新布線或改造,可實(shí)現(xiàn)即插即用,輕松構(gòu)建網(wǎng)絡(luò)化監(jiān)控平臺(tái)。
系統(tǒng)總體結(jié)構(gòu)如圖1所示。
總體系統(tǒng)分為硬件設(shè)計(jì)和軟件設(shè)計(jì)。硬件設(shè)計(jì)部分主要包括視頻采集模塊、s3c6410微處理器模塊、PLC調(diào)制解調(diào)模塊。其中,s3c6410微處理器模塊是硬件系統(tǒng)設(shè)計(jì)的核心,它負(fù)責(zé)整個(gè)嵌入式系統(tǒng)的管理與調(diào)度。通電后,s3c6410微處理器自動(dòng)加載相關(guān)外圍硬件設(shè)備驅(qū)動(dòng),控制視頻采集模塊獲取實(shí)時(shí)視頻流數(shù)據(jù),并對(duì)獲取的數(shù)據(jù)進(jìn)行H.264硬件編碼,之后對(duì)其進(jìn)行RTP封包并通過(guò)RJ45網(wǎng)絡(luò)接口發(fā)送到PLC調(diào)制解調(diào)模塊,最后由PLC調(diào)制解調(diào)模塊進(jìn)行PLC幀格式的封裝并發(fā)送到電力線網(wǎng)絡(luò)進(jìn)行傳輸。
圖1 視頻監(jiān)控系統(tǒng)結(jié)構(gòu)框圖
軟件設(shè)計(jì)工作分為前端視頻服務(wù)器端軟件和監(jiān)控中心軟件兩部分。前端視頻服務(wù)器軟件設(shè)計(jì)包括建立嵌入式Linux開發(fā)環(huán)境、移植攝像頭和網(wǎng)卡等相關(guān)外圍設(shè)備驅(qū)動(dòng)程序、編寫視頻數(shù)據(jù)采集和H.264壓縮編碼代碼、編寫通信模塊代碼等。監(jiān)控中心軟件設(shè)計(jì)包括網(wǎng)絡(luò)數(shù)據(jù)接收及解包模塊代碼、視頻數(shù)據(jù)解碼模塊代碼以及界面顯示代碼。系統(tǒng)軟件流程如圖2所示。
圖2 系統(tǒng)軟件流程圖
該模塊硬件電路設(shè)計(jì)框圖如圖3所示。
圖3 ARM處理器模塊硬件設(shè)計(jì)框圖
系統(tǒng)主控芯片采用三星公司基于ARM1176JZFS內(nèi)核的S3C6410處理器,這是一款低功耗、高性價(jià)比的RISC處理器,擁有強(qiáng)大的內(nèi)部資源和視頻處理能力。它內(nèi)部集成了一個(gè) MFC(Multi-Format video Codec),支持MPEG -4、H.263、H.264等多種視頻編解碼標(biāo)準(zhǔn)。
NANDFlash采用容量為256 MB的K9F2G08U0M芯片,用來(lái)存放啟動(dòng)代碼、內(nèi)核代碼、根文件系統(tǒng)及應(yīng)用程序。SDRAM使用兩片64 MB的Samsung K4X51163PC芯片,工作電壓為3.3 V,用于存取系統(tǒng)運(yùn)行時(shí)的程序和數(shù)據(jù)。以太網(wǎng)卡芯片采用臺(tái)灣DAVICOM公司生產(chǎn)的10/100 Mbit自適應(yīng)以太網(wǎng)卡芯片DM9000AE,從而實(shí)現(xiàn)以太網(wǎng)物理層和數(shù)據(jù)鏈路層的連接。
該模塊硬件原理框圖如圖4所示。
圖4 PLC調(diào)制解調(diào)模塊硬件原理框圖
模塊采用Intellon公司的INT6400和INT1400芯片組作為核心芯片[4]。INT6400的內(nèi)核是基于ARM926EJ-S的32位處理器,作為一個(gè)MAC和PHY一體化的電力載波芯片,INT6400完全遵循HomePlug AV標(biāo)準(zhǔn)。
通電啟動(dòng)前,系統(tǒng)軟件已經(jīng)固化存儲(chǔ)在SPI Flash中,系統(tǒng)啟動(dòng)時(shí),代碼被拷貝到SDRAM中運(yùn)行。RJ45接口的數(shù)字信號(hào)通過(guò)PHY芯片AR8032的MII接口傳輸?shù)?INT6400,經(jīng)過(guò) D/A轉(zhuǎn)換變成模擬信號(hào),再由INT1400進(jìn)行放大處理后經(jīng)耦合電路耦合到電力線上進(jìn)行傳輸,完成一次典型的發(fā)送過(guò)程。接收過(guò)程剛好相反,只是從電力線上接收到的信號(hào)在耦合之后還需要經(jīng)過(guò)一個(gè)帶通濾波器,進(jìn)行降噪處理后再送到INT1400進(jìn)行增益調(diào)節(jié)。
傳輸過(guò)程中,數(shù)據(jù)的收發(fā)控制和系統(tǒng)任務(wù)調(diào)度由INT6400內(nèi)部的ARM9內(nèi)核完成。
系統(tǒng)軟件設(shè)計(jì)分為前端視頻服務(wù)器終端軟件設(shè)計(jì)和視頻監(jiān)控中心軟件設(shè)計(jì)兩部分。
視頻服務(wù)器終端的軟件設(shè)計(jì)主要包括嵌入式Linux系統(tǒng)定制和應(yīng)用程序開發(fā)組成。系統(tǒng)采用Linux2.6.36作為嵌入式平臺(tái)的操作系統(tǒng),通過(guò)對(duì)內(nèi)核的裁剪移除本系統(tǒng)不需要的外圍設(shè)備驅(qū)動(dòng),并移植了USB攝像頭驅(qū)動(dòng)、DM9000AE網(wǎng)卡等驅(qū)動(dòng)程序,這樣就構(gòu)建了應(yīng)用程序穩(wěn)定運(yùn)行所需要的操作系統(tǒng)環(huán)境。應(yīng)用程序開發(fā)是該軟件模塊設(shè)計(jì)的核心,主要包括視頻數(shù)據(jù)采集、H.264硬件編碼、RTP協(xié)議打包傳輸3部分。
3.1.1 視頻數(shù)據(jù)采集
在Linux系統(tǒng)中,攝像頭作為視頻采集設(shè)備,其編程操作遵循 V4L2[5](Video for Linux 2)規(guī)范。V4L2是Linux下視頻采集設(shè)備的標(biāo)準(zhǔn)API,它為用戶空間提供了一套完整的接口函數(shù),通過(guò)這些函數(shù)可以對(duì)視頻采集設(shè)備進(jìn)行打開、讀寫、關(guān)閉等操作。
視頻采集流程如圖5所示。首先調(diào)用open()函數(shù)以阻塞方式打開攝像頭設(shè)備,設(shè)備名為”/dev/video0”,然后通過(guò)ioctl()函數(shù)設(shè)置視頻采集參數(shù),如圖像大小、對(duì)比度、數(shù)據(jù)格式等,例如設(shè)置的數(shù)據(jù)格式為YUV422。在V4L2中有兩種讀取數(shù)據(jù)采集方式:一種是通過(guò)調(diào)用read()函數(shù)直接讀取設(shè)備;一種是通過(guò)內(nèi)存映射函數(shù)mmap()將視頻數(shù)據(jù)映射到用戶緩沖區(qū)再進(jìn)行讀取。后者更加方便高效,因此本文采用第二種方式讀取采集數(shù)據(jù)。采集到的視頻數(shù)據(jù)為YUV422格式,而 H.264編碼器要求的輸入視頻格式為YUV420P,因此為了將采集到的視頻數(shù)據(jù)送至H.264編碼器編碼,還需要將YUV422格式的視頻數(shù)據(jù)轉(zhuǎn)化為YUV420P格式,轉(zhuǎn)換過(guò)程通過(guò)FFmpeg開源庫(kù)提供的API完成。
圖5 視頻采集流程圖
3.1.2 H.264編碼
S3C6410處理器內(nèi)部集成一個(gè)多媒體硬件編解碼模塊 MFC[6],支持 MPEG - 4、H.263、H.264 編解碼,具有良好的編解碼性能。文中通過(guò)該MFC模塊進(jìn)行H.264硬件編碼,操作系統(tǒng)加載了MFC驅(qū)動(dòng)后,應(yīng)用程序可以像操作普通函數(shù)文件一樣調(diào)用MFC函數(shù)接口完成視頻數(shù)據(jù)H.264硬件編碼。
3.1.3 RTP協(xié)議打包及傳輸
H.264編碼后的視頻數(shù)據(jù)分為兩個(gè)不同的層:視頻編碼層(Video Coding Layer,VCL)和網(wǎng)絡(luò)適配層(Network Adaptation Layer,NAL)。視頻編碼層主要負(fù)責(zé)以高效的編碼方式表示視頻數(shù)據(jù),而網(wǎng)絡(luò)適配層則根據(jù)網(wǎng)絡(luò)要求對(duì)數(shù)據(jù)進(jìn)行封裝,使得視頻編碼層數(shù)據(jù)適于網(wǎng)絡(luò)傳輸。根據(jù)RFC3984[7],H.264視頻流的封包模式有3種:單一NAL單元模式,組合封包模式和分片封包模式。(1)對(duì)于長(zhǎng)度<MTU(最大傳輸單元)大小的NAL單元,將其放入RTP包的載荷部分,構(gòu)成一個(gè)RTP包;(2)對(duì)于圖像參數(shù)集、序列參數(shù)集等長(zhǎng)度特別小的NAL單元,將其進(jìn)行組合后放入一個(gè)RTP包;(3)如果NAL單元的長(zhǎng)度>MTU,則對(duì)該NAL單元進(jìn)行分片分割后,分別放入幾個(gè)RTP包。
封裝后的RTP包通過(guò)UDP協(xié)議的套接字經(jīng)由網(wǎng)絡(luò)接口發(fā)送到PLC調(diào)制解調(diào)器模塊進(jìn)行PLC幀格式的封裝,之后通過(guò)電力線網(wǎng)絡(luò)發(fā)送出去。
監(jiān)控中心軟件主要完成H.264視頻數(shù)據(jù)流接收、軟件解碼以及界面顯示。網(wǎng)絡(luò)數(shù)據(jù)的接收,采用UDP Socket套接字編程,H.264視頻流的軟件解碼采用開源免費(fèi)快平臺(tái)的視頻和音頻流解決方案FFmpeg完成,界面顯示通過(guò)調(diào)用開源跨平臺(tái)的多媒體庫(kù)SDL(Simple DirectMedie Layer)完成。監(jiān)控中心軟件流程如圖6所示。
圖6 監(jiān)控中心軟件流程圖
圖7 監(jiān)控效果圖
在實(shí)驗(yàn)室內(nèi)進(jìn)行測(cè)試,監(jiān)控前端采用本文設(shè)計(jì)的視頻服務(wù)器終端,監(jiān)控主機(jī)采用PC機(jī)。監(jiān)控前端設(shè)置視頻采集分辨率為640×480,視頻傳輸速率為25幀/秒,分別運(yùn)行服務(wù)器端程序和客戶端程序,觀察到視頻監(jiān)控效果如圖7所示,視頻播放流暢,較好地滿足了實(shí)時(shí)性的要求。
結(jié)合電力線載波通信技術(shù)、流媒體技術(shù),基于ARM11處理器S3C6410和嵌入式Linux操作系統(tǒng),設(shè)計(jì)了一種可以通過(guò)電力線傳輸?shù)囊曨l監(jiān)控系統(tǒng),并在實(shí)驗(yàn)室內(nèi)進(jìn)行了組網(wǎng)實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明,該方案是可行的,較好地滿足了視頻監(jiān)控的要求。但是,電力線作為通信媒介傳輸視頻流時(shí),傳輸質(zhì)量與傳輸?shù)木嚯x、電網(wǎng)拓?fù)浣Y(jié)構(gòu)的復(fù)雜程度有很大關(guān)系。當(dāng)傳輸距離過(guò)長(zhǎng),或室內(nèi)電網(wǎng)拓?fù)溥^(guò)于復(fù)雜時(shí),數(shù)據(jù)失真非常嚴(yán)重。
[1]ZENG Xu,LIANG Ming,LIU Huaizhi.Monitoring system of distribution running states based on broadband power line communication[C].Guangzhou:International Conference on Power System Technology,2006.
[2]郭巧云,許雪梅,李岸,等.基于ARM11的無(wú)線視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2010,18(8):1786-1788,1791.
[3]WIEGAND T,SULLIVAN G.The emerging H.264/H.26L video coding standard [C].Rochester,NY:Tutorial at ICIP,2002.
[4]Intellon.INT6400 homeplug AV MAC/PHY transceiver[M].USA:Intellon,2010.
[5]MICHAEL H S.Video for Linux two API specification revision 0.24[M/OL].(2008 -03 -04)[2013 -05 -10]http://v4l2spec.bytesex.org/v4l2spec/v4l2.pdf.
[6]Samsung.S3C6400/6410 Linux2.6.21 MFC API REV3.00[M].Korea:Samsung,2008.
[7]WENGER S,HANNUKSELA M M,STOCKHAMMER T.RTP payload format for H.264 video,RFC 3984[S].USA:Standards Bureau of United States,2005.