基于ARM9的嵌入式3G無線視頻監控系統設計
相對于有線網絡而言,無線網絡狀況更不穩定,除去網絡流量所造成的傳輸速率的波動外, 設備的移動速度和所在位置也會嚴重地影響到傳輸速率。其次, 無線信道的環境也要比有線信道惡劣得多,數據的誤碼率也要高許多,而高壓縮的碼流對傳輸錯誤非常敏感, 還會造成錯誤向后面的圖像擴散, 因此無線流媒體在信源和信道編碼上需要很好的容錯技術。錯誤恢復的工具隨著視頻壓縮編碼技術的提高在不斷改進。舊的標準(H.261、H.263、MPEG-2 的第二部分)中,使用片和宏塊組的劃分、幀內編碼宏塊、幀內編碼片和幀內編碼圖像來防止錯誤的擴散。之后改進的標準(H.263+,MPEG-4)中,使用多幀參考和數據分割技術來恢復錯誤。H.264 標準在以前的基礎上提出了三種關鍵技術來進行錯誤的恢復, 分別是參數集合、靈活的宏塊次序(FMO)和冗余片(RS)。FMO 是H.264 的一大特色,可以是一幀中的宏塊順序分割,使分割后的片的尺寸小于無線網絡的MTU 尺寸,避免在網絡層再進行一次數據分割,降低了數據傳輸的額外開銷。
3.4 嵌入式Web 服務器設計
本系統選用適合嵌入式系統的Boa 服務器, 它是單任務HTTP 服務器, 占用空間小, 另外支持動態Web 技術的CGI 技術, 源代碼開放, 性能高。嵌入式Boa 服務器移植到Linux 系統中的網上相關資料很多, 不再贅述。
下面重點介紹應用程序接口CGI 程序設計。
公共網關接口CGI 是HTTP 服務器與其他機器上的程序進行“ 交談” 的一種工具, 其程序須運行在網絡服務器上。CGI 是一個用于Web 服務器與外部程序之間通信方式的標準, 使得外部程序能生成HTML、圖像或其他內容,而服務器處理的方式與那些非外部程序生成的HTML、圖像或其他內容的處理方式是相同的。使用CGI的原因在于它是一個定義良好并被廣泛支持的標準, 沒有CGI 就不可能實現動態的Web 頁面, 除非使用一些服務器中提供的特殊方法。
CGI 程序入口為main () 函數, 函數首先執行初始化用到的變量, 然后根據提供的環境變量Environmentv 獲取當前訪問用戶的用戶名, 判斷用戶的訪問權限, 然后根據REQUESM 得到用戶的請求方法。如果是POST, 則根據Contentl 獲取用戶請求內容并分析;如果是GET, 則根據Querys 獲取信息并分析請求內容, 最后根據用戶權限做出相應的處理;如果是其他的請求方法, 則返回錯誤, 不支持該請求方法。流程圖如圖5 所示。
圖5 CGI 程序處理流程
S3C2410 憑借其高性價比、豐富的接口以及對網絡的強大支持, 使其非常適合做網絡視頻監控系統的Web視頻服務器的處理器。H.264 算法具有很高的編碼效率, 在相同的重建圖像質量下, 能夠比H.263 降低50%左右的碼率。H.264 的碼流結構網絡適應性強, 增加了差錯恢復能力,能夠很好地適應IP 和無線網絡。本系統支持動態IP, 可以直接連入以太網, 能夠即插即看。通過局域網(100 Mb/s 以太網) 內部測試, 可以達到25 幀/秒CIF 圖像(320×240) 要求, 傳輸延遲0.6 s 以內, 編碼后的碼率150 Kbit/s , 由客戶端軟件解碼恢復后的視頻圖像清晰、流暢、沒有抖動現象, 能獲得較好的視頻質量。
評論