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也可以烏雞變鳳凰。