新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于S3C2410平臺和WinCE的數字視頻監控系統的設計

        基于S3C2410平臺和WinCE的數字視頻監控系統的設計

        作者: 時間:2010-12-12 來源:網絡 收藏

        其中,prefix為設備文件名,D11為驅動的文件名,Order為設備文件名索引。硬件配置完成后啟動操作系統,就可以自動加載驅動,運行應用程序進行圖像采集了。

        3.2 圖像采集程序

        中星微攝像頭采用了中星微301PLUS快速主控芯片。該芯片是一款高性能圖像壓縮芯片,輸出MIPEG流數據。MIPEG(Motion JPEG)主要是靜態壓縮發展起來的技術,特點是基本不考慮流中不同幀之間的變化,只單獨對某一幀進行壓縮,通常可達到6:1的壓縮率。它的誤差穩定性非常好,可以獲取清晰度很高的視頻圖像,而且還可以靈活設置各路視頻清晰度,壓縮幀數。

        本系統直接從攝像頭驅動中獲取MJPEG視頻流數據,圖像采集流程如圖3所示。

        圖像采集模塊用到的主要函數有:

        capInitCamera()用來初始化視頻設備,并獲取當前可用的視頻設備數目。

        capSetVideoFormat()設置視頻格式和分辨率。本系統使用的視頻格式為RGB24,分辨率為320×240像素。

        capGrabFrsme()從驅動中抓取1幀圖像,并存儲在緩存lpFrameBuffer中。

        capGetLastJpeg() 將抓取的MJPEG格式的圖像轉換成JPEG格式,送到無線發送模塊。

        capCloseCamera() 關閉視頻設備。

        視頻采集部分還有查詢視頻采集格式、設置明暗度、設置對比度等相關函數,不再詳述。

        4 視頻傳輸部分

        4.1 配置無線網卡

        圖像傳輸模塊主要是通過USB接口的無線網卡來實現的。該無線網卡可與集成的USB主機接口直接相連,工作在2.4 GHz的ISM頻段,采用直接序列擴頻通信方式,遵從802.11g協議,傳輸速度可達54Mbps,室內有效距離為100 m,能夠滿足局域網內視頻傳輸的要求。本系統通過開發板和主機之間的無線網卡構建無線局域網絡,能夠實現點對點的無縫連接,用戶通過此無線網絡可以實現文件傳輸、視頻通信等應用。

        開發板端的無線網卡也需要加載驅動才能運行。本系統在定制操作系統時,首先將無線網卡的驅動程序復制到\WINDOWS文件夾下,然后向注冊表中寫入無線網卡的驅動信息。操作系統啟動后會自動檢測無線網卡是否連接好,并加載驅動程序,此時,就可以通過應用程序調用此無線網卡了。在無線傳輸時,注意要把開發板和主機設置在同一IP網段。

        4.2 傳輸視頻數據

        實時傳輸協議RTP(Real time Transport Protocol)是一種實時流式傳輸協議,能夠保證媒體信號帶寬與當前網絡狀況相匹配,在一對一(umcast,單播)或者一對多(multicast,多播)的網絡環境中實現流媒體數據的實時傳輸。RTP通常使用UDP來進行多媒體數據的傳輸。整個RTP協議由兩個密切相關的部分組成:RTP數據協議和RTCP控制協議。

        針對系統數據的收發要求,采用了開源代碼JRT-PLIB提供的RTP協議棧。JRTPLIB是一個面向對象的RTP庫,完全遵循RFC1889。開發人員只要初步了解RTP協議就可以開發出高質量的音/視頻傳輸程序。把它移植到EVC上,稍作修改就可以應用在操作系統的ARM開發板上了。

        4.2.1 建立RTP的數據發送和接收

        JRTPLIB提供的RTPSession類可以實現RTP的數據發送和接收。RTP數據發送和接收的初始化步驟基本相同。首先設置時間戳、最大的RTP包尺寸、數據超時等會話參數,然后設置基端口(注意這個端口必須是偶數,默認值為5000)。在設置好這些參數之后,就可以使用RTPSession的Create方法建立RTP數據接收和發送了。

        數據發送端使用RTPIPv4Address(intIP,PORT_DATA)建立一個新的地址,再使用AddDestination將這個地址增加到發送的地址列表中。然后,調用SendPacket函數發送RTP數據。

        rtpSessiorl. SendPacket(sendBuf,length,26,true,0UL);

        在數據接收端建立RTP會話并且增加了目標地址后,就可以從目標地址接收數據了。此時將調用OnRtpPacket函數接收RTP數據,在這個函數里取得裝載數據并使用。在OnRTPPacket函數中,調用函數zc030x_OutPicture(&m_pDlg->frame),對接收到的數據進行解碼。最后,調用函數StretchDIBits(),在當前窗口中顯示視頻圖像。

        void RTPAppSession::OnRTPPacket (RTPPacket *

        pack,const RTPTime & receivetime,const RTPAddress

        *senderaddress)

        4.2.2 RTP的控制協議——RTCP

        RTCP(Real-time Transport Control Protocol)和RTP一起提供流量控制和擁塞控制服務。在RTP會話期間,各參與者周期性地傳送RTCP包。RTCP包中含有已發送的數據包的數量、丟失的數據包的數量等統計資料,因此,服務器可以利用這砦信息動態地改變傳輸速率,甚至改變有效載荷類型。RTP和RTCP配合使用,以有效的反饋和最小的開銷使傳輸效率達到最佳效果。

        JRTPLIB是一個高度封裝的RTP庫,調用PollData()或者SendPacket()方法后,JRTPLIB能夠自動對到達的RTCP數據報進行處理,并在需要時發送RTCP數據報,從而確保整個RTP會話過程的正確性。在RTP數據收發中,也可以通過調用RTPSession類提供的方法選擇當前RTP會話需要發送的控制信息,并對控制信息進行設置。

        結語

        本系統和WinCE操作系統,通過USB攝像頭采集現場實時視頻信息,并對其進行壓縮。然后,用兩塊無線網卡在開發板與上位機之間構建無線局域網絡,使用實時流式傳輸方式實現了視頻數據的無線傳輸。整個系統具有穩定可靠、安裝簡便、成本低廉等特點,可以應用在遠程監控、工業控制、視頻會議、可視電活等諸多領域。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 天津市| 文昌市| 武山县| 化州市| 军事| 彰武县| 科技| 灵台县| 资兴市| 上饶市| 和平区| 岑溪市| 望江县| 平果县| 嘉兴市| 渭南市| 辉南县| 恭城| 绥芬河市| 文山县| 庄河市| 宿松县| 射洪县| 工布江达县| 清新县| 蒲江县| 彭阳县| 连山| 西藏| 永清县| 镇宁| 时尚| 彭阳县| 营山县| 北海市| 霍山县| 乌兰县| 长丰县| 西贡区| 揭阳市| 巨鹿县|