【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )
文章目錄
- I 高性能音頻使用場景
- II 高性能音頻開發庫
- III 相關開發資料
I 高性能音頻使用場景
Android 手機的音頻問題 :
- 1. 普通音頻功能 :
- ① 常用音頻開發方式 : 當前使用 android 手機的音頻庫時 , 調用 MediaPlayer , AudioTrack 等 Java 庫播放音頻 , 音頻流 ;
- ② 音頻延遲 : 其延遲基本在秒級 , 也就是我們點擊播放按鈕后 , 要等帶 0.2 ~ 0.5 秒 , 才有聲音從音頻播放設備發出聲音 ;
- ③ 延遲可接受情景 : 如果是播放音頻 文件 或者對實時性要求不高的流文件 , 這個延遲是可以接受的 ;
- 2. 高性能音頻功能 :
- ① 使用場景 : 但是如果用于一些對延遲要求較高的場景 , 如 對講機 , 聲音合成器 , 電子樂器開發 , 視頻音頻會議 ;
- ② 性能要求 : 這些要求在指定操作后 ( 如觸摸觸發操作 ) , 在 50ms , 甚至 10ms 以內必須能聽到聲音發出 , 這里就需要使用高性能音頻技術了 ;
iOS 的音頻系統優化的很好 , 其延遲基本在 10ms 左右 , 而且調用普通 API 就可以實現 ;
Android 目前也開始發力推出了一系列的高性能音頻庫 , 如最初的 OpenSL ES , 8.0 之后推出的 AAudio , 目前最新的 Oboe 兼容前兩者 ;
開發層級 : 使用 Java 層的 API 是無法實現高性能音頻的 , 必須使用 NDK 開發庫才可以 , 上述講的 OpenSL ES , AAudio , Oboe 都是 C/C++ 庫 ;
II 高性能音頻開發庫
1. OpenSL ES : 該開發庫符合 OpenSL ES? API 規范 , 在 8.0 以下的系統中使用 , 使用 C/C++ 開發 ;
2. AAudio : 是輕量級的高性能音頻庫 , 僅能在 8.0 以上的系統中使用 , 該開發庫 API 比較小 , 方便開發使用 ;
3. Oboe : 對上面兩個 高性能音頻開發庫進行了封裝 , 在 8.0 以上的系統中自動調用 AAudio 開發庫 , 在 8.0 以下系統中調用 OpenSL ES 開發庫 ;
III 相關開發資料
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 官方示例 : 下面兩個示例在 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 開發庫的示例 ;
總結
以上是生活随笔為你收集整理的【Android 高性能音频】高性能音频简介 ( 高性能音频问题引入 | 使用场景 | 相关开发库及技术 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Visual Studio 2019】
- 下一篇: 【Android NDK 开发】在 C