基于IPV6的網(wǎng)絡(luò)攝像機(jī)的設(shè)計(jì)與實(shí)現(xiàn)
摘要:本文主要從軟件方面介紹了一個(gè)基于IntelPXA255硬件平臺(tái)和Linux軟件平臺(tái)的嵌入式網(wǎng)絡(luò)攝像機(jī)方案,詳細(xì)介紹了如何實(shí)現(xiàn)一臺(tái)具有實(shí)時(shí)視頻采集壓縮及傳輸功能的可以直接接入IPV6網(wǎng)絡(luò)的攝像機(jī)。解決了如何快速實(shí)現(xiàn)IPV6網(wǎng)絡(luò)視頻的問題。
關(guān)鍵詞:IPV6,Linux,嵌入式系統(tǒng),網(wǎng)絡(luò)攝像機(jī)
1 基于IPv6攝像機(jī)的需求
隨著IPV6網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)的迅速發(fā)展和嵌入式設(shè)備的廣泛應(yīng)用,嵌入式設(shè)備接入IPV6網(wǎng)絡(luò)的要求日益增強(qiáng),使得數(shù)字網(wǎng)絡(luò)視頻得到了飛速發(fā)展。尤其在監(jiān)控、遠(yuǎn)程教學(xué)領(lǐng)域,提出了將傳統(tǒng)的模擬視頻信號(hào)轉(zhuǎn)換為數(shù)字視頻信號(hào),并且利用IPV6網(wǎng)絡(luò)設(shè)計(jì)一個(gè)不受距離限制的廉價(jià)的通用網(wǎng)絡(luò)視頻設(shè)備要求。
1.1 嵌入式系統(tǒng)的廣泛應(yīng)用。
傳統(tǒng)攝像機(jī)的視頻圖像如果要在網(wǎng)絡(luò)中傳送,首先需要采集、壓縮,然后再用視頻服務(wù)器傳送,過程比較煩瑣、復(fù)雜。嵌入式系統(tǒng)是以嵌入式計(jì)算機(jī)為技術(shù)核心,面向用戶、面向產(chǎn)品、面向應(yīng)用,軟硬件可裁減的,適用于對(duì)功能、可靠性、成本、體積、功耗等綜合性能有嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。幾乎沒有哪一個(gè)系統(tǒng)在設(shè)計(jì)的時(shí)候不考慮如何與其他系統(tǒng)進(jìn)行互連。例如基于網(wǎng)絡(luò)的遠(yuǎn)程教育、遠(yuǎn)程監(jiān)控、遠(yuǎn)程數(shù)據(jù)采集、自動(dòng)報(bào)警、上傳下載數(shù)據(jù)文件、自動(dòng)發(fā)送Email等功能。網(wǎng)絡(luò)專家預(yù)測(cè),將來在Internet上傳輸?shù)男畔⒅?,?0%來自小型嵌入式系統(tǒng),嵌入式Internet將會(huì)產(chǎn)生比PC機(jī)時(shí)代多成百上千倍的瘦服務(wù)器和超級(jí)嵌入式瘦服務(wù)器。網(wǎng)絡(luò)攝像機(jī)就是一種能直接再網(wǎng)絡(luò)上傳送視頻信息的攝像機(jī),具有一個(gè)簡(jiǎn)單的視頻服務(wù)器。與傳統(tǒng)攝像機(jī)相比,它具有設(shè)備小巧,能直接上網(wǎng)的優(yōu)點(diǎn)。
1.2 IPv6網(wǎng)絡(luò)的發(fā)展趨勢(shì)。
TCP/IP起源于 60年代末美國(guó)政府資助的一個(gè)分組交換網(wǎng)絡(luò)研究項(xiàng)目,到現(xiàn)今已發(fā)展成為計(jì)算機(jī)之間最基本的組網(wǎng)協(xié)議?,F(xiàn)在Internet上出現(xiàn)的重大變化就是從目前的IPv4協(xié)議轉(zhuǎn)變?yōu)镮Pv6協(xié)議。同現(xiàn)在廣泛使用的IPV4相比,IPv6在功能和性能方面都有所增強(qiáng),可分為路由增強(qiáng)和主機(jī)增強(qiáng)。路由增強(qiáng)包括包的優(yōu)先級(jí)、流標(biāo)簽、隧道機(jī)制等。主機(jī)增強(qiáng)包括地址自動(dòng)配置、認(rèn)證、加密、多播報(bào)文的傳送和實(shí)時(shí)應(yīng)用的支持。
盡管IPv4支持大約40億個(gè)地址,同時(shí)人們還想出了一些辦法,在“私有”網(wǎng)絡(luò)中開辟額外的地址空間。但仍然出現(xiàn)了地址危機(jī),而IPv6支持 3.41038個(gè)地址,也就是說足可以為地球上每平方毫米提供6.701017個(gè)地址。隨著IPv6的逐步普及,很多設(shè)備需要能夠同時(shí)支持IPv4 和IPv6的通信。為了解決目前IPv4地址嚴(yán)重匱乏,滿足未來網(wǎng)絡(luò)對(duì)地址的巨大需求,IPv6采用128位的地址取代了IPv4的32位地址,它所能容納的地址大到足以讓每個(gè)人都可單獨(dú)擁有目前Internet規(guī)模的網(wǎng)絡(luò)。同時(shí)IPv6地址的多層次結(jié)構(gòu)在很大程度上提高了路由器的選徑效率。IPv6在地址方案上還增加了地址的自動(dòng)配置機(jī)制,減輕了網(wǎng)絡(luò)地址管理的開銷。在IPv6的地址類型中,新增了群集地址Anycast地址,可用于IP報(bào)文的組播。
2嵌入式IPV6的實(shí)現(xiàn)方法
根據(jù)不同的情況,嵌入式IPV6有不同的實(shí)現(xiàn)方法,每種方法都有自己各自的優(yōu)缺點(diǎn)。下面就簡(jiǎn)要介紹各種方法。
2.1自己編程實(shí)現(xiàn)
按照RFC文檔的規(guī)范,根據(jù)自己的需要,開發(fā)相應(yīng)的協(xié)議,包括核心協(xié)議,ICMPV6,NDP等。其缺點(diǎn)是非常明顯的,開發(fā)的技術(shù)難度大,周期長(zhǎng),容易出錯(cuò),花費(fèi)的人力、物力、財(cái)力巨大。這種方式的優(yōu)點(diǎn)主要有:(1) 可以使代碼較少,對(duì)嵌入系統(tǒng)的內(nèi)存要求低,代碼可以做到不超過100k byte,滿足嵌入式系統(tǒng)要求。(2)提供方便的用戶接口,使用戶方便的使用協(xié)議棧。(3)可裁減性,按照自己的需要,實(shí)現(xiàn)自己需要的部分協(xié)議。(4)可擴(kuò)展性,可以方便的擴(kuò)展協(xié)議功能,加入其他協(xié)議。
2.2購買現(xiàn)成的產(chǎn)品
現(xiàn)成的產(chǎn)品具有功能強(qiáng)大,較好的售后服務(wù)的特點(diǎn)。如瑞典的Interpeak公司,它為嵌入式系統(tǒng)引入嵌入式IPv6協(xié)議棧,為路由和交換設(shè)備專門裁減IPv6/Ipv4雙路由棧。首家提出Interpeak雙棧,它既可將IPv6 Ready Logo作為主機(jī)棧進(jìn)行接收,也可作為路由棧進(jìn)行接收。這個(gè)網(wǎng)絡(luò)棧具有IPv6的全部功能以及其他特征,包括IPSec、NAT-PT、傳輸機(jī)制、QOS、Diffserv、VLAN、多播轉(zhuǎn)發(fā)和代理、虛擬路由以及其他許多特性。還提供包括IKEv2、MPLS forwarding、完整的移動(dòng)IP組件、Firewall、RADIUS、SSH、Web Sever、SNTP和SNMP在內(nèi)的其他產(chǎn)品,進(jìn)一步加強(qiáng)了IPv6。這些產(chǎn)品計(jì)遵循模塊化、高效、可擴(kuò)展性的思想。但缺點(diǎn)是價(jià)格較高,做產(chǎn)品時(shí)將受到許可證、版權(quán)的限制等。
2.3利用開源Linux
利用開放源代碼的Linux實(shí)現(xiàn),它作為嵌入式操作系統(tǒng)的優(yōu)勢(shì)主要有以下幾點(diǎn):
可應(yīng)用于多種硬件平臺(tái)。
Linux已經(jīng)被移植到多種硬件平臺(tái),這對(duì)于經(jīng)費(fèi),時(shí)間受限制的研究與開發(fā)項(xiàng)目是很有吸引力的。原型可以在標(biāo)準(zhǔn)平臺(tái)上開發(fā)后移植到具體的硬件上,加快了軟件與硬件的開發(fā)過程。Linux是一個(gè)和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問控制,支持大量硬件(包括X86,Alpha、ARM和Motorola等現(xiàn)有的大部分芯片)等特性的一種通用操作系統(tǒng),已經(jīng)被成功的移植到了數(shù)十種硬件平臺(tái)上,它也可以在沒有MMU(內(nèi)存管理單元)的處理器上運(yùn)行,這就使得在嵌入式領(lǐng)域這種沒有MMU的處理器的情形下得到相當(dāng)廣泛的應(yīng)用。
Linux帶有強(qiáng)大的網(wǎng)絡(luò)功能和完善的開發(fā)工具
幾乎所有的Unix系統(tǒng)的應(yīng)用軟件都已移植到了Linux上。Linux還提供了強(qiáng)大的網(wǎng)絡(luò)功能,有多種可選擇窗口管理器(X Windows)。Linux的一個(gè)顯著優(yōu)勢(shì)就是強(qiáng)大的網(wǎng)絡(luò)功能,優(yōu)秀的網(wǎng)絡(luò)功能,這在Internet時(shí)代尤其重要。 Linux的發(fā)展過程本身就是隨著網(wǎng)絡(luò)發(fā)展起來的,Linux上有一套成熟的網(wǎng)絡(luò)協(xié)議堆棧,從2.4開始就支持IPV6了。對(duì)于TCP/IP協(xié)議,Linux有著最完備的支持,這使得Linux在網(wǎng)絡(luò)方面有很大的優(yōu)勢(shì)。此外,在其下也有大量的自由的優(yōu)秀的開發(fā)工具和軟件資源,和大量的應(yīng)用軟件可用,其中大部分都遵從GPL,是開放源代碼和免費(fèi)的。這樣在Linux下開發(fā)應(yīng)用程序時(shí),往往不需要從頭做起,而是直接進(jìn)行二次開發(fā),大大減少了工作量,縮短了開發(fā)周期,提高了開發(fā)的效率。它也具有強(qiáng)大的語言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。
開放源代碼的免費(fèi)軟件,適合裁剪
Linux遵從 GPL,因此我們只要遵循GPL相關(guān)規(guī)定就可以獲得其拷貝, 無須為每例應(yīng)用交納許可證費(fèi), 人們可以任意修改,以滿足自己的應(yīng)用,由于嵌入式系統(tǒng)是面對(duì)特定功能的專用計(jì)算機(jī)系統(tǒng), 往往就需要針對(duì)具體系統(tǒng)進(jìn)行裁剪和優(yōu)化, Linux內(nèi)核小巧,適合裁剪, Linux的內(nèi)核采用模塊化設(shè)計(jì),模塊可以根據(jù)需要加載和卸除。這就使得開發(fā)人員可以針對(duì)自己的系統(tǒng)來編譯自己的內(nèi)核,運(yùn)行所需資源少,十分適合嵌入式應(yīng)用。此外,Linux內(nèi)核與用戶界面完全獨(dú)立,各部分的可定制性很強(qiáng),這有利于節(jié)約系統(tǒng)資源,非常適合于嵌入式系統(tǒng)的開發(fā)。其程序源碼全部公開,任何人可以修改。這樣,開發(fā)人員可以對(duì)操作系統(tǒng)進(jìn)行定制,適應(yīng)其特殊需要。
性能高效、穩(wěn)定
Linux本身具備的一個(gè)很大優(yōu)點(diǎn)就是穩(wěn)定,曾有人做過實(shí)驗(yàn),24小時(shí)不間斷運(yùn)行的情況下,Linux三年內(nèi)只出現(xiàn)過5次死機(jī)現(xiàn)象,而Windows死機(jī)次數(shù)則有150次之多,嵌入式系統(tǒng)一般要求在環(huán)境惡劣的情況下依然能夠穩(wěn)定正常的工作,正是由于Linux的穩(wěn)定性,才使得嵌入式系統(tǒng)得到高可靠性的保證。
通過以上比較,我們決定采用最后一種方案。
3 方案的實(shí)施
我們做設(shè)計(jì)的目標(biāo)是用Sitsang開發(fā)平臺(tái)實(shí)現(xiàn)一個(gè)具有實(shí)時(shí)視頻采集壓縮及傳輸功能的可以直接接入IPV6網(wǎng)的網(wǎng)絡(luò)攝像機(jī)。
3.1 硬件系統(tǒng)簡(jiǎn)介
因本文主要介紹軟件系統(tǒng)的設(shè)計(jì),所以只簡(jiǎn)單介紹其硬件系統(tǒng)。整個(gè)系統(tǒng)除攝像頭部分外都是在基于Intel PXA255 的Sitsang開發(fā)板上實(shí)現(xiàn)的。Sitsang板的核心為PXA255,配備了大量的硬件資源,其中通信接口中的以太網(wǎng)控制器和USB Host控制器在本系統(tǒng)中是關(guān)鍵部件。Sitsang開發(fā)板上采用了Standard Microsystems LAN91C96以太網(wǎng)控制器,它通過U52與網(wǎng)絡(luò)相連,支持IEEE802.3的10Mb/s模式。Sitsang開發(fā)板上采用了Philips的 ISP1161作為USB Host控制器,使用USB Host接口可以使Sitsang板與視頻采集攝像頭相連。以太網(wǎng)控制器和USB Host控制器通過數(shù)據(jù)總線收發(fā)器(74LVCH32245)以及地址、數(shù)據(jù)總線驅(qū)動(dòng)器(74LVCH32244)與PXA255相連接,使用ov511芯片的USB攝像頭。
3.2 軟件系統(tǒng)的實(shí)現(xiàn)
軟件系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)是本系統(tǒng)的關(guān)鍵,主要分以下幾個(gè)步驟:
3.2.1. 編譯支持IPv6的Linux內(nèi)核
我們采用的內(nèi)核是Linux 2.6.12,該內(nèi)核擴(kuò)展多嵌入式平臺(tái)支持的一個(gè)主要途徑就是把uCLinux的大部分并入主流內(nèi)核功能中。要向該CPU移植Linux,首先要準(zhǔn)備交叉編譯環(huán)境,以便在PC機(jī)上編譯可運(yùn)行于PXA255核CPU的目標(biāo)代碼。實(shí)驗(yàn)選用的Linux內(nèi)核源碼包是Linux最新版內(nèi)核(Kernel),版本號(hào)2.6.12.ar.bz2,以下是編譯支持IPv6的Linux內(nèi)核的過程。首先是下載內(nèi)核源代碼,其地址是:
http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.gz,下載后將其放置到 /usr/src/下,然后用命令tar zxvf linux-2.6.12.tar.gz解壓,再執(zhí)行以下命令 #cd linux-2.6.12 ,#make menuconfig配置內(nèi)核,一定要選開發(fā)板的網(wǎng)卡驅(qū)動(dòng)。在執(zhí)行make menuconfig命令的時(shí)候,注意把Network Options下有關(guān)IPv6和隧道(tunnel)的模塊選為內(nèi)核模式,以便得到所需要的內(nèi)核文件。因?yàn)楝F(xiàn)在得到的Linux內(nèi)核版本雖然是支持IPv6的,但是支持IPv6的模塊默認(rèn)并不會(huì)編譯入內(nèi)核的。其他選項(xiàng)根據(jù)實(shí)際需要更改,使內(nèi)核滿足需要即可以便得到較小的內(nèi)核。最后是編譯內(nèi)核,需要執(zhí)行以下命令:#make dep;#make zImage;#make modules。編譯無誤后,就有了支持IPv6的內(nèi)核,接下來的工作是把啟動(dòng)程序和內(nèi)核文件外加一個(gè)精簡(jiǎn)的文件系統(tǒng)燒錄到開發(fā)板上去,開發(fā)板就可以啟動(dòng)了。
3.2.2.基于嵌入式Linux視頻采集模塊的設(shè)計(jì)
在嵌入式Linux的內(nèi)核定制和編譯階段,已經(jīng)加入了對(duì)Video4Linux模塊以及OV511設(shè)備的支持,所以運(yùn)行在Linux下的視頻圖像采集程序,可以通過Video4Linux模塊提供的編譯接口(API)從OV511設(shè)備中獲取圖像幀。首先加載USB及OV511設(shè)備驅(qū)動(dòng)模塊,同時(shí)加載Video4Linux模塊。分別使用命令:modprobe usbcor、modprobe usb-uhci、modprobe vodeodev和modprobe ov511。加載后將生成視頻設(shè)備文件/dev/video0,為了和Video4Linux模塊相協(xié)調(diào),使用ln-s/dev/video0/dev/video為Video4Linux模塊的默認(rèn)視頻設(shè)備voideo與物理視頻設(shè)備video0建立連接。Video4Linux模塊的視頻采集接口設(shè)備為/dev/video,采集程序打開此接口設(shè)備并掃描 它以尋找自己所需要的數(shù)據(jù)。
視頻圖像壓縮模塊的設(shè)計(jì)
由視頻采集模塊獲取的視頻圖像需要在以太網(wǎng)上傳輸,為了提高傳輸效率從而提高視頻圖像質(zhì)量,則需要將原始的視頻圖像進(jìn)行壓縮編碼。本系統(tǒng)采用先進(jìn)的MPEG-4標(biāo)準(zhǔn)對(duì)視頻圖像進(jìn)行壓縮編碼,在幾種開放源代碼的MPEG-4編碼軟件中,選擇xvidcore作為本系統(tǒng)中視頻圖像壓縮模塊中的核心算法。對(duì)xvidcore-1.0.1進(jìn)行交叉編譯比較簡(jiǎn)單,有以下主要步驟。首先解壓縮xvidcore源代碼:tar-zxvf xvidcore-1.0.1.tar,其次是設(shè)置環(huán)境變量:export xvidcore="the path of xvidcore";cd $xvidcore/build/generic;再次是生成makefile:./configure-host=localhostbuild=arm-linux-gcc;然后編譯源代碼:make;make install;最后將交叉編譯生成的庫文件libxvidcore.so.*拷貝到交叉編譯器工作目錄的lib子目錄中,該庫文件為系統(tǒng)的其它模塊提供了編程接口。
3.2.3.基于嵌入式Linux的網(wǎng)絡(luò)視頻流服務(wù)模塊設(shè)計(jì)
在本設(shè)計(jì)中,數(shù)據(jù)在整個(gè)系統(tǒng)中是以流數(shù)據(jù)的形式存在的,Linux內(nèi)核為流數(shù)據(jù)提供了一個(gè)標(biāo)準(zhǔn)的編程接口,這種接口為數(shù)據(jù)從外部設(shè)備經(jīng)內(nèi)核到達(dá)用戶進(jìn)程提供了一個(gè)全雙工通道。在這個(gè)通道中,數(shù)據(jù)的處理模塊是作為可選的中間件由用戶動(dòng)態(tài)加載的,上面設(shè)計(jì)的視頻壓縮模塊就是這樣的一個(gè)中間件。本系統(tǒng)主要是用于實(shí)時(shí)視頻應(yīng)用,所以需要系統(tǒng)提供對(duì)流式文件格式的支持,這樣在接收方利用標(biāo)準(zhǔn)的流視頻播放軟件,如MMedia Player就可以觀看實(shí)時(shí)傳輸?shù)囊曨l.在本系統(tǒng)中采用了開放的ASF流格式.壓縮后的視頻數(shù)據(jù)在傳輸前需要對(duì)其進(jìn)行ASF編碼。流視頻協(xié)議是為了在客戶機(jī)和視頻服務(wù)器之間進(jìn)行通信而設(shè)計(jì)和標(biāo)準(zhǔn)化的。根據(jù)它們的功能,與網(wǎng)絡(luò)上流視頻相關(guān)的協(xié)議分為三類。網(wǎng)絡(luò)層協(xié)議:網(wǎng)絡(luò)層協(xié)議提供了基本的網(wǎng)絡(luò)服務(wù)支持。IP就是網(wǎng)絡(luò)上流視頻使用的網(wǎng)絡(luò)協(xié)議。傳輸協(xié)議:傳輸協(xié)議為流服務(wù)提供端對(duì)端的網(wǎng)絡(luò)傳輸功能。TCP、UDP、RTP和RTCP就是網(wǎng)絡(luò)上流視頻使用的傳輸協(xié)議。話路控制協(xié)議:話路控制協(xié)議定義消息和程序。RTSP就是一種話路控制協(xié)議。
在發(fā)送方的數(shù)據(jù)面,壓縮且經(jīng)過ASF編碼的視頻數(shù)據(jù)被讀出并在RTP/RTCP/RTSP層上打包,以提供定時(shí)和同步信息以及包的序列號(hào)。然后把這些打包的RTP數(shù)據(jù)流發(fā)送到UDP/TCP層和IP層,得到的IP包在網(wǎng)絡(luò)上傳輸。在接收方則按照相反的方向處理。在控制面,RTCP包和RTSP包在UDP/TCP層上復(fù)用,并且被送到IP層,以便通過網(wǎng)絡(luò)傳輸。
4 應(yīng)用的價(jià)值
本網(wǎng)絡(luò)攝像機(jī)的設(shè)計(jì)方案,由于采用了MPEG-4編碼標(biāo)準(zhǔn),得到了較高的壓縮比。經(jīng)測(cè)試,在50Kbps~100Kbps的帶寬下,對(duì)CIF(352288,30fps)格式的視頻有較好的表現(xiàn)能力,如果在進(jìn)行實(shí)用化開發(fā)時(shí),可以采用硬件壓縮技術(shù),壓縮的性能將會(huì)更好。完全能夠滿足在目前寬帶環(huán)境中的遠(yuǎn)程教學(xué)、網(wǎng)絡(luò)視頻會(huì)議以及視頻監(jiān)控的要求,特別是支持IPV6協(xié)議,在下一代網(wǎng)絡(luò)中將會(huì)有十分廣泛的應(yīng)用。
參考文獻(xiàn):
[1] 楊健,張慧慧. 基于ARM和Ethernet的現(xiàn)場(chǎng)實(shí)時(shí)信號(hào)采集分析系統(tǒng). 微計(jì)算機(jī)信息 2005,(22)
[2] 蘭遠(yuǎn)東,王建中.基于Linux的嵌入式系統(tǒng)應(yīng)用開發(fā)研究. 機(jī)械管理開發(fā) 2004,(02)
[3] 周興, 陶品. 在嵌入式設(shè)備上實(shí)現(xiàn)IPv6網(wǎng)絡(luò)的接入.單片機(jī)與嵌入式系統(tǒng)應(yīng)用 ,2005( 08)
[4] 吳建平,崔勇,互聯(lián)網(wǎng)的新未來:“IPv6”,中國(guó)科技獎(jiǎng)勵(lì),2005,(07)
評(píng)論