當(dāng)前位置:首頁 > 嵌入式 > 嵌入式軟件
[導(dǎo)讀]基于Android系統(tǒng)的H.264視頻壓縮技術(shù)實現(xiàn)

摘要 提出了基于Android平臺的H.264視頻壓縮技術(shù)設(shè)計方案,該方案終端設(shè)計是基于S3C6410處理器的硬件和Android 2.3版本的軟件平臺,通過終端USB攝像頭的驅(qū)動移植、視頻圖像的H.264標(biāo)準(zhǔn)壓縮以及Socket網(wǎng)絡(luò)編程,實現(xiàn)網(wǎng)絡(luò)視頻監(jiān)控的實時顯示。
關(guān)鍵詞 Android;USB驅(qū)動;H.264.壓縮算法

    視頻服務(wù)器在目前視頻領(lǐng)域中的應(yīng)用,主要是利用網(wǎng)絡(luò)視頻服務(wù)器構(gòu)建遠(yuǎn)程監(jiān)控系統(tǒng)?;诰W(wǎng)絡(luò)視頻服務(wù)器的多通道數(shù)字傳播技術(shù),具有傳統(tǒng)的模擬視頻輸出系統(tǒng)無可比擬的諸多優(yōu)勢。但要使網(wǎng)絡(luò)視頻監(jiān)控得到普及還有待于解決以下問題:盡快提高視頻壓縮的技術(shù)水平,目前先進(jìn)的壓縮標(biāo)準(zhǔn)H.264可以部分解決視頻質(zhì)量和網(wǎng)絡(luò)帶寬占用這個矛盾。
    H.264/AVC標(biāo)準(zhǔn)是一種高性能的視頻編解碼技術(shù),相比以前的標(biāo)準(zhǔn),具有更高的壓縮率、高質(zhì)量圖像、容錯功能、并有很強的網(wǎng)絡(luò)適應(yīng)性。
    隨著Android技術(shù)的迅猛發(fā)展和日趨成熟,其開放性、便攜性、良好的兼容性、無縫結(jié)合網(wǎng)絡(luò)通信等特點將使Android操作系統(tǒng)在未來工業(yè)領(lǐng)域中有廣泛的應(yīng)用。

1 系統(tǒng)概述
    基于Android平臺的視頻服務(wù)器監(jiān)控系統(tǒng)由監(jiān)控前端、監(jiān)控終端和網(wǎng)絡(luò)3部分組成。監(jiān)控前端是一個嵌入式Android系統(tǒng),通過S3C6410的USB攝像頭采集視頻數(shù)據(jù),并傳送給Android應(yīng)用層的編解碼模塊,應(yīng)用層通過調(diào)用JNI接口鏈接Android底層封裝的動態(tài)庫,實現(xiàn)基于H.264標(biāo)準(zhǔn)視頻壓縮,將壓縮數(shù)據(jù)打包發(fā)送到IP網(wǎng)絡(luò)上,監(jiān)控終端通過網(wǎng)絡(luò)接收數(shù)據(jù)包,最后解碼進(jìn)行實時播放?;贏ndroid平臺的H.264視頻壓縮技術(shù)的總體框架圖,如圖1所示。



2 系統(tǒng)的硬件設(shè)計
    基于Android視頻服務(wù)器系統(tǒng)包括視頻信息采集模塊、視頻信息編解碼模塊、視頻數(shù)據(jù)傳輸和顯示模塊組成。視頻信息采集和編碼模塊是整個監(jiān)控系統(tǒng)的前端,主要由USB攝像頭和Android底層的系統(tǒng)庫實現(xiàn);視頻數(shù)據(jù)傳輸模塊是整個監(jiān)控系統(tǒng)的中繼,負(fù)責(zé)監(jiān)控前端和監(jiān)控終端視頻數(shù)據(jù)的交互工作;監(jiān)控終端主要由LCD顯示模塊和電源模塊組成,LCD顯示模塊實時查看視頻,電源模塊為系統(tǒng)提供運行所需的能量。
    該技術(shù)設(shè)計采用Samsung公司的ARM11 S3C6410嵌入式處理器為核心,其主頻為533 MHz/667 MHz,S3C6410是基于16/32-bitRISC內(nèi)核的低成本、低功耗、高性能微處理器解決方案,內(nèi)部集成多個功能強大的硬件加速器,結(jié)合外部極佳的接口設(shè)備,能夠滿足Android程序開發(fā)的需求。其外接存儲設(shè)備包括256 M的DDR-SDRAM、2MB的NOR Flash、2 GB的NAND Flash。外圍接口包括串行口、JTAG調(diào)試接口和USB接口,其中USB接口連接攝像頭負(fù)責(zé)視頻數(shù)據(jù)的采集,LCD進(jìn)行實時顯示。視頻采集設(shè)備硬件結(jié)構(gòu)如圖2所示。

[!--empirenews.page--]

3 軟件設(shè)計概述
    Android的系統(tǒng)構(gòu)架分為應(yīng)用層、應(yīng)用框架層、系統(tǒng)運行庫和IJnux內(nèi)核層,Android應(yīng)用程序的開發(fā)通過應(yīng)用框架與Android底層進(jìn)行交互。技術(shù)實現(xiàn)設(shè)計采用模塊化設(shè)計方案,主要包括底層驅(qū)動移植模塊、視頻采集模塊、視頻壓縮傳輸模塊和視頻顯示模塊。
    基于Android的視頻服務(wù)器系統(tǒng)主要包括監(jiān)控前端、中間網(wǎng)絡(luò)和監(jiān)控終端。監(jiān)控前端的USB攝像頭采集視頻數(shù)據(jù),Android應(yīng)用層調(diào)用封裝的JNI庫進(jìn)行標(biāo)準(zhǔn)的H.264壓縮,經(jīng)過網(wǎng)絡(luò)打包發(fā)送給監(jiān)控終端,終端通過解碼實時查看視頻。其中流媒體服務(wù)器主要由3層結(jié)構(gòu)組成:服務(wù)器、網(wǎng)絡(luò)服務(wù)接口和驅(qū)動模塊,如圖3所示。


3.1 操作系統(tǒng)結(jié)構(gòu)
    Android作為終端操作系統(tǒng),其軟件層次自下而上分為:基于Linux內(nèi)核的操作系統(tǒng)層,各種庫和Android運行環(huán)境,應(yīng)用程序框架和應(yīng)用程序。結(jié)構(gòu)圖如圖4所示。
    (1)應(yīng)用程序。應(yīng)用程序包括Email客戶端,SMS短消息程序,日歷,地圖,瀏覽器,聯(lián)系人管理程序等。所有應(yīng)用程序均使用Java語言編寫。
    (2)應(yīng)用程序框架。應(yīng)用程序架構(gòu)設(shè)計簡化了組件的重用;任一個應(yīng)用程序都可以發(fā)布功能塊并且其它應(yīng)用程序都可以使用其所發(fā)布的功能塊。
    (3)系統(tǒng)運行庫。當(dāng)使用Android應(yīng)用框架時,Android系統(tǒng)會通過一些C/C++庫來支持使用的各個組件,使其能更好地服務(wù)。其中包括Bionic系統(tǒng)C庫,多媒體庫,關(guān)系數(shù)據(jù)庫SQLite,Web瀏覽器引擎Webkit等。
    (4)Linux內(nèi)核。Android的核心系統(tǒng)依賴于Linux 2.6內(nèi)核,它同時也是硬件和軟件之間的抽象層。此外Android對其做了部分修改,主要涉及兩部分。Binder(IPC):提供有效的進(jìn)程間通信,實現(xiàn)了自己的功能;電源管理:主要為省電,作為手持終端設(shè)備低耗電是追求目標(biāo)。[!--empirenews.page--]
3.2 底層驅(qū)動移植模塊設(shè)計
    Android系統(tǒng)本身是一個龐大的系統(tǒng),移植需要考慮Android系統(tǒng)的硬件抽象層(HAL)和Linux中的相關(guān)設(shè)備驅(qū)動程序。移植的目的就是為了改動較小的內(nèi)容,支撐較為龐大的上層系統(tǒng)。該系統(tǒng)驅(qū)動的移植主要為滿足上層應(yīng)用層的USB攝像頭視頻采集需求。
    Android系統(tǒng)驅(qū)動移植首先要熟悉硬件抽象層的接口,其次要集成和復(fù)用已有的驅(qū)動程序,主要的工作量在硬件抽象層的實現(xiàn)中。移植的主要工作有兩方面:Linux驅(qū)動、Android系統(tǒng)硬件抽象層。
    USB攝像頭驅(qū)動程序介于視頻采集應(yīng)用程序與Linux內(nèi)核中USB核心的中間層。其一,USB攝像頭驅(qū)動向USB核心注冊本身的信息,并調(diào)用USB核心提供的API函數(shù)為上層服務(wù);其二,應(yīng)用程序通過調(diào)用USB攝像頭驅(qū)動的一套接口函數(shù)進(jìn)行視頻采集和調(diào)整攝像頭參數(shù)等操作,如圖5所示。


3.3 視頻采集模塊設(shè)計
    基于Android系統(tǒng)的H.264壓縮技術(shù)的視頻采集部分包括Android視頻流的提取以及Android界面設(shè)計兩部分。Android可以在拍照視頻預(yù)覽時截取視頻流的數(shù)據(jù)。每獲得一幀調(diào)用相應(yīng)的接口函數(shù)。其中在Android的上層界面中定義了一個SurfaceView類,主要用于顯示采集到的圖像。Android通過USB攝像頭采集格式為YUV的視頻數(shù)據(jù),通過SurfaceView類接口傳輸?shù)綉?yīng)用層通過圖像繪制進(jìn)行顯示。
    應(yīng)用程序界面設(shè)計具體步驟:打開Android項目里的res\layout目錄,用xml語言來編輯設(shè)計程序界面。首先確定界面的布局,嵌套ViewGroup的Linear-Layout和RelativeLayou進(jìn)行布局,調(diào)整android:layout_width、android:layout_height、android:back-ground、android:padding等參數(shù)值,達(dá)到滿意的整體布局效果。然后在ViewGrotrp布局中添加View控件:textview、button根據(jù)實際需要調(diào)整各控件的android:id、android:layout_heigllt、android:layout_width等參數(shù)值,最終完成對Android應(yīng)用程序UI的布局。
3.4 H.264視頻壓縮模塊設(shè)計
    H.264是由ITU-T的VCEG和ISO/IEC的MPEG聯(lián)合組建的聯(lián)合視頻組提出的一個新數(shù)字視頻編碼標(biāo)準(zhǔn)。它由VCL層和NAL層組成,VCL層主要負(fù)責(zé)編解碼,主要包括運動補償、變換編碼、熵編碼等;NAL層主要為VCL提供與網(wǎng)絡(luò)無關(guān)的統(tǒng)一接口,負(fù)責(zé)將視頻數(shù)據(jù)封裝打包后傳遞給網(wǎng)絡(luò)。
    H.264標(biāo)準(zhǔn)視頻壓縮算法包括5個環(huán)節(jié):幀間幀內(nèi)預(yù)測編碼、正反變換編碼、量化反量化編碼、環(huán)路濾波和熵編碼。算法流程如圖6所示。


    技術(shù)實現(xiàn)是在Android操作系統(tǒng)上封裝編譯生成Android底層Library的JNI動態(tài)鏈接庫,進(jìn)而實現(xiàn)H.264標(biāo)準(zhǔn)編解碼。具體實現(xiàn)步驟:選擇合適的編碼器,系統(tǒng)采用X264的編碼器。X264省去了部分復(fù)雜增益,編碼速度非???,可以對CIF格式圖像實時編碼。H.264壓縮畫面以及分辨率:支持CIF/QCIF;圖像分辨率:352×288;壓縮格式H.264、MPEG-4壓縮格式;壓縮幀率:1~25幀可調(diào);壓縮碼率:64 kbit·s-1~2 Mbit·s-1:碼流控制方式:變碼流、動碼流、混合碼流。H.264的優(yōu)勢主要體現(xiàn)在下面幾個方面:(1)精確匹配解碼,避免錯誤累積;(2)更簡單的規(guī)范實施;(3)強大的容錯能力;(4)高效壓縮,比其他視頻壓縮能力高50%以上;(5)時延級差,以適應(yīng)更多應(yīng)用環(huán)境等。[!--empirenews.page--]
3.5 主程序流程設(shè)計
    基于Android視頻服務(wù)器系統(tǒng)終端要接受來自監(jiān)控前端的視頻數(shù)據(jù),必須采用Socket網(wǎng)絡(luò)通信技術(shù)。
    在進(jìn)行Socket通信前必須對Socket初始化包括:創(chuàng)建Socket、綁定Socket和端口號、開始監(jiān)聽端口等步驟。創(chuàng)建Socket服務(wù)線程。當(dāng)監(jiān)聽產(chǎn)生后,主進(jìn)程負(fù)責(zé)不斷循環(huán)地監(jiān)聽接收到的請求并建立新的客戶連接Socket,創(chuàng)建針對此Socket的通信進(jìn)程。


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

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

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉