亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Android平臺(tái)上H.264視頻前端模塊的研究

        2012-09-04 02:04:08許建東
        關(guān)鍵詞:分片編碼傳輸

        許建東,彭 宏

        (浙江省通信網(wǎng)應(yīng)用技術(shù)研究重點(diǎn)實(shí)驗(yàn)室,浙江杭州310023)

        0 引言

        隨著3G網(wǎng)絡(luò)的不斷普及,人們已經(jīng)不再僅僅滿足2G網(wǎng)絡(luò)中的聲音,圖像等多媒體體驗(yàn),大量的視頻應(yīng)用應(yīng)運(yùn)而生。如Android平臺(tái)上常見的視頻應(yīng)用有:視頻通話;視頻上傳分享;視頻點(diǎn)播觀看;視頻監(jiān)控等各種豐富生活的應(yīng)用[1]。然而,盡管3G網(wǎng)絡(luò)在上下行速度上相較于2G網(wǎng)絡(luò)提升了許多,但未經(jīng)壓縮過的視頻數(shù)據(jù)所需帶寬比3G網(wǎng)絡(luò)能夠提供的帶寬還是大很多。因此將原始的視頻數(shù)據(jù)直接進(jìn)行傳輸是不現(xiàn)實(shí)的。為了使現(xiàn)有的網(wǎng)絡(luò)帶寬支持視頻傳輸,視頻數(shù)據(jù)在傳輸前一般都要進(jìn)行壓縮編碼處理。本文中所采用的H.264編碼所具有的高效壓縮比,高圖像質(zhì)量,良好網(wǎng)絡(luò)適應(yīng)性等優(yōu)點(diǎn)將為視頻應(yīng)用帶來更好的用戶體驗(yàn)。本文介紹的H.264編碼的視頻前端模塊,可以很方便地嵌入到各種視頻應(yīng)用中。

        1 模塊分析

        H.264視頻前端模塊完成的功能描述如下:

        (1)采集手機(jī)終端攝像頭所獲取的視頻數(shù)據(jù)。通過android.hardware.Camera類來控制攝像頭設(shè)備,攝像頭采集視頻時(shí)的參數(shù)可以通過Camera對(duì)象的getParameters()函數(shù)來得到一個(gè)android.hardware.Camera.Parameters對(duì)象設(shè)置;

        (2)將視頻數(shù)據(jù)送入編碼庫進(jìn)行編碼。編碼庫提供的編碼參數(shù)包括:視頻寬度,視頻高度,幀率。本文的開發(fā)環(huán)境雖然為Android平臺(tái),但是考慮到視頻編解碼的效率問題,因此編碼具體是由C語言實(shí)現(xiàn)的,通過搭建NDK環(huán)境,可以很方便地在Android平臺(tái)上實(shí)現(xiàn)C語言代碼的利用;

        (3)最終將得到的編碼結(jié)果分片,以便在網(wǎng)絡(luò)中傳輸。最終得到的H.264視頻編碼信息即NAL(網(wǎng)絡(luò)抽象層),往往是比3G網(wǎng)絡(luò)的MTU(網(wǎng)絡(luò)傳輸最大包大小)大很多的,因此,發(fā)送視頻數(shù)據(jù)之前,應(yīng)該進(jìn)行數(shù)據(jù)分片操作,將每個(gè)發(fā)送的包控制在MTU大小之下。

        模塊的整個(gè)示意圖如圖1所示。

        圖1 模塊示意圖

        整個(gè)模塊最終得到的結(jié)果是可以直接作為負(fù)載傳輸?shù)臄?shù)據(jù)。但是考慮到視頻數(shù)據(jù)流大,數(shù)據(jù)傳輸質(zhì)量難以保證,因此視頻數(shù)據(jù)往往不會(huì)以裸數(shù)據(jù)的形式進(jìn)行傳輸,比較常見的方法是利用RTP(實(shí)時(shí)傳輸協(xié)議)來進(jìn)行封裝之后再進(jìn)行傳輸。經(jīng)過分片之后的數(shù)據(jù)即可直接作為RTP負(fù)載,進(jìn)行實(shí)時(shí)視頻流傳輸。

        2 NDK配置

        本地開發(fā)包(Native Development Kit,DNK)提供了一系列的工具,幫助開發(fā)者快速開發(fā)C(或C++)的動(dòng)態(tài)庫,使開發(fā)者能夠最大程度的源碼再利用[2]。在開發(fā)有關(guān)音視頻編解碼的應(yīng)用中,使用C/C++的編解碼代碼,往往比使用Java來進(jìn)行編解碼能夠帶來更好的性能。使用要求:(1)一套交叉編譯工具(編譯器,連接器等),可以產(chǎn)生本地的ARM二進(jìn)制文件在Linux,OS X和Windows操作系統(tǒng)運(yùn)用,推薦使用Cygwin;(2)一套系統(tǒng)頭符合于Android平臺(tái)支持的穩(wěn)定本地API列表。Android SDK版本需要在1.5以上。

        使用NDK生成一個(gè)可以在Android平臺(tái)上調(diào)用的動(dòng)態(tài)庫.SO如下步驟:(1)下載Windows版本NDK,解壓即可。下載安裝Cygwin,可以通過gcc-v與make-v分別查看gcc與makeflie編譯工具是否安裝正常;(2)配置Cygwin。找到Cygwin的安裝目錄下的home文件夾,將home文件夾中的.bash_profile文件用文本編輯器打開,添加上ANDROID_NDK_ROOT=/cygdrive/NDK目錄export ANDROID_NDK_ROOT。其中NDK目錄根據(jù)自己解壓的NDK目錄設(shè)置;(3)在NDK中新建一個(gè)項(xiàng)目并且寫好這個(gè)項(xiàng)目的makefile文件,使用Cygwin進(jìn)入這個(gè)項(xiàng)目目錄,執(zhí)行ndk-build即可生成動(dòng)態(tài)庫.SO文件。

        3 采集壓縮分片

        由模塊分析可知,整個(gè)模塊主要分為3個(gè)功能模塊:采集模塊;壓縮模塊;分片模塊。3個(gè)模塊完成各自不同的功能,同時(shí)最大限度的保證整個(gè)模塊的實(shí)用性。

        3.1 采集壓縮模塊

        這部分完成Android終端視頻數(shù)據(jù)的獲取以及壓縮工作。視頻數(shù)據(jù)的獲取工作可以根據(jù)Google提供的Android API來完成。為保證模塊的實(shí)用性,壓縮過程中需要保證參數(shù)集的確定。

        參數(shù)集是H.264標(biāo)準(zhǔn)引入的一個(gè)新概念。H.264取消了序列層和圖像層,而將原本包含于上述兩層的信息游離出來并放入?yún)?shù)集中。序列和圖像頭信息是非常關(guān)鍵的信息,它們對(duì)后續(xù)的解碼工作至關(guān)重要[4]。參數(shù)集序列分為序列參數(shù)集和圖像參數(shù)集。序列參數(shù)集包括一個(gè)視頻序列的所有信息,如幀數(shù)、參考幀數(shù)目、解碼圖像尺寸等;圖像參數(shù)集包括一個(gè)圖像的所有分片的相關(guān)信息,如片組數(shù)目、熵編碼模式選擇標(biāo)識(shí)、初始量化參數(shù)、去方塊濾波系數(shù)調(diào)整標(biāo)識(shí)等[4]。因此,在編碼端控制好參數(shù)集可以為后續(xù)的解碼工作提供反饋調(diào)節(jié)。解碼端可以通過發(fā)送參數(shù)集數(shù)據(jù)來調(diào)整編碼端的編碼質(zhì)量。

        3.2 分片模塊

        最大傳輸包(Maximum Transmission Unit,MTU)。即網(wǎng)絡(luò)上傳送的最大數(shù)據(jù)包,單位為字節(jié)。

        大部分網(wǎng)絡(luò)設(shè)備的MTU都是1 500。如果本機(jī)的MTU比網(wǎng)關(guān)的MTU大,大的數(shù)據(jù)包就會(huì)被拆開來傳送,這樣會(huì)產(chǎn)生很多數(shù)據(jù)包碎片,增加丟包率,降低網(wǎng)絡(luò)速度。把本機(jī)的MTU設(shè)成比網(wǎng)關(guān)的MTU小或相同,就可以減少丟包。因此,設(shè)置合理的MTU值對(duì)于實(shí)時(shí)系統(tǒng),如實(shí)時(shí)監(jiān)控系統(tǒng),實(shí)時(shí)通話系統(tǒng),將會(huì)有很大的影響??紤]到H.264在Android上的應(yīng)用大多是會(huì)有傳輸過程,本文為了提高實(shí)用性,加上了傳輸前必須做的分片處理。根據(jù)實(shí)際統(tǒng)計(jì),一個(gè)完整的NAL通常在4-7k字節(jié)左右,而以太網(wǎng)等網(wǎng)絡(luò)的MTU為1 500字節(jié)。因此無法一次發(fā)送整個(gè)NAL數(shù)據(jù)。根據(jù)多次實(shí)踐,本文系統(tǒng)將MTU的值確定在1 000到1 100之間時(shí),系統(tǒng)的丟包率比較理想。

        3.3 測(cè)試結(jié)果

        本文采用的測(cè)試環(huán)境為Android系統(tǒng)2.3的HTC wildfire機(jī)型,cpu為600Mhz。壓縮分辨率為qcif(177×144),壓縮幀率可以在10-12幀之間。測(cè)試畫面如圖2所示,右下角小圖為壓縮之后的視頻。

        4 結(jié)束語

        本文提出的H.264前端采集壓縮分片模塊高度集成了H.264視頻流應(yīng)用的前端工作,可以非常方便,快速地嵌入到所開發(fā)的整套系統(tǒng)中。并且為了提高實(shí)用性,在實(shí)現(xiàn)過程中保留了參數(shù)集選項(xiàng),同時(shí)考慮了實(shí)際發(fā)送過程中的分包處理,具有很大的實(shí)際意義。

        圖2 測(cè)試壓縮圖

        [1]楊鑫,牛建偉,胡建平.一種基于H.264的智能手機(jī)監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué)與計(jì)算機(jī),2006,23(9):118-119.

        [2]呂雪.基于網(wǎng)絡(luò)的視頻監(jiān)控系統(tǒng)研究[J].國外建材科技,2006,27(2):64-65.

        [3]公磊,周聰.基于Android的移動(dòng)終端應(yīng)用程序的開發(fā)與研究[J].計(jì)算機(jī)與現(xiàn)代化,2008,12(8)86-89.

        [4]楊偉偉.基于H.264的移動(dòng)視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江工業(yè)大學(xué),2011:28-29.

        [5]楊志文.Google Android程序設(shè)計(jì)指南[M].北京:電子工業(yè)出版社,2009:4-6.

        猜你喜歡
        分片編碼傳輸
        上下分片與詞的時(shí)空佈局
        詞學(xué)(2022年1期)2022-10-27 08:06:12
        基于SAR-SIFT和快速稀疏編碼的合成孔徑雷達(dá)圖像配準(zhǔn)
        混合型隨機(jī)微分方程的傳輸不等式
        牽引8K超高清傳輸時(shí)代 FIBBR Pure38K
        分片光滑邊值問題的再生核方法
        CDN存量MP4視頻播放優(yōu)化方法
        《全元詩》未編碼疑難字考辨十五則
        子帶編碼在圖像壓縮編碼中的應(yīng)用
        電子制作(2019年22期)2020-01-14 03:16:24
        基于模糊二分查找的幀分片算法設(shè)計(jì)與實(shí)現(xiàn)
        Genome and healthcare
        成人性生交大片免费看7| 国产剧情av麻豆香蕉精品| 一本一道波多野结衣av中文| 九色精品国产亚洲av麻豆一| 精品久久综合日本久久综合网| 国产av无码专区亚洲avjulia| 欧美熟妇精品一区二区三区| 亚洲欧美变态另类综合| 成人大片在线观看视频| 日本在线 | 中文| 丰满人妻熟妇乱又伦精品视| www.av在线.com| 色婷婷久久综合中文蜜桃| 2019最新中文字幕在线观看| 中文字幕亚洲无线码| 淫妇日韩中文字幕在线| 亚洲最大av在线精品国产| 熟妇熟女乱妇乱女网站| 亚洲av熟妇高潮30p| 蜜桃av噜噜一区二区三区香| 日韩三级一区二区不卡| 天堂资源中文最新版在线一区| 樱花AV在线无码| 琪琪av一区二区三区| 久青草影院在线观看国产| 亚洲精华国产精华液的福利| 欧美激情国产一区在线不卡| 男女上床免费视频网站| 无码人妻少妇久久中文字幕蜜桃| 亚洲国产AV无码男人的天堂| 日韩在线手机专区av| 青青草免费手机视频在线观看| 亚洲男人av天堂午夜在| 国产人成亚洲第一网站在线播放| 日本一区二区视频免费在线观看| 国产成人精品亚洲日本在线观看 | 亚洲日韩精品一区二区三区| 国际无码精品| 日本一区二区精品色超碰| 8x国产精品视频| 国产成人精品成人a在线观看 |