先來(lái)點(diǎn)閑言碎語(yǔ),前段時(shí)間我有一段感悟:Android開(kāi)發(fā),本身并不是一個(gè)可以走得多遠(yuǎn)的方向,它只是一個(gè)平臺(tái),提供了許多封裝好的API,讓大家能夠快速開(kāi)發(fā)出針對(duì)特定業(yè)務(wù)的應(yīng)用。
創(chuàng)新互聯(lián)公司擁有10多年的建站服務(wù)經(jīng)驗(yàn),在此期間,我們發(fā)現(xiàn)較多的客戶在挑選建站服務(wù)商前都非常的猶豫。主要問(wèn)題集中:在無(wú)法預(yù)知自己的網(wǎng)站呈現(xiàn)的效果是什么樣的?也無(wú)法判斷選擇的服務(wù)商設(shè)計(jì)出來(lái)的網(wǎng)頁(yè)效果自己是否會(huì)滿意?創(chuàng)新互聯(lián)公司業(yè)務(wù)涵蓋了互聯(lián)網(wǎng)平臺(tái)網(wǎng)站建設(shè)、移動(dòng)平臺(tái)網(wǎng)站制作、網(wǎng)絡(luò)推廣、按需網(wǎng)站建設(shè)等服務(wù)。創(chuàng)新互聯(lián)公司網(wǎng)站開(kāi)發(fā)公司本著不拘一格的網(wǎng)站視覺(jué)設(shè)計(jì)和網(wǎng)站開(kāi)發(fā)技術(shù)相結(jié)合,為企業(yè)做網(wǎng)站提供成熟的網(wǎng)站設(shè)計(jì)方案。真正有價(jià)值的地方就在于Android與具體的業(yè)務(wù)方向結(jié)合,比如:Android與音視頻技術(shù),Android與智能硬件交互,Android與前端技術(shù)的融合與探索,Android信息安全,Android源碼深度定制等等。
我一直比較看好音視頻/多媒體方向,希望在此能夠深入積累和探索,前段時(shí)間我發(fā)布了一款A(yù)ndroid VoIP網(wǎng)絡(luò)電話應(yīng)用“飛鴿電話”,并寫了一篇分析其整體架構(gòu)的文章《PigeonCall:一款A(yù)ndroid VoIP網(wǎng)絡(luò)電話App架構(gòu)分析》,歡迎有興趣的小伙伴們先看一看。
在這個(gè)應(yīng)用的開(kāi)發(fā)過(guò)程中學(xué)到的東西還蠻多的,因此想寫一些文章分享分享,本文作為開(kāi)篇,主要以問(wèn)答的形式,介紹一些音頻開(kāi)發(fā)的基礎(chǔ)常識(shí),非常重要,因?yàn)椴涣私膺@些常識(shí),很多Android API或者第三方庫(kù)的參數(shù),你都不知道該怎么配置。
1. 音頻開(kāi)發(fā)的主要應(yīng)用有哪些?
音頻播放器,錄音機(jī),語(yǔ)音電話,音視頻監(jiān)控應(yīng)用,音視頻直播應(yīng)用,音頻編輯/處理軟件,藍(lán)牙耳機(jī)/音箱,等等。
2. 音頻開(kāi)發(fā)的具體內(nèi)容有哪些?
(1)音頻采集/播放
(2)音頻算法處理(去噪、靜音檢測(cè)、回聲消除、音效處理、功放/增強(qiáng)、混音/分離,等等)
(3)音頻的編解碼和格式轉(zhuǎn)換
(4)音頻傳輸協(xié)議的開(kāi)發(fā)(SIP,A2DP、AVRCP,等等)
3. 音頻應(yīng)用的難點(diǎn)在哪?
延時(shí)敏感、卡頓敏感、噪聲抑制(Denoise)、回聲消除(AEC)、靜音檢測(cè)(VAD)、混音算法,等等。
4. 音頻開(kāi)發(fā)基礎(chǔ)概念有哪些?
在音頻開(kāi)發(fā)中,下面的這幾個(gè)概念經(jīng)常會(huì)遇到。
(1) 采樣率(samplerate)
采樣就是把模擬信號(hào)數(shù)字化的過(guò)程,不僅僅是音頻需要采樣,所有的模擬信號(hào)都需要通過(guò)采樣轉(zhuǎn)換為可以用0101來(lái)表示的數(shù)字信號(hào),示意圖如下所示:
藍(lán)色代表模擬音頻信號(hào),紅色的點(diǎn)代表采樣得到的量化數(shù)值。
采樣頻率越高,紅色的間隔就越密集,記錄這一段音頻信號(hào)所用的數(shù)據(jù)量就越大,同時(shí)音頻質(zhì)量也就越高。
根據(jù)奈奎斯特理論,采樣頻率只要不低于音頻信號(hào)最高頻率的兩倍,就可以無(wú)損失地還原原始的聲音。
通常人耳能聽(tīng)到頻率范圍大約在20Hz~20kHz之間的聲音,為了保證聲音不失真,采樣頻率應(yīng)在40kHz以上。常用的音頻采樣頻率有:8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz、96kHz、192kHz等。
(2) 量化精度(位寬)
上圖中,每一個(gè)紅色的采樣點(diǎn),都需要用一個(gè)數(shù)值來(lái)表示大小,這個(gè)數(shù)值的數(shù)據(jù)類型大小可以是:4bit、8bit、16bit、32bit等等,位數(shù)越多,表示得就越精細(xì),聲音質(zhì)量自然就越好,當(dāng)然,數(shù)據(jù)量也會(huì)成倍增大。
常見(jiàn)的位寬是:8bit 或者 16bit
(3) 聲道數(shù)(channels)
由于音頻的采集和播放是可以疊加的,因此,可以同時(shí)從多個(gè)音頻源采集聲音,并分別輸出到不同的揚(yáng)聲器,故聲道數(shù)一般表示聲音錄制時(shí)的音源數(shù)量或回放時(shí)相應(yīng)的揚(yáng)聲器數(shù)量。
單聲道(Mono)和雙聲道(Stereo)比較常見(jiàn),顧名思義,前者的聲道數(shù)為1,后者為2
(4) 音頻幀(frame)
這個(gè)概念在應(yīng)用開(kāi)發(fā)中非常重要,網(wǎng)上很多文章都沒(méi)有專門介紹這個(gè)概念。
音頻跟視頻很不一樣,視頻每一幀就是一張圖像,而從上面的正玄波可以看出,音頻數(shù)據(jù)是流式的,本身沒(méi)有明確的一幀幀的概念,在實(shí)際的應(yīng)用中,為了音頻算法處理/傳輸?shù)姆奖?,一般約定俗成取2.5ms~60ms為單位的數(shù)據(jù)量為一幀音頻。
這個(gè)時(shí)間被稱之為“采樣時(shí)間”,其長(zhǎng)度沒(méi)有特別的標(biāo)準(zhǔn),它是根據(jù)編×××和具體應(yīng)用的需求來(lái)決定的,我們可以計(jì)算一下一幀音頻幀的大?。?/p>
假設(shè)某通道的音頻信號(hào)是采樣率為8kHz,位寬為16bit,20ms一幀,雙通道,則一幀音頻數(shù)據(jù)的大小為:
int size = 8000 x 16bit x 0.02s x 2 = 5120 bit = 640 byte
5. 常見(jiàn)的音頻編碼方式有哪些?
上面提到過(guò),模擬的音頻信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)需要經(jīng)過(guò)采樣和量化,量化的過(guò)程被稱之為編碼,根據(jù)不同的量化策略,產(chǎn)生了許多不同的編碼方式,常見(jiàn)的編碼方式有:PCM 和 ADPCM,這些數(shù)據(jù)代表著無(wú)損的原始數(shù)字音頻信號(hào),添加一些文件頭信息,就可以存儲(chǔ)為WAV文件了,它是一種由微軟和IBM聯(lián)合開(kāi)發(fā)的用于音頻數(shù)字存儲(chǔ)的標(biāo)準(zhǔn),可以很容易地被解析和播放。
我們?cè)谝纛l開(kāi)發(fā)過(guò)程中,會(huì)經(jīng)常涉及到WAV文件的讀寫,以驗(yàn)證采集、傳輸、接收的音頻數(shù)據(jù)的正確性。
6. 常見(jiàn)的音頻壓縮格式有哪些?
首先簡(jiǎn)單介紹一下音頻數(shù)據(jù)壓縮的最基本的原理:因?yàn)橛腥哂嘈畔?,所以可以壓縮。
(1) 頻譜掩蔽效應(yīng): 人耳所能察覺(jué)的聲音信號(hào)的頻率范圍為20Hz~20KHz,在這個(gè)頻率范圍以外的音頻信號(hào)屬于冗余信號(hào)。
(2) 時(shí)域掩蔽效應(yīng): 當(dāng)強(qiáng)音信號(hào)和弱音信號(hào)同時(shí)出現(xiàn)時(shí),弱信號(hào)會(huì)聽(tīng)不到,因此,弱音信號(hào)也屬于冗余信號(hào)。
下面簡(jiǎn)單列出常見(jiàn)的音頻壓縮格式:
MP3,AAC,OGG,WMA,Opus,F(xiàn)LAC,APE,m4a,AMR,等等
7. Adndroid VoIP相關(guān)的開(kāi)源應(yīng)用有哪些 ?
imsdroid,sipdroid,csipsimple,linphone,WebRTC 等等
8. 音頻算法處理的開(kāi)源庫(kù)有哪些 ?
speex、ffmpeg,webrtc audio module(NS、VAD、AECM、AGC),等等
10. Android提供了哪些音頻開(kāi)發(fā)相關(guān)的API?
音頻采集: MediaRecoder,AudioRecord
音頻播放: SoundPool,MediaPlayer,AudioTrack (它們之間的區(qū)別可以參考這篇文章)
音頻編解碼: MediaCodec
NDK API: OpenSL ES
11. 音頻開(kāi)發(fā)的延時(shí)標(biāo)準(zhǔn)是什么?
ITU-TG.114規(guī)定,對(duì)于高質(zhì)量語(yǔ)音可接受的時(shí)延是300ms。一般來(lái)說(shuō),如果時(shí)延在300~400ms,通話的交互性比較差,但還可以接受。時(shí)延大于400ms時(shí),則交互通信非常困難。
12. 小結(jié)
音頻開(kāi)發(fā)的知識(shí)點(diǎn)其實(shí)挺多的,一篇文章也無(wú)法詳細(xì)地展開(kāi)敘述,因此,不夠全面和詳盡的地方,請(qǐng)大家搜索專業(yè)的資料進(jìn)行深入了解。文章中有不清楚的地方歡迎留言或者來(lái)信 lujun.hust@gmail.com 交流,或者關(guān)注我的新浪微博 @盧_俊 或者 微信公眾號(hào) @Jhuster 獲取最新的文章和資訊。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)名稱:Android音頻開(kāi)發(fā)(1):基礎(chǔ)知識(shí)-創(chuàng)新互聯(lián)
網(wǎng)站URL:http://www.rwnh.cn/article0/ehsio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開(kāi)發(fā)、網(wǎng)站維護(hù)、關(guān)鍵詞優(yōu)化、Google、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容