基于S3C2410平臺(tái)和WinCE的數(shù)字視頻監(jiān)控系統(tǒng)的設(shè)計(jì)
其中,prefix為設(shè)備文件名,D11為驅(qū)動(dòng)的文件名,Order為設(shè)備文件名索引。硬件配置完成后啟動(dòng)操作系統(tǒng),就可以自動(dòng)加載驅(qū)動(dòng),運(yùn)行應(yīng)用程序進(jìn)行圖像采集了。
3.2 圖像采集程序
中星微攝像頭采用了中星微301PLUS快速主控芯片。該芯片是一款高性能圖像壓縮芯片,輸出MIPEG視頻流數(shù)據(jù)。MIPEG(Motion JPEG)主要是基于靜態(tài)視頻壓縮發(fā)展起來的技術(shù),特點(diǎn)是基本不考慮視頻流中不同幀之間的變化,只單獨(dú)對(duì)某一幀進(jìn)行壓縮,通??蛇_(dá)到6:1的壓縮率。它的誤差穩(wěn)定性非常好,可以獲取清晰度很高的視頻圖像,而且還可以靈活設(shè)置各路視頻清晰度,壓縮幀數(shù)。
本系統(tǒng)直接從攝像頭驅(qū)動(dòng)中獲取MJPEG視頻流數(shù)據(jù),圖像采集流程如圖3所示。
圖像采集模塊用到的主要函數(shù)有:
capInitCamera()用來初始化視頻設(shè)備,并獲取當(dāng)前可用的視頻設(shè)備數(shù)目。
capSetVideoFormat()設(shè)置視頻格式和分辨率。本系統(tǒng)使用的視頻格式為RGB24,分辨率為320×240像素。
capGrabFrsme()從驅(qū)動(dòng)中抓取1幀圖像,并存儲(chǔ)在緩存lpFrameBuffer中。
capGetLastJpeg() 將抓取的MJPEG格式的圖像轉(zhuǎn)換成JPEG格式,送到無線發(fā)送模塊。
capCloseCamera() 關(guān)閉視頻設(shè)備。
視頻采集部分還有查詢視頻采集格式、設(shè)置明暗度、設(shè)置對(duì)比度等相關(guān)函數(shù),不再詳述。
4 視頻傳輸部分
4.1 配置無線網(wǎng)卡
圖像傳輸模塊主要是通過USB接口的無線網(wǎng)卡來實(shí)現(xiàn)的。該無線網(wǎng)卡可與S3C2410集成的USB主機(jī)接口直接相連,工作在2.4 GHz的ISM頻段,采用直接序列擴(kuò)頻通信方式,遵從802.11g協(xié)議,傳輸速度可達(dá)54Mbps,室內(nèi)有效距離為100 m,能夠滿足局域網(wǎng)內(nèi)視頻傳輸?shù)囊蟆1鞠到y(tǒng)通過開發(fā)板和主機(jī)之間的無線網(wǎng)卡構(gòu)建無線局域網(wǎng)絡(luò),能夠?qū)崿F(xiàn)點(diǎn)對(duì)點(diǎn)的無縫連接,用戶通過此無線網(wǎng)絡(luò)可以實(shí)現(xiàn)文件傳輸、視頻通信等應(yīng)用。
開發(fā)板端的無線網(wǎng)卡也需要加載驅(qū)動(dòng)才能運(yùn)行。本系統(tǒng)在定制WinCE操作系統(tǒng)時(shí),首先將無線網(wǎng)卡的驅(qū)動(dòng)程序復(fù)制到\WINDOWS文件夾下,然后向注冊(cè)表中寫入無線網(wǎng)卡的驅(qū)動(dòng)信息。WinCE操作系統(tǒng)啟動(dòng)后會(huì)自動(dòng)檢測(cè)無線網(wǎng)卡是否連接好,并加載驅(qū)動(dòng)程序,此時(shí),就可以通過應(yīng)用程序調(diào)用此無線網(wǎng)卡了。在無線傳輸時(shí),注意要把開發(fā)板和主機(jī)設(shè)置在同一IP網(wǎng)段。
4.2 傳輸視頻數(shù)據(jù)
實(shí)時(shí)傳輸協(xié)議RTP(Real time Transport Protocol)是一種實(shí)時(shí)流式傳輸協(xié)議,能夠保證媒體信號(hào)帶寬與當(dāng)前網(wǎng)絡(luò)狀況相匹配,在一對(duì)一(umcast,單播)或者一對(duì)多(multicast,多播)的網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)流媒體數(shù)據(jù)的實(shí)時(shí)傳輸。RTP通常使用UDP來進(jìn)行多媒體數(shù)據(jù)的傳輸。整個(gè)RTP協(xié)議由兩個(gè)密切相關(guān)的部分組成:RTP數(shù)據(jù)協(xié)議和RTCP控制協(xié)議。
針對(duì)系統(tǒng)數(shù)據(jù)的收發(fā)要求,采用了開源代碼JRT-PLIB提供的RTP協(xié)議棧。JRTPLIB是一個(gè)面向?qū)ο蟮腞TP庫(kù),完全遵循RFC1889設(shè)計(jì)。開發(fā)人員只要初步了解RTP協(xié)議就可以開發(fā)出高質(zhì)量的音/視頻傳輸程序。把它移植到EVC上,稍作修改就可以應(yīng)用在WinCE操作系統(tǒng)的ARM開發(fā)板上了。
4.2.1 建立RTP的數(shù)據(jù)發(fā)送和接收
JRTPLIB提供的RTPSession類可以實(shí)現(xiàn)RTP的數(shù)據(jù)發(fā)送和接收。RTP數(shù)據(jù)發(fā)送和接收的初始化步驟基本相同。首先設(shè)置時(shí)間戳、最大的RTP包尺寸、數(shù)據(jù)超時(shí)等會(huì)話參數(shù),然后設(shè)置基端口(注意這個(gè)端口必須是偶數(shù),默認(rèn)值為5000)。在設(shè)置好這些參數(shù)之后,就可以使用RTPSession的Create方法建立RTP數(shù)據(jù)接收和發(fā)送了。
數(shù)據(jù)發(fā)送端使用RTPIPv4Address(intIP,PORT_DATA)建立一個(gè)新的地址,再使用AddDestination將這個(gè)地址增加到發(fā)送的地址列表中。然后,調(diào)用SendPacket函數(shù)發(fā)送RTP數(shù)據(jù)。
rtpSessiorl. SendPacket(sendBuf,length,26,true,0UL);
在數(shù)據(jù)接收端建立RTP會(huì)話并且增加了目標(biāo)地址后,就可以從目標(biāo)地址接收數(shù)據(jù)了。此時(shí)將調(diào)用OnRtpPacket函數(shù)接收RTP數(shù)據(jù),在這個(gè)函數(shù)里取得裝載數(shù)據(jù)并使用。在OnRTPPacket函數(shù)中,調(diào)用函數(shù)zc030x_OutPicture(&m_pDlg->frame),對(duì)接收到的數(shù)據(jù)進(jìn)行解碼。最后,調(diào)用函數(shù)StretchDIBits(),在當(dāng)前窗口中顯示視頻圖像。
void RTPAppSession::OnRTPPacket (RTPPacket *
pack,const RTPTime & receivetime,const RTPAddress
*senderaddress)
4.2.2 RTP的控制協(xié)議——RTCP
RTCP(Real-time Transport Control Protocol)和RTP一起提供流量控制和擁塞控制服務(wù)。在RTP會(huì)話期間,各參與者周期性地傳送RTCP包。RTCP包中含有已發(fā)送的數(shù)據(jù)包的數(shù)量、丟失的數(shù)據(jù)包的數(shù)量等統(tǒng)計(jì)資料,因此,服務(wù)器可以利用這砦信息動(dòng)態(tài)地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,以有效的反饋和最小的開銷使傳輸效率達(dá)到最佳效果。
JRTPLIB是一個(gè)高度封裝的RTP庫(kù),調(diào)用PollData()或者SendPacket()方法后,JRTPLIB能夠自動(dòng)對(duì)到達(dá)的RTCP數(shù)據(jù)報(bào)進(jìn)行處理,并在需要時(shí)發(fā)送RTCP數(shù)據(jù)報(bào),從而確保整個(gè)RTP會(huì)話過程的正確性。在RTP數(shù)據(jù)收發(fā)中,也可以通過調(diào)用RTPSession類提供的方法選擇當(dāng)前RTP會(huì)話需要發(fā)送的控制信息,并對(duì)控制信息進(jìn)行設(shè)置。
結(jié)語(yǔ)
本系統(tǒng)基于S3C2410平臺(tái)和WinCE操作系統(tǒng),通過USB攝像頭采集現(xiàn)場(chǎng)實(shí)時(shí)視頻信息,并對(duì)其進(jìn)行壓縮。然后,用兩塊無線網(wǎng)卡在開發(fā)板與上位機(jī)之間構(gòu)建無線局域網(wǎng)絡(luò),使用實(shí)時(shí)流式傳輸方式實(shí)現(xiàn)了視頻數(shù)據(jù)的無線傳輸。整個(gè)系統(tǒng)具有穩(wěn)定可靠、安裝簡(jiǎn)便、成本低廉等特點(diǎn),可以應(yīng)用在遠(yuǎn)程監(jiān)控、工業(yè)控制、視頻會(huì)議、可視電活等諸多領(lǐng)域。
評(píng)論