聊聊Android的音頻架構(gòu)

Android系統(tǒng)迅速崛起琼腔,超越iOS和Symbian成為第一大智能設(shè)備操作系統(tǒng),它的占有率還有迅速擴(kuò)張的趨勢(shì)降狠,將有大量的多媒體設(shè)備采用這個(gè)系統(tǒng)劫流,那么Android是否適合作為影音設(shè)備的操作系統(tǒng)使用呢?我們今天就來了解一下Android的音頻架構(gòu)钦无。


Google Android

Android 基于Linux膳音,我們先來了解一下Linux的特點(diǎn)。Linux使用ALSA作為其音頻架構(gòu)铃诬,其全稱Advanced Linux Sound Architecture,即高級(jí)Linux聲音架構(gòu)的意思苍凛,在2.6核心之后趣席,ALSA成為了Linux系統(tǒng)默認(rèn)的音頻子架構(gòu)。取代了之前的OSS[Open Sound System醇蝴,開放式聲音系統(tǒng)]宣肚。


Linux ALSA音頻架構(gòu)示意

ALSA并不太好理解,它首先是一個(gè)驅(qū)動(dòng)庫悠栓,包含了大量的聲卡設(shè)備的開源驅(qū)動(dòng)霉涨,并提供了核心層API與ALSA庫通信按价,而ALSA庫則是應(yīng)用程序訪問和操控音頻硬件的中間層,這個(gè)中間層有標(biāo)準(zhǔn)接口笙瑟,開發(fā)者可以無須考慮硬件差異性進(jìn)行開發(fā)楼镐,它對(duì)提升開發(fā)效率是大有幫助的。ALSA可以向下兼容OSS往枷,因?yàn)镺SS已經(jīng)被淘汰框产,其兼容的工作模式不再討論。


Android 系統(tǒng)下的ALSA庫文件

這個(gè)體系被繼承到了Android當(dāng)中错洁。在Android2.2[含2,2]之前秉宿,系統(tǒng)文件夾中能找到一個(gè)LibAudioALSA.so的文件,這就是ALSA庫文件屯碴,其他應(yīng)用程序調(diào)用它描睦,與聲卡設(shè)備進(jìn)行指令和數(shù)據(jù)通信。Android音頻架構(gòu)與Linux的并無本質(zhì)區(qū)別导而。
在桌面版本的Linux當(dāng)中忱叭,為了兼容各類聲卡,Linux也設(shè)置了一個(gè)SRC[Sample Rate Converter嗡载,采樣頻率轉(zhuǎn)換]的環(huán)節(jié)窑多,當(dāng)當(dāng)前采樣率低于48kHz時(shí)強(qiáng)制SRC到48kHz輸出。這個(gè)SRC環(huán)節(jié)位于ALSA的插件模塊中的混音器部分洼滚。Android針對(duì)這個(gè)進(jìn)行了改進(jìn)埂息。
Android增加了一個(gè)AudioFinger,這個(gè)可以簡單的理解為Android的ALSA音頻子系統(tǒng)的標(biāo)準(zhǔn)化的插件模塊遥巴,它包含了AudioMixer[混音器]千康、AudioResampler[重采樣]等子模塊,AudioResampler即我們理解的SRC铲掐,Android換了一個(gè)新名稱而已拾弃。針對(duì)SRC,Android做了改進(jìn)摆霉,但改進(jìn)并不是以去除SRC為目的豪椿,而是修改了默認(rèn)的輸出頻率,Android的SRC目標(biāo)采樣率為44.1kHz携栋,非該值的采樣率都將SRC處理搭盾。例如播放48kHz采樣率的信號(hào),輸出的最終是44.1kHz婉支,這對(duì)音質(zhì)將產(chǎn)生負(fù)面影響鸯隅。這個(gè)可以通過測(cè)試證明。


Meizu 魅族 M9 智能手機(jī)-頻率掃描蝌以,錄音端增益20dB


Meizu 魅族 M9 智能手機(jī)-48kHz頻率掃描,錄音端增益20dB

對(duì)比這一組結(jié)果就能看出SRC對(duì)音質(zhì)的破壞性跟畅。這問題不只是魅族 M9存在咽筋。幾乎存在于所有的Android設(shè)備當(dāng)中。


Huawei 華為 U8800 智能手機(jī)-48kHz頻率掃描


Lenovo 聯(lián)想 樂Pad 平板電腦-48kHz頻率掃描


Malata 萬利達(dá) Zpad T8 平板電腦-48kHz頻率掃描


SmartQ 智器 T10 平板電腦-48kHz頻率掃描

ALSA是一個(gè)針對(duì)Linux 桌面版本設(shè)計(jì)的音頻架構(gòu)碍彭,它實(shí)際上是不適合智能終端設(shè)備的晤硕,起碼里面大量的開源驅(qū)動(dòng)代碼是可以去除的,對(duì)與Android來說庇忌,這些都是廢代碼舞箍。從Android2.3起,啟用了一個(gè)新的音頻架構(gòu)皆疹。它放棄了一直使用的ALSA架構(gòu)疏橄,因此系統(tǒng)文件夾中,也不再有LibAudioALSA.so這個(gè)文件略就。


Android2.3的系統(tǒng)文件夾下已經(jīng)沒有了ALSA庫文件


Android 2.3后的音頻架構(gòu)示意

Android2.3起捎迫,架構(gòu)已經(jīng)做了修改,在針對(duì)內(nèi)部代碼進(jìn)行了優(yōu)化表牢,去除了冗余代碼窄绒,理論上讓系統(tǒng)能變得更加高效,可以將新架構(gòu)理解為一個(gè)精簡的或者為智能終端設(shè)備定制的ALSA架構(gòu)崔兴。遺憾的是彰导,它同樣存在SRC嚴(yán)重劣化的問題,通過測(cè)試可以證明敲茄。


HTC HD2 @Android 2.3 智能手機(jī)-48kHz頻率掃描

測(cè)試可以發(fā)現(xiàn)位谋,Android 2.3的新架構(gòu)對(duì)音質(zhì)起不到正面作用。


ASUS 華碩 Eee Pad Transformer TF101 平板電腦-48kHz頻率掃描

Android 3.0專門為平板電腦設(shè)計(jì)堰燎,影音體驗(yàn)變得更加重要了掏父,是不是新系統(tǒng)在音質(zhì)方面會(huì)有新的的進(jìn)步呢,測(cè)試結(jié)果依然是令人失望的秆剪。
Android系統(tǒng)將采樣率同一為44.1kHz輸出赊淑,這造成了諸多限制,它將無法實(shí)現(xiàn)96kHz仅讽、192kHz高清音頻節(jié)目的良好回放膏燃,大量視頻節(jié)目源自DVD或者藍(lán)光碟,其采用率多為48kHz何什,Android設(shè)備在回放這些視頻節(jié)目時(shí),音質(zhì)也將大打折扣等龙。
理論上軟件SRC可以通過更換算法來實(shí)現(xiàn)音質(zhì)提升处渣,但卻不太現(xiàn)實(shí)伶贰,智能終端所采用的CPU多為ARM,ARM芯片的浮點(diǎn)運(yùn)算力有限罐栈,而SRC需要大量的浮點(diǎn)運(yùn)算的資源黍衙,即便有了高質(zhì)量的SRC算法,其運(yùn)算也是以犧牲設(shè)備性能和耗電量為代價(jià)的荠诬,實(shí)用性差琅翻。
從Android的音頻架構(gòu)及流程分析,可以認(rèn)為柑贞,播放44.1kHz采樣率的音樂節(jié)目時(shí)方椎,不會(huì)引發(fā)SRC,音質(zhì)因此可以獲得保證钧嘶,理論上確實(shí)如此棠众。但它同樣存在問題,不管是之前的ALSA架構(gòu)還是Android2.3之后改良的架構(gòu)有决,其驅(qū)動(dòng)庫都位于核心層闸拿,也就意味著音頻設(shè)備廠商、用戶無法象PC平臺(tái)那樣安裝驅(qū)動(dòng)來改善音質(zhì)书幕。實(shí)際測(cè)試也表明新荤,Android設(shè)備音質(zhì)普遍偏差,Soomal有大量測(cè)試可以證明台汇。
我們?cè)侔涯抗馔断騣OS苛骨,iOS非常封閉,我們甚至無法獲知其架構(gòu)的具體構(gòu)成励七,但iOS設(shè)備不存在硬件設(shè)備多樣性的問題智袭,因此要實(shí)現(xiàn)更好音質(zhì)也會(huì)更加簡單。iOS可以實(shí)現(xiàn)針對(duì)性的開發(fā)和改良掠抬,以實(shí)現(xiàn)更好的音質(zhì)吼野。實(shí)際情況也是如此,目前為止两波,還沒有一款A(yù)ndroid設(shè)備的音質(zhì)可以媲美任意一款iOS設(shè)備瞳步,這種差距,我們認(rèn)為不是來自硬件腰奋,而是操作系統(tǒng)单起。
Android音頻架構(gòu)的局限性也使得其難以成為優(yōu)質(zhì)的影音平臺(tái),如果你希望設(shè)計(jì)一款基于Android的高清影音播放器劣坊,那么首先需要做的不是設(shè)計(jì)硬件嘀倒,而是去修改現(xiàn)有架構(gòu)的不足,或者干脆設(shè)計(jì)一個(gè)專用的架構(gòu)來取代Android的通用架構(gòu)。從源代碼分析测蘑,Android和原生的Linux底層能支持各種采樣率灌危,開源也使得其具有改造基礎(chǔ),因此碳胳,在技術(shù)實(shí)力強(qiáng)勁的公司手里勇蝙,Android也可以烏雞變鳳凰。

轉(zhuǎn)自:http://www.soomal.com/doc/10100002092.htm

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末挨约,一起剝皮案震驚了整個(gè)濱河市味混,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诫惭,老刑警劉巖翁锡,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異贝攒,居然都是意外死亡盗誊,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門隘弊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哈踱,“玉大人,你說我怎么就攤上這事梨熙】停” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵咽扇,是天一觀的道長邪财。 經(jīng)常有香客問我,道長质欲,這世上最難降的妖魔是什么树埠? 我笑而不...
    開封第一講書人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮嘶伟,結(jié)果婚禮上怎憋,老公的妹妹穿的比我還像新娘。我一直安慰自己九昧,他們只是感情好绊袋,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著铸鹰,像睡著了一般癌别。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹋笼,一...
    開封第一講書人閱讀 51,190評(píng)論 1 299
  • 那天展姐,我揣著相機(jī)與錄音躁垛,去河邊找鬼。 笑死诞仓,一個(gè)胖子當(dāng)著我的面吹牛缤苫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播墅拭,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼涣狗!你這毒婦竟也來了谍婉?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤镀钓,失蹤者是張志新(化名)和其女友劉穎穗熬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體丁溅,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡唤蔗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了窟赏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妓柜。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖涯穷,靈堂內(nèi)的尸體忽然破棺而出棍掐,到底是詐尸還是另有隱情,我是刑警寧澤拷况,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布作煌,位于F島的核電站,受9級(jí)特大地震影響赚瘦,放射性物質(zhì)發(fā)生泄漏粟誓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一起意、第九天 我趴在偏房一處隱蔽的房頂上張望鹰服。 院中可真熱鬧,春花似錦杜恰、人聲如沸获诈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽舔涎。三九已至,卻和暖如春逗爹,著一層夾襖步出監(jiān)牢的瞬間亡嫌,已是汗流浹背嚎于。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挟冠,地道東北人于购。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像知染,于是被迫代替她去往敵國和親肋僧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,078評(píng)論 25 707
  • 提醒一下控淡,純個(gè)人筆記嫌吠,你完全可能看暈 一、音頻數(shù)字化基礎(chǔ)知識(shí) 見書掺炭,列出知識(shí)點(diǎn)如下: 聲音聲波辫诅,聲音頻率、響度涧狮, ...
    YY17閱讀 31,267評(píng)論 6 48
  • 一.聲音參數(shù)基本概念: 聲音是連續(xù)模擬量炕矮,計(jì)算機(jī)將它離散化之后用數(shù)字表示,就有了以下幾個(gè)名詞術(shù)語者冤。 樣本長度(sa...
    cs1001閱讀 5,397評(píng)論 0 3
  • 摘要 該配置文件定義了支持高質(zhì)量音頻分發(fā)所需的Bluetooth?設(shè)備的要求肤视。這些要求以終端用戶服務(wù)的方式表達(dá),并...
    公子小水閱讀 9,669評(píng)論 0 4
  • 有時(shí)候自己是否太過于操心了,太過于執(zhí)著了拜银,總想著要求他們這樣殊鞭,那樣,但不知道自己是否做對(duì)了尼桶? 也不知道自己是否過了...
    希雅的花園閱讀 307評(píng)論 0 0