資源描述:
《基于android的視頻流自適應(yīng)算法設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在學(xué)術(shù)論文-天天文庫(kù)。
1、基于Android的視頻流自適應(yīng)算法設(shè)計(jì) 摘 要:隨著網(wǎng)絡(luò)的快速發(fā)展,對(duì)高質(zhì)量視頻的實(shí)時(shí)傳輸提出了更高的要求,然而由于智能手機(jī)處理能力低、內(nèi)存小等硬件配置因素,使得嵌入式媒體播放器中的視頻數(shù)據(jù)無(wú)法自適應(yīng)網(wǎng)絡(luò)狀況,最終導(dǎo)致視頻數(shù)據(jù)在傳輸過(guò)程中大量丟失,降低接收到的視頻圖像質(zhì)量。在此提出基于Android的視頻流自適應(yīng)算法,該算法可動(dòng)態(tài)探測(cè)網(wǎng)絡(luò)帶寬,自動(dòng)適應(yīng)網(wǎng)絡(luò)擁塞狀況,制定平滑的數(shù)據(jù)傳輸帶寬,緩解網(wǎng)絡(luò)擁塞,根據(jù)傳輸帶寬控制視頻編碼和視頻傳輸速率,提高視頻傳輸質(zhì)量?! £P(guān)鍵詞:網(wǎng)絡(luò)擁塞; 媒體播放器; Android; 視頻自
2、適應(yīng); 網(wǎng)絡(luò)帶寬 中圖分類(lèi)號(hào):TN91934; TP301.6文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1004373X(2012)2200420410 近年來(lái)隨著網(wǎng)絡(luò)的快速發(fā)展,對(duì)高質(zhì)量視頻的實(shí)時(shí)傳輸也提出了更高的要求,然而由于IP網(wǎng)絡(luò)的體系結(jié)構(gòu)就決定它只能提一種供盡力而為(Besteffort)的傳輸服務(wù),并沒(méi)有服務(wù)質(zhì)量的保障(QoS),因此很難保證視頻傳輸所需的穩(wěn)定帶寬,最終將導(dǎo)致網(wǎng)絡(luò)擁塞,并且在傳輸過(guò)程中丟失大量的視頻數(shù)據(jù),引起接收到的視頻圖像質(zhì)量急劇下降。目前,盡管在許多高端手機(jī)和PDA上都有多媒體播放器,但是因?yàn)槭謾C(jī)處理器能力
3、低、內(nèi)存小等硬件配置因素的影響,和PC機(jī)上的播放器相比手機(jī)現(xiàn)有的這些播放器功能都非常不完善,嚴(yán)重影響著視頻流的解碼效率,并最終導(dǎo)致解碼出的視頻頻數(shù)據(jù)無(wú)法實(shí)時(shí)處理,極大地影響用戶(hù)的使用。這一現(xiàn)象產(chǎn)生的原因主要是由于媒體播放器是基于嵌入式系統(tǒng)的,而目前所用的大多數(shù)嵌入式處理器其工作頻率和運(yùn)算能力都不能和同時(shí)期的PC機(jī)用的處理器相比,而播放高質(zhì)量的視頻文件又需要處理器進(jìn)行大量復(fù)雜的解碼工作,所以一旦CPU處理速度跟不上就會(huì)使導(dǎo)致圖像質(zhì)量下降?! 〗鉀Q這一問(wèn)題主要有2種方法,一種方法就是在硬件上使用更高性能的CPU或者硬件解碼芯片,
4、加快視頻處理速度;另一種方法就是在軟件上使用好的視頻自適應(yīng)算法,當(dāng)產(chǎn)生網(wǎng)絡(luò)擁塞而導(dǎo)致丟包時(shí)可以及時(shí)糾正。一般來(lái)說(shuō),系統(tǒng)使用的硬件一旦確定就不會(huì)輕易改變,因?yàn)檫@涉及到硬件電路設(shè)計(jì)、成本等諸多因素,所以本文將從軟件角度改善視頻流的傳輸,提出基于Android的視頻流自適應(yīng)算法,該算法可以動(dòng)態(tài)探測(cè)網(wǎng)絡(luò)帶寬,自動(dòng)適應(yīng)網(wǎng)絡(luò)擁塞狀況,制定平滑的數(shù)據(jù)傳輸帶寬,從而緩解網(wǎng)絡(luò)擁塞,根據(jù)傳輸帶寬控制視頻編碼和視頻傳輸速率,相應(yīng)地提高視頻傳輸質(zhì)量?! ? 系統(tǒng)分析 1.1 Android平臺(tái)簡(jiǎn)介 Android系統(tǒng)是Google公司開(kāi)發(fā)的基于
5、Linux系統(tǒng)的開(kāi)源手機(jī)操作平臺(tái),采用軟件堆層(Software Stack)的架構(gòu),是首個(gè)為移動(dòng)終端打造的真正開(kāi)放和完整的移動(dòng)軟件。10 Android平臺(tái)框架共由5部分組成。底層核心是基于Linux 2.6內(nèi)核開(kāi)發(fā)的獨(dú)立操作系統(tǒng),該層用來(lái)提供系統(tǒng)的底層服務(wù),包括安全機(jī)制、內(nèi)存管理、進(jìn)程管理、網(wǎng)絡(luò)堆棧及一系列的驅(qū)動(dòng)模塊。中間是Android執(zhí)行環(huán)境,包括系統(tǒng)運(yùn)行庫(kù)、Dalvik虛擬機(jī)、核心庫(kù)和一些C/C++庫(kù)等支持Android使用的各個(gè)組件。應(yīng)用層框架是開(kāi)發(fā)人員使用這些API框架來(lái)開(kāi)發(fā)自己的應(yīng)用,簡(jiǎn)化了應(yīng)用程序開(kāi)發(fā)的架
6、構(gòu)設(shè)計(jì)。應(yīng)用層程序是用Java語(yǔ)言編寫(xiě)的運(yùn)行在虛擬機(jī)上的程序?! 榇_保視頻的高質(zhì)量傳輸,以及方便針對(duì)嵌入式平臺(tái)運(yùn)行的調(diào)整和優(yōu)化,在選擇編碼的時(shí)候選擇開(kāi)源項(xiàng)目FFmpeg。FFmpeg是一個(gè)開(kāi)源跨平臺(tái)多媒體數(shù)據(jù)解決方案,它包含非常先進(jìn)的視頻編解碼庫(kù)Libavcodec,支持超過(guò)90種編解碼標(biāo)準(zhǔn)及RTSP,HTTP,MMS等多種網(wǎng)絡(luò)傳輸協(xié)議。FFmpeg通過(guò)C語(yǔ)言實(shí)現(xiàn),常被移植到各種嵌入式系統(tǒng)中[1]。將FFmpeg移植到Android系統(tǒng)中,能夠增加Android系統(tǒng)對(duì)編解碼格式標(biāo)準(zhǔn)的支持,提高Android系統(tǒng)對(duì)多媒體信息
7、處理能力,改善用戶(hù)體驗(yàn)?! ?.2 視頻傳輸協(xié)議RTP/RTCP 視頻傳輸?shù)暮诵氖且曨l流(Streaming Video)的傳輸,視頻流通常是指一系列連續(xù)的、帶有時(shí)間戳的視頻包數(shù)據(jù)。視頻流技術(shù)則是研究視頻數(shù)據(jù)有效傳輸?shù)募夹g(shù),主要包括視頻數(shù)據(jù)的壓縮及視頻流的實(shí)時(shí)傳輸,以保證用戶(hù)能夠獲得良好的視頻質(zhì)量。多媒體流的實(shí)時(shí)傳輸對(duì)帶寬和延遲比較敏感,因此視頻流的傳輸需要選擇合適的傳輸協(xié)議。10 實(shí)時(shí)傳輸協(xié)議(Realtime Transport Protoco1,RTP)報(bào)文用來(lái)作實(shí)時(shí)傳輸時(shí),可以靈活改變速率、防止亂序。但是,僅僅使
8、用RTP時(shí)間戳是無(wú)法實(shí)現(xiàn)視頻的自適應(yīng)傳輸。要實(shí)現(xiàn)視頻自適應(yīng)傳輸,需要借助于RTP控制協(xié)議(Realtime Transport Control Protocol,RTCP)[2]。在流式傳輸?shù)膶?shí)現(xiàn)方案中,采用TCP/RTCP來(lái)傳輸控制信息,用RTP/UDP來(lái)傳輸視頻流數(shù)據(jù)。RTCP報(bào)文在傳