【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )
文章目錄
- I 高性能音頻使用場景
- II 高性能音頻開發(fā)庫
- III 相關(guān)開發(fā)資料
I 高性能音頻使用場景
Android 手機(jī)的音頻問題 :
- 1. 普通音頻功能 :
- ① 常用音頻開發(fā)方式 : 當(dāng)前使用 android 手機(jī)的音頻庫時(shí) , 調(diào)用 MediaPlayer , AudioTrack 等 Java 庫播放音頻 , 音頻流 ;
- ② 音頻延遲 : 其延遲基本在秒級 , 也就是我們點(diǎn)擊播放按鈕后 , 要等帶 0.2 ~ 0.5 秒 , 才有聲音從音頻播放設(shè)備發(fā)出聲音 ;
- ③ 延遲可接受情景 : 如果是播放音頻 文件 或者對實(shí)時(shí)性要求不高的流文件 , 這個(gè)延遲是可以接受的 ;
- 2. 高性能音頻功能 :
- ① 使用場景 : 但是如果用于一些對延遲要求較高的場景 , 如 對講機(jī) , 聲音合成器 , 電子樂器開發(fā) , 視頻音頻會議 ;
- ② 性能要求 : 這些要求在指定操作后 ( 如觸摸觸發(fā)操作 ) , 在 50ms , 甚至 10ms 以內(nèi)必須能聽到聲音發(fā)出 , 這里就需要使用高性能音頻技術(shù)了 ;
iOS 的音頻系統(tǒng)優(yōu)化的很好 , 其延遲基本在 10ms 左右 , 而且調(diào)用普通 API 就可以實(shí)現(xiàn) ;
Android 目前也開始發(fā)力推出了一系列的高性能音頻庫 , 如最初的 OpenSL ES , 8.0 之后推出的 AAudio , 目前最新的 Oboe 兼容前兩者 ;
開發(fā)層級 : 使用 Java 層的 API 是無法實(shí)現(xiàn)高性能音頻的 , 必須使用 NDK 開發(fā)庫才可以 , 上述講的 OpenSL ES , AAudio , Oboe 都是 C/C++ 庫 ;
II 高性能音頻開發(fā)庫
1. OpenSL ES : 該開發(fā)庫符合 OpenSL ES? API 規(guī)范 , 在 8.0 以下的系統(tǒng)中使用 , 使用 C/C++ 開發(fā) ;
2. AAudio : 是輕量級的高性能音頻庫 , 僅能在 8.0 以上的系統(tǒng)中使用 , 該開發(fā)庫 API 比較小 , 方便開發(fā)使用 ;
3. Oboe : 對上面兩個(gè) 高性能音頻開發(fā)庫進(jìn)行了封裝 , 在 8.0 以上的系統(tǒng)中自動調(diào)用 AAudio 開發(fā)庫 , 在 8.0 以下系統(tǒng)中調(diào)用 OpenSL ES 開發(fā)庫 ;
III 相關(guān)開發(fā)資料
Android NDK 高性能音頻官方文檔 : https://developer.android.google.cn/ndk/guides/audio
OpenSL ES 文檔 : https://www.khronos.org/registry/OpenSL-ES/specs/OpenSL_ES_Specification_1.1.pdf
示例代碼 :
- ① OpenSL ES 官方示例 : 下面兩個(gè)示例在 NDK 示例中 ;
- audio-echo : https://github.com/android/ndk-samples/tree/master/audio-echo
- native-audio : https://github.com/android/ndk-samples/tree/master/native-audio
- ② AAudio 官方示例 : https://github.com/googlearchive/android-audio-high-performance
- ③ Oboe 官方示例 : https://github.com/google/oboe
博客的下載鏈接中有 Google 提供的 全套的 高性能音頻示例 , 包括 OpenSL ES , AAudio , Oboe 開發(fā)庫的示例 ;
總結(jié)
以上是生活随笔為你收集整理的【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Visual Studio 2019】
- 下一篇: 【Android NDK 开发】在 C