新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Android系統的H.264視頻壓縮技術實現

基于Android系統的H.264視頻壓縮技術實現

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

(2)應用程序框架。應用程序架構設計簡化了組件的重用;任一個應用程序都可以發(fā)布功能塊并且其它應用程序都可以使用其所發(fā)布的功能塊。


(3)系統運行庫。當使用Android應用框架時,Android系統會通過一些C/C++庫來支持使用的各個組件,使其能更好地服務。其中包括Bionic系統C庫,多媒體庫,關系數據庫SQLite,Web瀏覽器引擎Webkit等。


(4)Linux內核。Android的核心系統依賴于Linux 2.6內核,它同時也是硬件和軟件之間的抽象層。此外Android對其做了部分修改,主要涉及兩部分。Binder(IPC):提供有效的進程間通信,實現了自己的功能;電源管理:主要為省電,作為手持終端設備低耗電是追求目標。

3.2 底層驅動移植模塊設計


Android系統本身是一個龐大的系統,移植需要考慮Android系統的硬件抽象層(HAL)和Linux中的相關設備驅動程序。移植的目的就是為了改動較小的內容,支撐較為龐大的上層系統。該系統驅動的移植主要為滿足上層應用層的USB攝像頭視頻采集需求。


Android系統驅動移植首先要熟悉硬件抽象層的接口,其次要集成和復用已有的驅動程序,主要的工作量在硬件抽象層的實現中。移植的主要工作有兩方面:Linux驅動、Android系統硬件抽象層。


USB攝像頭驅動程序介于視頻采集應用程序與Linux內核中USB核心的中間層。其一,USB攝像頭驅動向USB核心注冊本身的信息,并調用USB核心提供的API函數為上層服務;其二,應用程序通過調用USB攝像頭驅動的一套接口函數進行視頻采集和調整攝像頭參數等操作,如圖5所示。


3.3 視頻采集模塊設計


基于Android系統的H.264壓縮技術的視頻采集部分包括Android視頻流的提取以及Android界面設計兩部分。Android可以在拍照視頻預覽時截取視頻流的數據。每獲得一幀調用相應的接口函數。其中在Android的上層界面中定義了一個SurfaceView類,主要用于顯示采集到的圖像。Android通過USB攝像頭采集格式為YUV的視頻數據,通過SurfaceView類接口傳輸到應用層通過圖像繪制進行顯示。


應用程序界面設計具體步驟:打開Android項目里的res\layout目錄,用xml語言來編輯設計程序界面。首先確定界面的布局,嵌套ViewGroup的Linear-Layout和RelativeLayou進行布局,調整android:layout_width、android:layout_height、android:back-ground、android:padding等參數值,達到滿意的整體布局效果。然后在ViewGrotrp布局中添加View控件:textview、button根據實際需要調整各控件的android:id、android:layout_heigllt、android:layout_width等參數值,最終完成對Android應用程序UI的布局。


3.4 H.264視頻壓縮模塊設計


H.264是由ITU-T的VCEG和ISO/IEC的MPEG聯合組建的聯合視頻組提出的一個新數字視頻編碼標準。它由VCL層和NAL層組成,VCL層主要負責編解碼,主要包括運動補償、變換編碼、熵編碼等;NAL層主要為VCL提供與網絡無關的統一接口,負責將視頻數據封裝打包后傳遞給網絡。


H.264標準視頻壓縮算法包括5個環(huán)節(jié):幀間幀內預測編碼、正反變換編碼、量化反量化編碼、環(huán)路濾波和熵編碼。算法流程如圖6所示。


技術實現是在Android操作系統上封裝編譯生成Android底層Library的JNI動態(tài)鏈接庫,進而實現H.264標準編解碼。具體實現步驟:選擇合適的編碼器,系統采用X264的編碼器。X264省去了部分復雜增益,編碼速度非???,可以對CIF格式圖像實時編碼。H.264壓縮畫面以及分辨率:支持CIF/QCIF;圖像分辨率:352×288;壓縮格式H.264、MPEG-4壓縮格式;壓縮幀率:1~25幀可調;壓縮碼率:64 kbit·s-1~2 Mbit·s-1:碼流控制方式:變碼流、動碼流、混合碼流。H.264的優(yōu)勢主要體現在下面幾個方面:(1)精確匹配解碼,避免錯誤累積;(2)更簡單的規(guī)范實施;(3)強大的容錯能力;(4)高效壓縮,比其他視頻壓縮能力高50%以上;(5)時延級差,以適應更多應用環(huán)境等。


3.5 主程序流程設計


基于Android系統終端要接受來自監(jiān)控前端的視頻數據,必須采用Socket網絡通信技術。


在進行Socket通信前必須對Socket初始化包括:創(chuàng)建Socket、綁定Socket和端口號、開始監(jiān)聽端口等步驟。創(chuàng)建Socket服務線程。當監(jiān)聽產生后,主進程負責不斷循環(huán)地監(jiān)聽接收到的請求并建立新的客戶連接Socket,創(chuàng)建針對此Socket的通信進程。


3.6 顯示模塊設計


Android平臺的監(jiān)控系統終端顯示需要對視頻數據進行解碼,通過LCD液晶顯示屏實時觀看。解碼過程是編碼的反變換,其中包括獲取視頻流,視頻流信息的配置,視頻流的幀解壓,以及圖像處理過程。該系統選擇4.3寸(10.92 cm)LCD顯示屏在進行顯示端實時查看視頻圖像。

4 結束語


基于Android系統的視頻客戶控制界面,無需專用監(jiān)控軟件、使用方便、成本低。系統通過Arm11CPU直接進行視頻處理和傳輸,在提供高性能的同時,也允許在性能和功耗間做權衡滿足某些特殊的應用需求。鑒于Android的高性能和前沿性,基于Android平臺的視頻服務器可以在安全性要求高的各種場合得到應用,同時結合實際的應用再可以進行功能擴展,可應用到眾多的有線或無線視頻監(jiān)控領域。


上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉