Oboe,安卓上的低延遲音頻應用開發庫

谷歌已經發佈了第一個生產就緒的Oboe版本。Oboe是一個C++庫,它用來構建在99%的安卓設備上都有着最低可能延遲的高性能音頻應用。

需要構建音樂類遊戲,音頻應用等的開發者通常不得不處理延遲問題。Oboe的目標是通過提供一個簡單的與安卓API 16+(Jelly Bean)版本兼容的API來解決這些延遲問題。在底層,Oboe利用了API 27+(Oreo MR1)裏AAudio的性能和特性,在API 16+上使用了OpenSL ES

AAudio是一個安卓上的C語言API,它被設計用來開發要求低延遲的高性能音頻應用。在安卓版本O中引入了它。應用通過讀寫流與AAudio交互。

安卓上的OpenSL ES是Khronos Group的OpenSL ES API規範的一種特定實現。類似AAudio,這個庫也被設計用來開發要求低延遲的高性能音頻應用。另外,OpenSL ES還暴露了一些與MediaPlayerMediaRecorder API中音頻特性類似的特性。

使用Oboe需要安卓NDK版本r17或以上。它可以通過Android Studio SDK管理器安裝,或者直接安裝

安裝安卓NDK版本r17或以上以後,克隆GitHub倉庫,添加如下命令到CMakeLists.txt文件的末尾(如果你沒有這個文件,那麼應該爲項目添加C++支持)。

cmake_minimum_required(VERSION 3.4.1)

# 構建我們的本地庫
add_library (native-lib SHARED src/main/cpp/native-lib.cpp )

# 指定我們的本地庫依賴的庫,包含Oboe
target_link_libraries (native-lib log oboe)

# 構建Oboe庫
set (OBOE_DIR ../../../oboe)  
add_subdirectory (${OBOE_DIR} ./oboe) 

# 讓Oboe公有頭文件對我們的應用可見
include_directories (${OBOE_DIR}/include)

開發者可以用Oboe的以下幾行代碼創建一個音頻流:

AudioStreamBuilder builder;
AudioStream *stream = nullptr;
Result result = builder.openStream(&stream);

可以在文檔API指南代碼樣例上找到更多細節。此外,你可以在codelab上使用Oboe開發一個簡單的音樂遊戲;這個遊戲的目標是通過點擊屏幕複製聽到的拍手模式。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章