基于H.264的嵌入式無線視頻監(jiān)控系統(tǒng)
Hi3510使用ARM926EJ-S內(nèi)核,哈佛結(jié)構(gòu)的32位RISC處理器,其內(nèi)內(nèi)置MMU,主頻可達(dá)到 240MHz,可以很好得運(yùn)行嵌人式Linux2.6,不但保持了嵌人式系統(tǒng)小型化、低功耗、易攜帶的特點(diǎn),又充分利用了Linux系統(tǒng)完整的內(nèi)存、文件、線程管理功能,大大方便了程序的開發(fā)和程序中多任務(wù)功能的實(shí)現(xiàn)。
H.264是面向無線網(wǎng)絡(luò)和因特網(wǎng)的視頻圖像編碼與傳輸技術(shù).與其相關(guān)的各種研究已成為當(dāng)今信息科學(xué)與技術(shù)的前沿課題。 H.264具有高壓縮比,良好的網(wǎng)絡(luò)適應(yīng)性,一定的魯棒性等優(yōu)異性能,但其計(jì)算量過高,編碼時(shí)間過長(zhǎng),限制了它的廣泛應(yīng)用。Hi3510芯片是具有 H.264硬件編碼SOC芯片DD Hi3510采用ARM9+DSP+硬件引擎方式,方便地提供了H.264壓縮視頻流,而且可以獲得很好壓縮比。
碼分多址通訊模塊采用深圳倚天科技公司的ETPro-309 AI CDMA Modem,其內(nèi)置SIM卡,其內(nèi)部核心芯片是Qualcomm MSM6025。該模塊包含基于碼分多址業(yè)務(wù)標(biāo)準(zhǔn)IS95和IS2000的調(diào)制解調(diào)系統(tǒng),而且?guī)?nèi)置TCP/IP協(xié)議棧,可利用AT命令直接與其通信。碼分多址模塊與核心處理器之間使用UART進(jìn)行連接。
Hi3510支持ITU-R BT.656/601視頻輸入接口,攝像機(jī)接口接受ITU標(biāo)準(zhǔn)的圖像數(shù)據(jù),不能直接接收CCD攝像機(jī)輸出的模擬視頻信號(hào),因此我們只需要再加一片SAA7114視頻解碼芯片,就可以完成硬件系統(tǒng)的搭建。
3.2 監(jiān)控終端軟件設(shè)計(jì)
控制終端軟件的核心是嵌入式Linux操作系統(tǒng),所有功能的實(shí)現(xiàn)都基于Linux操作系統(tǒng)來完成。主要包括三個(gè)層次,最底層是BootLoader服務(wù)程序和基本外設(shè)驅(qū)動(dòng),它主要完成系統(tǒng)加載和ARM核心處理器的初始化配置,第二層主要是攝像頭模塊和碼分多址模塊的驅(qū)動(dòng)程序,最后一層是系統(tǒng)的應(yīng)用程序。
由于Linux內(nèi)核采用模塊化的設(shè)計(jì)。很多模塊可以獨(dú)立地加載或卸載,所以小型化就是對(duì)Linux內(nèi)核重新編譯,在編譯時(shí)仔細(xì)地選擇嵌入式設(shè)備所需要的功能模塊,同時(shí)刪除不需要的功能。這里只需要串口驅(qū)動(dòng)、SAA7114視頻解碼芯片驅(qū)動(dòng),還有撥號(hào)網(wǎng)絡(luò)應(yīng)用,還要支持 PPP、TCP/IP網(wǎng)絡(luò)協(xié)議,其他都可以刪除掉,使系統(tǒng)運(yùn)行所需要的內(nèi)核顯著減小至l Mb以內(nèi)。碼分多址撥號(hào)通過運(yùn)行PPP程序進(jìn)行。在Linux下的PPP包是專門為解決Modem撥號(hào)上網(wǎng)問題而編寫的,并且是公開源代碼的。PPP撥號(hào)腳本程序主要通過調(diào)用pppd和chat這兩個(gè)應(yīng)用程序,并通過AT指令實(shí)現(xiàn)對(duì)Modem的操作。
應(yīng)用程序主要是監(jiān)聽用戶命令,收到命令后調(diào)用攝像頭模塊采集圖像,然后再使用碼分多址模塊來發(fā)送圖像數(shù)據(jù)。終端一旦初始化后,就與中心服務(wù)器建立TCP連接,在運(yùn)行過程中終端跟中心服務(wù)器保持TCP連接,中心服務(wù)器可隨時(shí)主動(dòng)地請(qǐng)求圖像數(shù)據(jù),因此,對(duì)于對(duì)交互性和實(shí)時(shí)性有較高要求的應(yīng)用系統(tǒng)可實(shí)現(xiàn)較好的響應(yīng)。監(jiān)控終端軟件流程如圖3所示。
圖3. 監(jiān)控終端軟件流程圖
4 基于RTP的H.264視頻流傳輸控制
由于H.264具有前面所指出的多種優(yōu)點(diǎn),本系統(tǒng)設(shè)計(jì)了基于RTP的H.264視頻流傳輸控制。RTP協(xié)議對(duì)實(shí)時(shí)數(shù)據(jù)傳輸?shù)闹С职〞r(shí)間戳、序列號(hào)、荷載類型標(biāo)識(shí)和源標(biāo)識(shí)等,時(shí)間戳反映了RTP數(shù)據(jù)幀中第一字節(jié)數(shù)據(jù)的采樣時(shí)間,采樣時(shí)間是線性單調(diào)增長(zhǎng)的。接收方根據(jù)收到數(shù)據(jù)幀的時(shí)間戳來重建接收數(shù)據(jù)的時(shí)序關(guān)系,以便正確回放媒體流。序列號(hào)用于數(shù)據(jù)傳送的丟失檢測(cè)和幀序重構(gòu);荷載類型標(biāo)識(shí)則指明RTP幀數(shù)據(jù)荷載的編碼格式;源標(biāo)識(shí)用于指示接收方式所接收數(shù)據(jù)的來源。以上功能均通過RTP的幀頭來實(shí)現(xiàn)。
RTP 數(shù)據(jù)協(xié)議運(yùn)行在面向數(shù)據(jù)報(bào)的UDP 之上,它只能提供無連接的不可靠服務(wù),幀丟失或出錯(cuò)都會(huì)降低圖像或聲音的質(zhì)量。RTCP控制協(xié)議需要與RTP數(shù)據(jù)協(xié)議一起配合使用,RTP本身并不能為按序傳輸數(shù)據(jù)包提供可靠的保證,也不提供流量控制和擁塞控制,這些都由RTCP來負(fù)責(zé)完成。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論