《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于ARM Linux的3G無線車載視頻監(jiān)控系統(tǒng)
基于ARM Linux的3G無線車載視頻監(jiān)控系統(tǒng)
電子設(shè)計(jì)工程
谷勝,王建華
摘要: 為了加強(qiáng)客運(yùn)服務(wù)中心對(duì)長途車輛在客運(yùn)過程的監(jiān)管,提出了基于ARMLinux的3G無線車栽視頻監(jiān)控系統(tǒng)。該系統(tǒng)基于ARMLinux嵌入式系統(tǒng)與ARM處理器,通過USB攝像頭采集車內(nèi)視頻數(shù)據(jù),由GPS定位模塊獲取車輛的位置數(shù)據(jù),然后將采集的數(shù)據(jù)經(jīng)過H.264壓縮成適合網(wǎng)絡(luò)傳輸?shù)男问健W罱K通過3G無線發(fā)射模塊經(jīng)過具有寬帶傳輸能力的3G移動(dòng)通信網(wǎng)絡(luò)傳輸給監(jiān)控服務(wù)中心,監(jiān)控服務(wù)中心可以看到車內(nèi)清晰流暢的視頻畫面以及車輛所在位置。
關(guān)鍵詞: ARM Linux GPS 3G 視頻監(jiān)控
Abstract:
Key words :

0 引言
隨著汽車客運(yùn)事業(yè)發(fā)展,營運(yùn)人員在營運(yùn)過程中的安全以及管理也越來越被重視。由于存在乘客與營運(yùn)人員經(jīng)常因逃票、服務(wù)態(tài)度等問題而產(chǎn)生糾紛、客運(yùn)過程中交通事故雙方的責(zé)任鑒定比較模糊、車內(nèi)盜竊事件缺乏有力的證據(jù)以及車輛失竊和司機(jī)酒駕等問題,本文提出基于ARM Linux3G無線車載視頻監(jiān)控系統(tǒng),可有效減少上述事件的發(fā)生,給予車乘人員以及車輛安全保障。此系統(tǒng)在Linux操作系統(tǒng)下,利用嵌入式開發(fā)板S3C2440搭建硬件環(huán)境,通過USB攝像頭以及GPS模塊采集車內(nèi)實(shí)時(shí)的視頻和位置信息,視頻數(shù)據(jù)通過H.264的高效壓縮編碼,既可以得到高壓縮比又擁有高質(zhì)量流暢的圖像,可以大大減少需要傳輸?shù)臄?shù)據(jù)量,并且將3G無線網(wǎng)絡(luò)作為傳輸媒介,既可以解決傳統(tǒng)有線網(wǎng)絡(luò)對(duì)運(yùn)動(dòng)中的監(jiān)控不能實(shí)現(xiàn)的問題,提供更加靈活的組網(wǎng)方式,滿足不能架設(shè)線路的監(jiān)控點(diǎn)的監(jiān)控需求,還可以提供比GPRS和CDMA更寬的數(shù)據(jù)傳輸帶寬,滿足移動(dòng)視頻監(jiān)控的要求。最終監(jiān)控終端通過Web瀏覽器可以實(shí)時(shí)監(jiān)控車輛內(nèi)部的視頻畫面以及車輛所在的位置速度等信息。

1 系統(tǒng)的總體設(shè)計(jì)
   3G無線視頻監(jiān)控系統(tǒng)主要由車載移動(dòng)監(jiān)控終端、網(wǎng)絡(luò)傳輸、遠(yuǎn)程客戶端3部分組成。系統(tǒng)的總體結(jié)構(gòu)如圖1所示。整個(gè)視頻監(jiān)控系統(tǒng)采用B/S結(jié)構(gòu)。車載移動(dòng)監(jiān)控終端主要包括S3C2440平臺(tái)上運(yùn)行的GPS數(shù)據(jù)采集以及視頻采集、視頻的編碼、嵌入式Web服務(wù)器、流媒體服務(wù)器。網(wǎng)絡(luò)傳輸以TCP/IP協(xié)議為基礎(chǔ)構(gòu)建,實(shí)現(xiàn)RTP、RTCP、HTTP、TCP、UDP等傳輸協(xié)議。遠(yuǎn)程客戶端實(shí)現(xiàn)車輛位置以及視頻數(shù)據(jù)的接收、視頻流的解碼播放、網(wǎng)絡(luò)狀況反饋等功能。系統(tǒng)工作原理為:通過USB攝像頭獲取實(shí)時(shí)車輛內(nèi)情況和司機(jī)駕駛狀況,通過GPS定位模塊獲取GPS數(shù)據(jù)(經(jīng)緯度、高度、時(shí)間、速度),并傳送給ARM處理器,處理器對(duì)接收數(shù)據(jù)進(jìn)行H.264編碼并將編好碼的NAL單元傳送給流媒體服務(wù)器,流媒體服務(wù)器對(duì)壓縮好的數(shù)據(jù)進(jìn)行RTP封裝并通過內(nèi)部總線送到內(nèi)置的boa服務(wù)器,并根據(jù)RTCP反饋回來的控制信息對(duì)H.264編碼器和視頻采集速率進(jìn)行控制。Boa小型嵌入式服務(wù)器結(jié)合CGI技術(shù)來實(shí)現(xiàn)監(jiān)控端和客戶端的交互。遠(yuǎn)程客戶端通過無線網(wǎng)絡(luò)與boa服務(wù)器連接,采用ActiveX技術(shù)實(shí)現(xiàn)視頻數(shù)據(jù)的接收、RTP報(bào)文的解封裝、發(fā)送RTCP反饋信息、H.264視頻解碼、Web瀏覽器的顯示。

系統(tǒng)總體設(shè)計(jì)框圖

2 系統(tǒng)的硬件組成及選型設(shè)計(jì)
2.1 車載移動(dòng)終端
車載移動(dòng)終端的組成如圖2所示,主要由4部分組成:ARM處理器、GPS模塊、3G無線數(shù)據(jù)發(fā)送模塊、圖像采集模塊。主控處理器芯片選用三星公司推出的16/32位RISC微處理器S3C2440A,S3C2440A采用ARM920t內(nèi)核,0.13μm的CMOS標(biāo)準(zhǔn)宏單元和存儲(chǔ)器單元,最高運(yùn)行頻率達(dá)到400MHz,它的低功耗、簡單、考究和全靜態(tài)是專門為需要考慮花費(fèi)和功耗的應(yīng)用設(shè)計(jì)的,特別適用本系統(tǒng)。S3C2440A提供了豐富的片內(nèi)資源,支持Linux。集成在芯片上的功能有:16 KB的指令和數(shù)據(jù)Cache、LCD控制器、AC97音頻接口、攝像頭接口、DMA控制器、PWM定時(shí)器、MMC接口等。它能完成整個(gè)系統(tǒng)的調(diào)度工作,在系統(tǒng)上電時(shí)配置所有需工作芯片的功能寄存器,完成視頻流的編碼,并通過3G無線網(wǎng)絡(luò)向監(jiān)控終端發(fā)送視頻碼流。

系統(tǒng)硬件結(jié)構(gòu)圖


GPS模塊使用u_blox公司的LEA-5H。LEA-5H具有50個(gè)通道的u-blox引擎,一百多萬個(gè)有效相關(guān)器,熱啟動(dòng)和輔助啟動(dòng)首次定位時(shí)間小于1 s,-160 dBm的SuperSense捕獲和跟蹤靈敏度,運(yùn)行限制速度515 ms。系統(tǒng)通過該模塊實(shí)時(shí)接收定位信息,保證中心控制模塊可以實(shí)時(shí)處理定位數(shù)據(jù)。
圖像采集模塊的硬件資源選用了帶USB接口的中星微攝像頭。該款攝像頭造價(jià)低廉,成像效果好,體現(xiàn)出了較好的性價(jià)比。與此同時(shí)。主板還預(yù)留了多個(gè)外圍接口,以便擴(kuò)展功能。
無線通信模塊采用SIMCOM公司的SIM5218模塊。無線SIM5218是一款WCDMA/HSDPA/GSM/GPRS/EDGE模塊解決方案,支持下行速率達(dá)7.2 Mb/s和上行速率為5.76 Mb/s的數(shù)據(jù)傳輸服務(wù),這對(duì)視頻和圖像等數(shù)據(jù)量相對(duì)較大的信號(hào)傳輸而言是非常理想的選擇。同時(shí),它還具有豐富的接口包括UART,USB 2.0,GPIO,I2C,GPIO,GPS,攝像頭傳感器和內(nèi)嵌SIM卡等。在費(fèi)用方面,3G因?yàn)槭墙柚职粨Q的技術(shù),所以,網(wǎng)絡(luò)使用的費(fèi)用是以消費(fèi)者的數(shù)據(jù)傳輸量來定。

2.2 監(jiān)控中心
車輛監(jiān)控中心由顯示屏幕、監(jiān)控服務(wù)器、主控工作臺(tái)、路由器和存儲(chǔ)器等硬件組成。按功能區(qū)分,其基本功能模塊有數(shù)據(jù)接收模塊、解碼模塊、顯示模塊和存儲(chǔ)模塊等。由于監(jiān)控中心硬件可采用通用器件,故不需要進(jìn)行專門的選型設(shè)計(jì)。

3 系統(tǒng)軟件實(shí)現(xiàn)
系統(tǒng)選擇Linux操作系統(tǒng)。Linux具有源代碼開放、成本低廉、內(nèi)核可裁減性強(qiáng)等特點(diǎn),且集成有TCP/IP協(xié)議,對(duì)網(wǎng)絡(luò)的支持是相對(duì)于其他操作系統(tǒng)的優(yōu)勢?;贏RM Linux的視頻監(jiān)控終端的軟件設(shè)計(jì)主要完成三方面的工作:第一在硬件上搭建一個(gè)軟件平臺(tái),搭建嵌入式Linux軟件開發(fā)平臺(tái)需要完成UBOOT移植、嵌入式Linux操作系統(tǒng)內(nèi)核移植以及嵌入式Linux操作系統(tǒng)的設(shè)備驅(qū)動(dòng)程序的開發(fā)等工作;第二在軟件平臺(tái)的基礎(chǔ)上,借助交叉編譯工具,開發(fā)視頻監(jiān)控終端上運(yùn)行的采集、壓縮、流媒體服務(wù)器程序;第三監(jiān)控中心運(yùn)行的接收、解壓縮、顯示程序。
3.1 S3C2440A的Linux平臺(tái)的搭建
構(gòu)建嵌入式Linux開發(fā)平臺(tái)需要先構(gòu)建交叉編譯環(huán)境。一套完整的交叉編譯環(huán)境包括主機(jī)和目標(biāo)機(jī)。在開發(fā)中主機(jī)是一臺(tái)裝有Centos 5.5操作系統(tǒng)的PC機(jī),目標(biāo)機(jī)是基于S3C2440A的視頻監(jiān)控終端。選用的嵌入式Linux內(nèi)核源代碼包版本號(hào)為2.6.28,交叉編譯器是GCC 4.3.2。編譯內(nèi)核之前首先要配置內(nèi)核,裁減掉冗余的功能模塊。具體步驟如下:
(1)通過命令make menuconfig,對(duì)內(nèi)核進(jìn)行配置,選擇YAFFS文件系統(tǒng),支持NFS啟動(dòng),啟用USB設(shè)備支持模塊,包括USB設(shè)備文件支持模塊、USB主控制器驅(qū)動(dòng)模塊等。此外,USB攝像頭屬于視頻設(shè)備,還需要啟用Video4Linux模塊;
(2)用make dep命令生成內(nèi)核程序間依賴關(guān)系;
(3)make zlmage命令生成內(nèi)核映像文件;
(4)make modules和make modules_install命令生成系統(tǒng)可加載模塊。這樣就生成了zlmage內(nèi)核映像文件,把它下載到目標(biāo)平臺(tái)的FLASH中。
本設(shè)計(jì)采用USB外置攝像頭,在內(nèi)核配置時(shí)要求以模塊形式動(dòng)態(tài)加載。首先要完成驅(qū)動(dòng)程序驅(qū)動(dòng)中需要提供基本的I/O操作接口函數(shù)open、read、write、close的實(shí)現(xiàn),對(duì)中斷的處理實(shí)現(xiàn),內(nèi)存映射功能以及對(duì)I/O通道的控制接口函數(shù)ioctl等,并把他們定義在struct file_operations中。接著把USB驅(qū)動(dòng)程序編譯成可以動(dòng)態(tài)加載的模塊。
3.2 車載移動(dòng)終端軟件設(shè)計(jì)
3.2.1 GPS模塊程序設(shè)計(jì)
GPS接收機(jī)GPS15L輸出數(shù)據(jù)格式符合NMEA-0183標(biāo)準(zhǔn)。NMEA-0183協(xié)議是由美國國家海洋電子協(xié)會(huì)制定的一種串行通信的數(shù)據(jù)協(xié)議,所有輸入輸出信息均為一行ASCII字符。它的一條消息稱為語句(Sentence),每條語句都以“$”開始,以回車換行符()結(jié)束,中間是用逗號(hào)分隔的若干個(gè)域。一條NMEA-0183語句包含以下5個(gè)部分:起始符,固定字符“$”,表示語句開始;標(biāo)識(shí)符域,表示一條語句的全部數(shù)據(jù)域的特定格式,長度可變;數(shù)據(jù)域,包含各種類型的數(shù)據(jù),各數(shù)據(jù)之間用逗號(hào)分隔,數(shù)據(jù)域可以為空,但用來分隔數(shù)據(jù)的逗號(hào)不可省略;校驗(yàn)和,以“{”開始,由2個(gè)字符的十六進(jìn)制數(shù)組成;結(jié)束符,固定字符,表示語句結(jié)束。NMEA-0183語句中最常見的幾種格式有GPGG A(Global Positioning System Fix Data)、GPRMC、GPGSV、GPVTG等,它們包含的信息不盡相同。本設(shè)計(jì)中采用的是GPGGA輸出語句,它包含了主要的GPS定位數(shù)據(jù)。獲取GPS數(shù)據(jù)流程圖如圖3所示。

獲取GPS數(shù)據(jù)流程圖


由圖3可以看出,GPS模塊啟動(dòng)后首先對(duì)串口的初始化也就是對(duì)GPS模塊的初始化,包括設(shè)置波特率、數(shù)據(jù)位、校驗(yàn)位等;然后后開始接收GPS數(shù)據(jù),即從串口讀數(shù)據(jù),并將讀到的數(shù)據(jù)保存到BUF中,接著進(jìn)入數(shù)據(jù)的解析和提取階段,判斷BUF[5]是否等于“c”以判斷是否為MYMGPR MC,若是,則開始提取經(jīng)緯度、時(shí)間等信息并存入結(jié)構(gòu)體GPS_DATA中。
3.2.2 視頻采集模塊設(shè)計(jì)與實(shí)現(xiàn)
視頻采集模塊是通過嵌入式Linux操作系統(tǒng)調(diào)度V4L(Video4Linux)及影像設(shè)備驅(qū)動(dòng)程序來完成視頻采集。V4L是Linux影像系統(tǒng)與嵌入式影像的基礎(chǔ),是Linux kernel里支持影像設(shè)備的一組API。在Linux操作系統(tǒng)中,外部設(shè)備被作為設(shè)備文件來管理,從而使得對(duì)外部設(shè)備的操作就轉(zhuǎn)變成對(duì)設(shè)備文件的操作。其采集流程如圖4所示。

視頻數(shù)據(jù)采集流程圖

主要過程如下:
(1)打開視頻設(shè)備。調(diào)用函數(shù)int open(constchar * pathname,int flags),若返回值為-1,表示打開失敗,否則,表示所打開設(shè)備的文件描述符。
(2)讀取設(shè)備信息。Ioctl(cam_fp,VIDIOC_QUERYCAP,&cap)函數(shù)來取得設(shè)備文件的屬性參數(shù)并存儲(chǔ)存于cap結(jié)構(gòu)中,其中cam_fp指的是打開的視頻設(shè)備文件描述符。
(3)選擇視頻的輸入方式。通過ioetl(cam_fp,VIDIOC_S_INPUT,&chan)函數(shù)設(shè)置視頻設(shè)備的輸入方式,其中chan的數(shù)據(jù)結(jié)構(gòu)類型是V4L2 _input,用來指定視頻的輸入方式。
(4)設(shè)置視頻幀的格式。通過ioctl(cam_fp,VIDIOC_S_FMT,&fmt)函數(shù)設(shè)置視頻的幀格式,其中fmt的數(shù)據(jù)結(jié)構(gòu)類型是V4L2_format,用來指定視頻的寬度、高度、像素大小等。
(5)讀取視頻數(shù)據(jù)。通過read(cam_fp,g_yuv,YUV_SIZE)函數(shù),把攝像頭一幀的數(shù)據(jù)存放到g_yuv中,其中YUV_SIZE指的是每幀數(shù)據(jù)的大小。
(6)關(guān)閉視頻設(shè)備。通過close(cam_fp)函數(shù)來實(shí)現(xiàn)視頻設(shè)備的關(guān)閉。根據(jù)流程圖可對(duì)其進(jìn)行相應(yīng)操作。當(dāng)攝像頭通過USB接口連接后,程序中調(diào)用V4L API對(duì)設(shè)備文件的讀操作read(),即可完成視頻數(shù)據(jù)采集到內(nèi)存中,視頻數(shù)據(jù)可用圖4形式保存,也可壓縮后封裝進(jìn)數(shù)據(jù)包。本文是先將采集數(shù)據(jù)進(jìn)行H.264壓縮后再封裝進(jìn)數(shù)據(jù)包,并傳輸?shù)奖O(jiān)控PC進(jìn)行處理。
3.2.3 視頻壓縮模塊設(shè)計(jì)
因視頻采集模塊采集的視頻數(shù)據(jù)信息量非常大,為了提高數(shù)據(jù)傳輸速度、降低網(wǎng)絡(luò)數(shù)據(jù)流量、保證監(jiān)控的實(shí)時(shí)性,有必要對(duì)車載攝像頭采集的數(shù)據(jù)壓縮編碼。文中采用H.264硬編碼方式(硬編碼具有不占用CPU資源,運(yùn)算速度快等優(yōu)點(diǎn),從而滿足視頻數(shù)據(jù)實(shí)時(shí)性的要求)將攝像頭采集的圖像系列壓縮編碼成流媒體。具體編碼的過程如圖5所示。

視頻數(shù)據(jù)H.264編碼流程圖


(1)創(chuàng)建H.264編碼結(jié)構(gòu)。調(diào)用SsbSipH264Encodehlit(width,height,frame_rate,bitrate,gop_num)函數(shù)實(shí)現(xiàn),其中width表示圖像的寬度,height表示圖像的高度,frame_rate表示幀頻,bitrate表示比特率或碼率,gop_num表示兩個(gè)相離關(guān)鍵幀之間最多包含多少個(gè)幀(B或P幀)。
(2)初始化H.264編碼結(jié)構(gòu),調(diào)用SsbSipH264Encode Exe(handle)函數(shù)。
(3) 獲取視頻輸入地址,調(diào)用SsbSipH264EncodeGetInBuf(handle,0)函數(shù)來實(shí)現(xiàn),該函數(shù)返回視頻輸入的首地址,存放在p_inbuf中。
(4)輸入視頻數(shù)據(jù),調(diào)用memcpy(p_inbuf,yuv_bur,frame_size)函數(shù)實(shí)現(xiàn),p_inbuf存放需要編碼的數(shù)據(jù),yuv_buf存放原始視頻數(shù)據(jù),frame_size表示數(shù)據(jù)的大小。
(5)編碼視頻數(shù)據(jù),對(duì)p_inbuf內(nèi)容進(jìn)行H.264編碼,調(diào)用SsbSipH264EncodeExe(handle)函數(shù)實(shí)現(xiàn)。
(6) 輸出已編碼的數(shù)據(jù),調(diào)用 SsbSipH264EncodeGetOutBuf(handle,size),該函數(shù)返回已編碼圖像的首地址,size表示已編碼圖像的大小。
(7)關(guān)閉硬編碼設(shè)備,調(diào)用SsbsipH264Encode DeInit(handle)函數(shù)實(shí)現(xiàn)的。
3.2.4 嵌入式服務(wù)器boa移植
Linux支持boa、HTTPD、THTTPD等幾種Web服務(wù)器,其中boa Web服務(wù)器更適合于嵌入式系統(tǒng),因?yàn)樗且粋€(gè)單任務(wù)、支持CGI(Common Gateway Interface,通用網(wǎng)關(guān)接口)功能的Web服務(wù)器,只能依次完成用戶的請(qǐng)求,而不會(huì)fork出新的進(jìn)程來處理并發(fā)出連接請(qǐng)求,可執(zhí)行代碼只有約60K。
首先進(jìn)入boa源碼目錄的src子目錄,執(zhí)行命令./con-figure生成Maketile文件,然后修改Makefile文件找到CC=gcc,將其改成CC=arm-linux-gcc,再將CPP=gcc-E改成CPP=arm-linux-gcc-E,并保存退出。然后運(yùn)行make進(jìn)行編譯,得到的可執(zhí)行程序?yàn)閎oa,之后執(zhí)行命令arm-linux-strip boa,將調(diào)試信息去掉,得到的最終程序。第二步完成boa的配置,使其能夠支持CGI程序的執(zhí)行。Boa需要在/etc目錄下建立一個(gè)boa目錄,里面放入boa的主要配置文件boa.conf,主要文件的含義有:AccessLog/var/log/boa/access_log訪問日志文件。如果沒有以/開始,則表示從服務(wù)器的根路徑開始;VerboseCGILogs是否記錄CGI運(yùn)行信息,如果沒有注釋掉,則記錄,注釋掉則不記錄;Document Root/var/wwwHTML文檔的主目錄,如果沒有以/開始,則表示從服務(wù)器的根路徑開始;DirectoryMaker/usr/lib/boa/boa_indexer當(dāng)HTML目錄沒有索引文件時(shí),用戶只指明訪問目錄時(shí),boa會(huì)調(diào)用該程序生索引文件給用戶,因?yàn)樵撨^程比較慢最好不執(zhí)行,可以注釋掉;Scri ptAlia/cgi-bin//var/www/cgi-bin/指明CGI腳本的虛擬路徑對(duì)應(yīng)的實(shí)際路徑。一般所有的CGI腳本都要放在實(shí)際路徑里,用戶訪問執(zhí)行時(shí)輸入站點(diǎn)+虛擬路徑+CGI腳本名。對(duì)boa.conf進(jìn)行修改的必須要保證是使其他的輔助文件和設(shè)置必須和boa.conf里的配置相符,不然boa就不能正常工作。另外還需要?jiǎng)?chuàng)建日志文件所在目錄/var/log/boa,創(chuàng)建HTML文檔的主目錄/var/www,將mime.types文件拷貝到/etc目錄,創(chuàng)建CGI肢本所在目錄/var/www/cgi-bin/。
3.2.5 CGI程序的設(shè)計(jì)
CGI提供了一個(gè)Web服務(wù)器的外部程序通道,運(yùn)行在服務(wù)器上,由瀏覽器輸入觸發(fā),是Web服務(wù)器和系統(tǒng)中其他程序的連接通道。CGI程序就是符合這種接口的程序。服務(wù)器接收到用戶的請(qǐng)求,并將數(shù)據(jù)送給CGI程序。CGI程序接收到數(shù)據(jù)后,啟動(dòng)編寫好的應(yīng)用程序,并按照用戶提供的數(shù)據(jù)執(zhí)行。應(yīng)用程序執(zhí)行完成后,返回執(zhí)行結(jié)果,并通過Web服務(wù)器傳送給用戶瀏覽器顯不。
CGI模塊程序的設(shè)計(jì)主要包括如下幾部分:Web服務(wù)器的配置、HTML頁面的編寫、CGI腳本實(shí)現(xiàn)。
(1)Web服務(wù)器的配置
嵌入式Web服務(wù)器采用boa,其配置是以文本的形式提供,放在文件系統(tǒng)中的/etc/httpd/conf/目錄下面,其主要配置在以上的boa服務(wù)器移植中講述過了。
(2)HTML頁面的編寫
因?yàn)橄到y(tǒng)的設(shè)計(jì)的主要方向是能夠通過USB攝像頭進(jìn)行實(shí)時(shí)監(jiān)控。所以為了實(shí)現(xiàn)簡單化,拋開一些不必要復(fù)雜的選擇項(xiàng)。主要的HTML頁面有登錄界面、注冊(cè)界面和監(jiān)控界面。這些HTML放在嵌入式文件系統(tǒng)的/var/www目錄下。
(3)CGI腳本實(shí)現(xiàn)
實(shí)現(xiàn)動(dòng)態(tài)Web頁面的第二步是用C編寫CGI程序,CGI程序分為以下幾部分:根據(jù)POST方法或GET方法從提交的表單中接收數(shù)據(jù);URL編碼的解碼;用printf()函數(shù)來產(chǎn)生HTML源代碼,并將經(jīng)過解碼后的數(shù)據(jù)正確地返回給瀏覽器。
3.2.6 遠(yuǎn)程視頻數(shù)據(jù)接收模塊設(shè)計(jì)
目前流行的瀏覽器有IE、FireFox、Chrome等,對(duì)于普通的文本及HTML文件支持的GIF、JPEG等格式的圖片都可以輕松的顯示,但對(duì)于實(shí)時(shí)視頻數(shù)據(jù),這些普通瀏覽器無法正常的顯示。所以實(shí)時(shí)視頻數(shù)據(jù)接收模塊主要完成的工作是視頻數(shù)據(jù)的接收、RTP報(bào)文的解封裝、發(fā)送RTcP反饋信息、H.264視頻解碼和Web瀏覽器的顯示。
本系統(tǒng)采用ActiveX控件技術(shù),嵌入在Web頁面中,來完成視頻數(shù)據(jù)的接收、RTP協(xié)議、解碼和最后的顯示工作。最重要的一點(diǎn),系統(tǒng)采用雙緩沖技術(shù),來滿足視頻的解碼速度的問題,實(shí)現(xiàn)實(shí)時(shí)播放。具體流程圖如圖6所示。

接收視頻數(shù)據(jù)流程圖

4 系統(tǒng)的測試與結(jié)論
本文設(shè)計(jì)了一種基于ARM S3C2440的嵌入式視頻監(jiān)控系統(tǒng),首先通過USB采集中星微攝像頭作為服務(wù)器,實(shí)現(xiàn)利用V4L2技術(shù)對(duì)USB攝像頭進(jìn)行數(shù)據(jù)采集,并將數(shù)據(jù)送入H.264編碼模塊進(jìn)行數(shù)據(jù)的壓縮,壓縮后的數(shù)據(jù)經(jīng)過視頻服務(wù)器RTP封裝打包,最后通過嵌入式Web服務(wù)器與遠(yuǎn)程視頻監(jiān)控客戶端進(jìn)行交互。本系統(tǒng)在實(shí)際的運(yùn)營網(wǎng)絡(luò)中進(jìn)行了測試,目標(biāo)定位信息接收速率為1次/s,動(dòng)態(tài)定位精度小于等于10 m;能實(shí)現(xiàn)動(dòng)態(tài)視頻傳輸,且視頻傳輸流暢,圖像最大分辨率可達(dá)VGA(640×480像素),視頻傳輸?shù)馁|(zhì)量優(yōu)于基于2.5G網(wǎng)絡(luò)的車輛監(jiān)控系統(tǒng)(圖像最大的分辨率為320×240像素,且基本上只能傳輸靜態(tài)圖像)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。